FreeCalypso > hg > freecalypso-sw
diff target-utils/libcommon/parseargs.c @ 13:f4fc449a64ea
target-utils libcommon infrastructure for interactive commands
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 03 May 2013 06:42:03 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/libcommon/parseargs.c Fri May 03 06:42:03 2013 +0000 @@ -0,0 +1,39 @@ +/* + * This module contains the parse_args() function, which parses the "rest" + * part of an entered command into an argc/argv-style argument array. + */ + +parse_args(unparsed, minargs, maxargs, argv, argcp) + char *unparsed; + int minargs, maxargs; + char **argv; + int *argcp; +{ + int argc; + char *cp; + + argc = 0; + for (cp = unparsed; ; ) { + while (*cp == ' ') + cp++; + if (!*cp) + break; + if (argc >= maxargs) { + printf("ERROR: too many arguments\n"); + return(-1); + } + argv[argc++] = cp; + while (*cp && *cp != ' ') + cp++; + if (*cp) + *cp++ = '\0'; + } + if (argc < minargs) { + printf("ERROR: too few arguments\n"); + return(-1); + } + argv[argc] = 0; + if (argcp) + *argcp = argc; + return(0); +}