forked from len0rd/rockbox
Rockboy - gameboy emulation for rockbox, based on gnuboy. Still a bit early, but already playable on iRiver H1xx and the simulators. The archos recorder version is currently rather slow...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6104 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
48dad47df9
commit
384de10246
56 changed files with 9225 additions and 1 deletions
59
apps/plugins/rockboy/split.c
Normal file
59
apps/plugins/rockboy/split.c
Normal file
|
@ -0,0 +1,59 @@
|
|||
|
||||
#include "rockmacros.h"
|
||||
|
||||
/*
|
||||
* splitline is a destructive argument parser, much like a very primitive
|
||||
* form of a shell parser. it supports quotes for embedded spaces and
|
||||
* literal quotes with the backslash escape.
|
||||
*/
|
||||
|
||||
char *splitnext(char **pos)
|
||||
{
|
||||
char *a, *d, *s;
|
||||
|
||||
d = s = *pos;
|
||||
while (*s == ' ' || *s == '\t') s++;
|
||||
a = s;
|
||||
while (*s && *s != ' ' && *s != '\t')
|
||||
{
|
||||
if (*s == '"')
|
||||
{
|
||||
s++;
|
||||
while (*s && *s != '"')
|
||||
{
|
||||
if (*s == '\\')
|
||||
s++;
|
||||
if (*s)
|
||||
*(d++) = *(s++);
|
||||
}
|
||||
if (*s == '"') s++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*s == '\\')
|
||||
s++;
|
||||
*(d++) = *(s++);
|
||||
}
|
||||
}
|
||||
while (*s == ' ' || *s == '\t') s++;
|
||||
*d = 0;
|
||||
*pos = s;
|
||||
return a;
|
||||
}
|
||||
|
||||
int splitline(char **argv, int max, char *line)
|
||||
{
|
||||
char *s;
|
||||
int i;
|
||||
|
||||
s = line;
|
||||
for (i = 0; *s && i < max + 1; i++)
|
||||
argv[i] = splitnext(&s);
|
||||
argv[i] = 0;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue