Remove strsep() call - 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 288f80cb06b442ef0f55ea62bbceb3260338bf7a
 (DIR) parent c9357a8edfe6d047da95b85c5f3c18b9db40d172
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Fri, 20 Mar 2015 06:46:59 +0000
       
       Remove strsep() call
       
       strsep() is not a POSIX function, and it means that every system
       needs different defines to expose it. If the prototype of strsep
       is not exposed then an ugly int/pointer is done and it might mean
       a crash. The best solution?, to remove the strsep and make a custom
       loop. If C programmers cannot do this kind of loops without calling
       a library function, then maybe we should move all the suckless
       software to Java.
       
       Diffstat:
         M config.mk                           |       2 +-
         M st.c                                |      15 +++++++++++++--
       
       2 files changed, 14 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/config.mk b/config.mk
       @@ -19,7 +19,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXext -lXft \
               `pkg-config --libs freetype2`
        
        # flags
       -CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600
       +CPPFLAGS = -DVERSION=\"${VERSION}\" -D_XOPEN_SOURCE=600
        CFLAGS += -g -std=c99 -pedantic -Wall -Wvariadic-macros -Os ${INCS} ${CPPFLAGS}
        LDFLAGS += -g ${LIBS}
        
 (DIR) diff --git a/st.c b/st.c
       @@ -2272,12 +2272,23 @@ strhandle(void) {
        
        void
        strparse(void) {
       +        int c;
                char *p = strescseq.buf;
        
                strescseq.narg = 0;
                strescseq.buf[strescseq.len] = '\0';
       -        while(p && strescseq.narg < STR_ARG_SIZ)
       -                strescseq.args[strescseq.narg++] = strsep(&p, ";");
       +
       +        if(*p == '\0')
       +                return;
       +
       +        while(strescseq.narg < STR_ARG_SIZ) {
       +                strescseq.args[strescseq.narg++] = p;
       +                while((c = *p) != ';' && c != '\0')
       +                        ++p;
       +                if(c == '\0')
       +                        return;
       +                *p++ = '\0';
       +        }
        }
        
        void