2 * \file l4util/lib/src/getopt2.c
3 * \brief initialize argc/argv from multiboot structure
5 * \author Frank Mehnert <fm3@os.inf.tu-dresden.de> */
8 * (c) 2003-2009 Technische Universität Dresden
9 * This file is part of TUD:OS and distributed under the terms of the
10 * GNU Lesser General Public License 2.1.
11 * Please see the COPYING-LGPL-2.1 file for details.
17 //#include <l4/util/mbi_argv.h>
18 //#include <l4/crtn/crt0.h>
23 char *l4util_argv[MAXARGC];
26 #define isspace(c) ((c)==' '||(c)=='\t'||(c)=='\r'||(c)=='\n')
28 void __l4util_parse_args(char *argbuf);
29 void __l4util_parse_args(char *argbuf)
34 /* make l4util_argc, l4util_argv */
38 /* Note, there's no support for escaping quotes! */
40 while (*cp && l4util_argc < MAXARGC-1)
43 while (*cp && isspace(*cp))
49 /* Start of a quote? */
50 if (*cp == '"' || *cp == '\'')
56 l4util_argv[l4util_argc++] = cp;
58 /* Forward to next whitespace / quote character */
59 while (*cp && ((!quote && !isspace(*cp)) || (quote && *cp != quote)))
62 /* Terminate array elem */
70 if(*cp && l4util_argc == MAXARGC-1)
71 printf("WARNING: parse_args() truncated at %dth argument!\n", MAXARGC);
73 l4util_argv[l4util_argc] = (void*) 0;
78 arg_init(char* cmdline)
82 l4util_parse_args(cmdline);
87 l4util_mbi_to_argv(l4_mword_t flag, l4util_mb_info_t *mbi)
89 if (flag == L4UTIL_MB_VALID
90 && mbi && (mbi->flags & L4UTIL_MB_CMDLINE))
91 arg_init((char*)(l4_addr_t)mbi->cmdline);