~petersanchez/st

6db6980e27bdde6f2d444dd3cdd7a46985fa84fc — Aurélien Aptel 13 years ago c563328
st now runs on Linux, OpenBSD and FreeBSD.
3 files changed, 24 insertions(+), 21 deletions(-)

M Makefile
M config.mk
M st.c
M Makefile => Makefile +3 -2
@@ 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

M config.mk => config.mk +7 -6
@@ 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

M st.c => st.c +14 -13
@@ 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");