$(shell pkg-config --libs freetype2)
 
 # flags
-CPPFLAGS = -DVERSION=\"${VERSION}\"
+CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE -D_XOPEN_SOURCE=600
 CFLAGS += -g -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
 LDFLAGS += -g ${LIBS}
 
 
 /* See LICENSE for licence details. */
-#define _XOPEN_SOURCE 600
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
                p++;
        }
 
+       csiescseq.buf[csiescseq.len] = '\0';
        while(p < csiescseq.buf+csiescseq.len) {
                np = NULL;
                v = strtol(p, &np, 10);
 
 void
 strparse(void) {
-       char *p = strescseq.buf, *sp;
+       char *p = strescseq.buf;
 
+       strescseq.narg = 0;
        strescseq.buf[strescseq.len] = '\0';
-       for(p = strtok_r(p, ";", &sp); p; p = strtok_r(NULL, ";", &sp)) {
-               if(strescseq.narg == STR_ARG_SIZ)
-                       return;
-               strescseq.args[strescseq.narg++] = p;
-       }
+       while(p && strescseq.narg < STR_ARG_SIZ)
+               strescseq.args[strescseq.narg++] = strsep(&p, ";");
 }
 
 void
                if(term.esc & ESC_CSI) {
                        csiescseq.buf[csiescseq.len++] = ascii;
                        if(BETWEEN(ascii, 0x40, 0x7E)
-                                       || csiescseq.len >= ESC_BUF_SIZ) {
+                                       || csiescseq.len >= \
+                                       sizeof(csiescseq.buf)-1) {
                                term.esc = 0;
                                csiparse();
                                csihandle();