1 #include "libcflat.h" 2 3 int __argc; 4 char *__argv[100]; 5 char *__args; 6 char __args_copy[1000]; 7 8 static bool isblank(char p) 9 { 10 return p == ' ' || p == '\t'; 11 } 12 13 static char *skip_blanks(char *p) 14 { 15 while (isblank(*p)) 16 ++p; 17 return p; 18 } 19 20 void __setup_args(void) 21 { 22 char *args = __args; 23 char **argv = __argv; 24 char *p = __args_copy; 25 26 while (*(args = skip_blanks(args)) != '\0') { 27 *argv++ = p; 28 while (*args != '\0' && !isblank(*args)) 29 *p++ = *args++; 30 *p++ = '\0'; 31 } 32 __argc = argv - __argv; 33 } 34 35 void setup_args(char *args) 36 { 37 if (!args) 38 return; 39 40 __args = args; 41 __setup_args(); 42 } 43