summaryrefslogtreecommitdiff
path: root/support/poptparse.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@src.gnome.org>1998-12-24 20:31:34 +0000
committerJeff Garzik <jgarzik@src.gnome.org>1998-12-24 20:31:34 +0000
commit372db513aef0d814012697cdeec47561dbf25ae6 (patch)
treeee69356f781acaa170a59d16da449016d8e80b0c /support/poptparse.c
parentaa3d584c9170a93984aebbd666a8bb86734badf9 (diff)
downloadshared-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.c22
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;