aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero <k0ga@shike2.com>2015-03-20 06:46:59 +0000
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2015-03-20 07:29:28 +0000
commit288f80cb06b442ef0f55ea62bbceb3260338bf7a (patch)
tree1f3c3a9193e6fcae98f8769a9a39d9cb96e54c94
parentc9357a8edfe6d047da95b85c5f3c18b9db40d172 (diff)
downloadst-288f80cb06b442ef0f55ea62bbceb3260338bf7a.tar.gz
st-288f80cb06b442ef0f55ea62bbceb3260338bf7a.zip
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.
-rw-r--r--config.mk2
-rw-r--r--st.c15
2 files changed, 14 insertions, 3 deletions
diff --git a/config.mk b/config.mk
index 7ae510e..3026d87 100644
--- a/config.mk
+++ b/config.mk
@@ -19,7 +19,7 @@ LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXext -lXft \
19 `pkg-config --libs freetype2` 19 `pkg-config --libs freetype2`
20 20
21# flags 21# flags
22CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 22CPPFLAGS = -DVERSION=\"${VERSION}\" -D_XOPEN_SOURCE=600
23CFLAGS += -g -std=c99 -pedantic -Wall -Wvariadic-macros -Os ${INCS} ${CPPFLAGS} 23CFLAGS += -g -std=c99 -pedantic -Wall -Wvariadic-macros -Os ${INCS} ${CPPFLAGS}
24LDFLAGS += -g ${LIBS} 24LDFLAGS += -g ${LIBS}
25 25
diff --git a/st.c b/st.c
index 68dc2be..39d3fee 100644
--- a/st.c
+++ b/st.c
@@ -2272,12 +2272,23 @@ strhandle(void) {
2272 2272
2273void 2273void
2274strparse(void) { 2274strparse(void) {
2275 int c;
2275 char *p = strescseq.buf; 2276 char *p = strescseq.buf;
2276 2277
2277 strescseq.narg = 0; 2278 strescseq.narg = 0;
2278 strescseq.buf[strescseq.len] = '\0'; 2279 strescseq.buf[strescseq.len] = '\0';
2279 while(p && strescseq.narg < STR_ARG_SIZ) 2280
2280 strescseq.args[strescseq.narg++] = strsep(&p, ";"); 2281 if(*p == '\0')
2282 return;
2283
2284 while(strescseq.narg < STR_ARG_SIZ) {
2285 strescseq.args[strescseq.narg++] = p;
2286 while((c = *p) != ';' && c != '\0')
2287 ++p;
2288 if(c == '\0')
2289 return;
2290 *p++ = '\0';
2291 }
2281} 2292}
2282 2293
2283void 2294void