st now runs on Linux, OpenBSD and FreeBSD.
parent
c563328571
commit
6db6980e27
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;
|
|
||||||
|
/* 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);
|
||||||
|
|
||||||
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);
|
|
||||||
switch(pid = fork()) {
|
switch(pid = fork()) {
|
||||||
case -1:
|
case -1:
|
||||||
die("fork failed\n");
|
die("fork failed\n");
|
||||||
|
|
Reference in New Issue