tst now runs on Linux, OpenBSD and FreeBSD. - st - [fork] customized build of s… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 6db6980e27bdde6f2d444dd3cdd7a46985fa84fc | |
parent c56332857145d1c6741d4f6c1bbc87dcc6c6ab97 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Sat, 28 Aug 2010 03:18:22 +0200 | |
st now runs on Linux, OpenBSD and FreeBSD. | |
Diffstat: | |
M Makefile | 5 +++-- | |
M config.mk | 13 +++++++------ | |
M st.c | 27 ++++++++++++++------------- | |
3 files changed, 24 insertions(+), 21 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
t@@ -10,6 +10,7 @@ all: options st | |
options: | |
@echo st build options: | |
+ @echo "SYSTEM = ${SYSTEM}" | |
@echo "CFLAGS = ${CFLAGS}" | |
@echo "LDFLAGS = ${LDFLAGS}" | |
@echo "CC = ${CC}" | |
t@@ -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-${… | |
@tar -cf st-${VERSION}.tar st-${VERSION} | |
@gzip st-${VERSION}.tar | |
@rm -rf st-${VERSION} | |
t@@ -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 | |
diff --git a/config.mk b/config.mk | |
t@@ -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 | |
diff --git a/st.c b/st.c | |
t@@ -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 | |
t@@ -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"); |