xref: /kvm-unit-tests/lib/argv.c (revision 901c1c8dcd406d63e5fd4a0b36026749810e6397)
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