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: | ||||
| 	@echo st build options: | ||||
| 	@echo "SYSTEM   = ${SYSTEM}" | ||||
| 	@echo "CFLAGS   = ${CFLAGS}" | ||||
| 	@echo "LDFLAGS  = ${LDFLAGS}" | ||||
| 	@echo "CC       = ${CC}" | ||||
| @@ -31,7 +32,7 @@ clean: | ||||
| dist: clean | ||||
| 	@echo creating dist tarball | ||||
| 	@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} | ||||
| 	@gzip st-${VERSION}.tar | ||||
| 	@rm -rf st-${VERSION} | ||||
| @@ -41,7 +42,7 @@ install: all | ||||
| 	@mkdir -p ${DESTDIR}${PREFIX}/bin | ||||
| 	@cp -f st ${DESTDIR}${PREFIX}/bin | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/st | ||||
| 	@tic st.info | ||||
| 	@tic -s st.info | ||||
|  | ||||
| uninstall: | ||||
| 	@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 | ||||
| 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 | ||||
| CPPFLAGS = -DVERSION=\"${VERSION}\" | ||||
| CPPFLAGS = -DVERSION=\"${VERSION}\" ${SYSTEM} | ||||
| CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} | ||||
| LDFLAGS = -s ${LIBS} | ||||
|  | ||||
| # Solaris | ||||
| #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" | ||||
| #LDFLAGS = ${LIBS} | ||||
|  | ||||
| # compiler and linker | ||||
| CC = cc | ||||
|   | ||||
							
								
								
									
										25
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								st.c
									
									
									
									
									
								
							| @@ -20,6 +20,14 @@ | ||||
| #include <X11/keysym.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 */ | ||||
| #define ESC_TITLE_SIZ 256 | ||||
| #define ESC_BUF_SIZ   256 | ||||
| @@ -242,19 +250,12 @@ sigchld(int a) { | ||||
| void | ||||
| ttynew(void) { | ||||
| 	int m, s; | ||||
| 	char *pts; | ||||
| 	 | ||||
| 	if((m = posix_openpt(O_RDWR | O_NOCTTY)) < 0) | ||||
| 		die("openpt failed: %s\n", SERRNO); | ||||
| 	if(grantpt(m) < 0) | ||||
| 		die("grantpt 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); | ||||
| 	/* seems to work fine on linux, openbsd and freebsd */ | ||||
| 	struct winsize w = {term.row, term.col, 0, 0}; | ||||
| 	if(openpty(&m, &s, NULL, NULL, &w) < 0) | ||||
| 		die("openpty failed: %s\n", SERRNO); | ||||
|  | ||||
| 	switch(pid = fork()) { | ||||
| 	case -1: | ||||
| 		die("fork failed\n"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user