diff options
| author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-08-28 03:18:22 +0200 | 
|---|---|---|
| committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-08-28 03:18:22 +0200 | 
| commit | 6db6980e27bdde6f2d444dd3cdd7a46985fa84fc (patch) | |
| tree | 4e471277f68582713a23e5b0cd2fc57959fac89a | |
| parent | c56332857145d1c6741d4f6c1bbc87dcc6c6ab97 (diff) | |
st now runs on Linux, OpenBSD and FreeBSD.
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | config.mk | 13 | ||||
| -rw-r--r-- | st.c | 27 | 
3 files changed, 24 insertions, 21 deletions
| @@ -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 @@ -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 @@ -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"); | 
