Pledge on OpenBSD - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 30ce2cc002585409b36c630512c6ca4db8f88f15
 (DIR) parent 041912a791e8c2f4d5d2415b16210d29d7e701c5
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Fri, 25 May 2018 11:59:28 +0200
       
       Pledge on OpenBSD
       
       Diffstat:
         M config.mk                           |       6 ++++++
         M st.c                                |       8 ++++++++
       
       2 files changed, 14 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/config.mk b/config.mk
       @@ -23,6 +23,12 @@ CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600
        STCFLAGS = $(INCS) $(CPPFLAGS) $(CFLAGS)
        STLDFLAGS = $(LIBS) $(LDFLAGS)
        
       +# OpenBSD:
       +#CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
       +#LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \
       +#       `pkg-config --libs fontconfig` \
       +#       `pkg-config --libs freetype2`
       +
        # compiler and linker
        # CC = c99
        
 (DIR) diff --git a/st.c b/st.c
       @@ -28,6 +28,10 @@
         #include <libutil.h>
        #endif
        
       +#ifndef __OpenBSD__
       +#define pledge(a,b) 0
       +#endif
       +
        /* Arbitrary sizes */
        #define UTF_INVALID   0xFFFD
        #define UTF_SIZ       4
       @@ -806,9 +810,13 @@ ttynew(char *line, char *cmd, char *out, char **args)
                                die("ioctl TIOCSCTTY failed: %s\n", strerror(errno));
                        close(s);
                        close(m);
       +                if (pledge("stdio getpw proc exec", NULL) == -1)
       +                        die("pledge\n");
                        execsh(cmd, args);
                        break;
                default:
       +                if (pledge("stdio rpath tty proc", NULL) == -1)
       +                        die("pledge\n");
                        close(s);
                        cmdfd = m;
                        signal(SIGCHLD, sigchld);