st now runs on Linux, OpenBSD and FreeBSD.
This commit is contained in:
		
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							| @@ -10,6 +10,7 @@ all: options st | |||||||
|  |  | ||||||
| options: | options: | ||||||
| 	@echo st build options: | 	@echo st build options: | ||||||
|  | 	@echo "SYSTEM   = ${SYSTEM}" | ||||||
| 	@echo "CFLAGS   = ${CFLAGS}" | 	@echo "CFLAGS   = ${CFLAGS}" | ||||||
| 	@echo "LDFLAGS  = ${LDFLAGS}" | 	@echo "LDFLAGS  = ${LDFLAGS}" | ||||||
| 	@echo "CC       = ${CC}" | 	@echo "CC       = ${CC}" | ||||||
| @@ -31,7 +32,7 @@ clean: | |||||||
| dist: clean | dist: clean | ||||||
| 	@echo creating dist tarball | 	@echo creating dist tarball | ||||||
| 	@mkdir -p st-${VERSION} | 	@mkdir -p st-${VERSION} | ||||||
| 	@cp -R LICENSE Makefile README config.mk st.h ${SRC} st-${VERSION} | 	@cp -R LICENSE Makefile README config.mk config.h st.info ${SRC} st-${VERSION} | ||||||
| 	@tar -cf st-${VERSION}.tar st-${VERSION} | 	@tar -cf st-${VERSION}.tar st-${VERSION} | ||||||
| 	@gzip st-${VERSION}.tar | 	@gzip st-${VERSION}.tar | ||||||
| 	@rm -rf st-${VERSION} | 	@rm -rf st-${VERSION} | ||||||
| @@ -41,7 +42,7 @@ install: all | |||||||
| 	@mkdir -p ${DESTDIR}${PREFIX}/bin | 	@mkdir -p ${DESTDIR}${PREFIX}/bin | ||||||
| 	@cp -f st ${DESTDIR}${PREFIX}/bin | 	@cp -f st ${DESTDIR}${PREFIX}/bin | ||||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/st | 	@chmod 755 ${DESTDIR}${PREFIX}/bin/st | ||||||
| 	@tic st.info | 	@tic -s st.info | ||||||
|  |  | ||||||
| uninstall: | uninstall: | ||||||
| 	@echo removing executable file from ${DESTDIR}${PREFIX}/bin | 	@echo removing executable file from ${DESTDIR}${PREFIX}/bin | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								config.mk
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								config.mk
									
									
									
									
									
								
							| @@ -12,16 +12,17 @@ X11LIB = /usr/X11R6/lib | |||||||
|  |  | ||||||
| # includes and libs | # includes and libs | ||||||
| INCS = -I. -I/usr/include -I${X11INC} | INCS = -I. -I/usr/include -I${X11INC} | ||||||
| LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 | LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil | ||||||
|  |  | ||||||
|  | # uncomment your system # | ||||||
|  | #SYSTEM = -DLINUX | ||||||
|  | #SYSTEM = -DOPENBSD | ||||||
|  | #SYSTEM = -DFREEBSD | ||||||
|  |  | ||||||
| # flags | # flags | ||||||
| CPPFLAGS = -DVERSION=\"${VERSION}\" | CPPFLAGS = -DVERSION=\"${VERSION}\" ${SYSTEM} | ||||||
| CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} | CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} | ||||||
| LDFLAGS = -s ${LIBS} | LDFLAGS = -s ${LIBS} | ||||||
|  |  | ||||||
| # Solaris |  | ||||||
| #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" |  | ||||||
| #LDFLAGS = ${LIBS} |  | ||||||
|  |  | ||||||
| # compiler and linker | # compiler and linker | ||||||
| CC = cc | CC = cc | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								st.c
									
									
									
									
									
								
							| @@ -20,6 +20,14 @@ | |||||||
| #include <X11/keysym.h> | #include <X11/keysym.h> | ||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
|  |  | ||||||
|  | #if   defined(LINUX) | ||||||
|  |  #include <pty.h> | ||||||
|  | #elif defined(OPENBSD) | ||||||
|  |  #include <util.h> | ||||||
|  | #elif defined(FREEBSD) | ||||||
|  |  #include <libutil.h> | ||||||
|  | #endif | ||||||
|  |  | ||||||
| /* Arbitrary sizes */ | /* Arbitrary sizes */ | ||||||
| #define ESC_TITLE_SIZ 256 | #define ESC_TITLE_SIZ 256 | ||||||
| #define ESC_BUF_SIZ   256 | #define ESC_BUF_SIZ   256 | ||||||
| @@ -242,19 +250,12 @@ sigchld(int a) { | |||||||
| void | void | ||||||
| ttynew(void) { | ttynew(void) { | ||||||
| 	int m, s; | 	int m, s; | ||||||
| 	char *pts; |  | ||||||
| 	 | 	 | ||||||
| 	if((m = posix_openpt(O_RDWR | O_NOCTTY)) < 0) | 	/* seems to work fine on linux, openbsd and freebsd */ | ||||||
| 		die("openpt failed: %s\n", SERRNO); | 	struct winsize w = {term.row, term.col, 0, 0}; | ||||||
| 	if(grantpt(m) < 0) | 	if(openpty(&m, &s, NULL, NULL, &w) < 0) | ||||||
| 		die("grantpt failed: %s\n", SERRNO); | 		die("openpty failed: %s\n", SERRNO); | ||||||
| 	if(unlockpt(m) < 0) |  | ||||||
| 		die("unlockpt failed: %s\n", SERRNO); |  | ||||||
| 	if(!(pts = ptsname(m))) |  | ||||||
| 		die("ptsname failed: %s\n", SERRNO); |  | ||||||
| 	if((s = open(pts, O_RDWR | O_NOCTTY)) < 0) |  | ||||||
| 		die("Couldn't open slave: %s\n", SERRNO); |  | ||||||
| 	fcntl(s, F_SETFL, O_NDELAY); |  | ||||||
| 	switch(pid = fork()) { | 	switch(pid = fork()) { | ||||||
| 	case -1: | 	case -1: | ||||||
| 		die("fork failed\n"); | 		die("fork failed\n"); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user