diff options
author | Jeff Garzik <jgarzik@src.gnome.org> | 1998-12-24 20:31:34 +0000 |
---|---|---|
committer | Jeff Garzik <jgarzik@src.gnome.org> | 1998-12-24 20:31:34 +0000 |
commit | 372db513aef0d814012697cdeec47561dbf25ae6 (patch) | |
tree | ee69356f781acaa170a59d16da449016d8e80b0c /support/poptparse.c | |
parent | aa3d584c9170a93984aebbd666a8bb86734badf9 (diff) | |
download | shared-mime-info-372db513aef0d814012697cdeec47561dbf25ae6.tar.gz |
poptParseArgvString cleanups...
x
Added array grow increment constant.
Remove unnecessary 'dst' init.
Remove unnecessary strcpy().
Make arg 's' and var 'src' const-correct.
svn path=/trunk/; revision=543
Diffstat (limited to 'support/poptparse.c')
-rw-r--r-- | support/poptparse.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/support/poptparse.c b/support/poptparse.c index 2e9bc738..b4e14340 100644 --- a/support/poptparse.c +++ b/support/poptparse.c @@ -15,23 +15,25 @@ #include "popt-gnome.h" -int poptParseArgvString(char * s, int * argcPtr, char *** argvPtr) { - char * buf = strcpy(alloca(strlen(s) + 1), s); - char * bufStart = buf; - char * src, * dst; +static const int poptArgvArrayGrowDelta = 5; + +int poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr) { + char * buf, * bufStart, * dst; + const char * src; char quote = '\0'; - int argvAlloced = 5; + int argvAlloced = poptArgvArrayGrowDelta; char ** argv = malloc(sizeof(*argv) * argvAlloced); char ** argv2; int argc = 0; - int i; + int i, buflen; + + buflen = strlen(s) + 1; + bufStart = buf = alloca(buflen); + memset(buf, '\0', buflen); src = s; - dst = buf; argv[argc] = buf; - memset(buf, '\0', strlen(s) + 1); - while (*src) { if (quote == *src) { quote = '\0'; @@ -49,7 +51,7 @@ int poptParseArgvString(char * s, int * argcPtr, char *** argvPtr) { if (*argv[argc]) { buf++, argc++; if (argc == argvAlloced) { - argvAlloced += 5; + argvAlloced += poptArgvArrayGrowDelta; argv = realloc(argv, sizeof(*argv) * argvAlloced); } argv[argc] = buf; |