diff options
Diffstat (limited to 'sys/src/cmd/unix/drawterm/libc/tokenize.c')
-rw-r--r-- | sys/src/cmd/unix/drawterm/libc/tokenize.c | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/sys/src/cmd/unix/drawterm/libc/tokenize.c b/sys/src/cmd/unix/drawterm/libc/tokenize.c deleted file mode 100644 index de234d440..000000000 --- a/sys/src/cmd/unix/drawterm/libc/tokenize.c +++ /dev/null @@ -1,107 +0,0 @@ -#include <u.h> -#include <libc.h> - -static char qsep[] = " \t\r\n"; - -static char* -qtoken(char *s, char *sep) -{ - int quoting; - char *t; - - quoting = 0; - t = s; /* s is output string, t is input string */ - while(*t!='\0' && (quoting || utfrune(sep, *t)==nil)){ - if(*t != '\''){ - *s++ = *t++; - continue; - } - /* *t is a quote */ - if(!quoting){ - quoting = 1; - t++; - continue; - } - /* quoting and we're on a quote */ - if(t[1] != '\''){ - /* end of quoted section; absorb closing quote */ - t++; - quoting = 0; - continue; - } - /* doubled quote; fold one quote into two */ - t++; - *s++ = *t++; - } - if(*s != '\0'){ - *s = '\0'; - if(t == s) - t++; - } - return t; -} - -static char* -etoken(char *t, char *sep) -{ - int quoting; - - /* move to end of next token */ - quoting = 0; - while(*t!='\0' && (quoting || utfrune(sep, *t)==nil)){ - if(*t != '\''){ - t++; - continue; - } - /* *t is a quote */ - if(!quoting){ - quoting = 1; - t++; - continue; - } - /* quoting and we're on a quote */ - if(t[1] != '\''){ - /* end of quoted section; absorb closing quote */ - t++; - quoting = 0; - continue; - } - /* doubled quote; fold one quote into two */ - t += 2; - } - return t; -} - -int -gettokens(char *s, char **args, int maxargs, char *sep) -{ - int nargs; - - for(nargs=0; nargs<maxargs; nargs++){ - while(*s!='\0' && utfrune(sep, *s)!=nil) - *s++ = '\0'; - if(*s == '\0') - break; - args[nargs] = s; - s = etoken(s, sep); - } - - return nargs; -} - -int -tokenize(char *s, char **args, int maxargs) -{ - int nargs; - - for(nargs=0; nargs<maxargs; nargs++){ - while(*s!='\0' && utfrune(qsep, *s)!=nil) - s++; - if(*s == '\0') - break; - args[nargs] = s; - s = qtoken(s, qsep); - } - - return nargs; -} |