diff options
author | Jeff Garzik <jgarzik@src.gnome.org> | 1998-12-24 20:48:02 +0000 |
---|---|---|
committer | Jeff Garzik <jgarzik@src.gnome.org> | 1998-12-24 20:48:02 +0000 |
commit | 78bcc5f518272d7fb90da69b7e7806a0ad3871d6 (patch) | |
tree | 0af67fc8c8240be9bfa6b1cee64ef4cbc071b237 | |
parent | 88c1bbc3572fc9782ca6fc5ec69b9d657cf490f2 (diff) | |
download | shared-mime-info-78bcc5f518272d7fb90da69b7e7806a0ad3871d6.tar.gz |
Merge msw's bugfix and my cleansup from HEAD.
If you want to look at this diff, 'diff -c' is more readable than 'diff -u'.
svn path=/branches/GNOME_STABLE/; revision=544
-rw-r--r-- | support/ChangeLog | 12 | ||||
-rw-r--r-- | support/popt-gnome.h | 2 | ||||
-rw-r--r-- | support/poptparse.c | 23 |
3 files changed, 25 insertions, 12 deletions
diff --git a/support/ChangeLog b/support/ChangeLog index 8bef4ede..bd1b2eee 100644 --- a/support/ChangeLog +++ b/support/ChangeLog @@ -1,3 +1,15 @@ +1998-12-24 Jeff Garzik <jgarzik@pobox.com> + + * poptparse.[ch]: poptParseArgvString cleanups... + Added array grow increment constant. + Remove unnecessary 'dst' init. + Remove unnecessary strcpy(). + Make arg 's' and var 'src' const-correct. + +1998-12-21 Matt Wilson <msw@redhat.com> + + * poptparse.c: fix pointer assignment + 1998-12-16 Sebastian Wilhelmi <wilhelmi@ira.uka.de> * Makefile.am (libgnomesupport_la_SOURCES): added gnome-argp.c, diff --git a/support/popt-gnome.h b/support/popt-gnome.h index 069cab11..6dc27656 100644 --- a/support/popt-gnome.h +++ b/support/popt-gnome.h @@ -104,7 +104,7 @@ int poptReadConfigFile(poptContext con, char * fn); int poptReadDefaultConfig(poptContext con, int useEnv); /* argv should be freed -- this allows ', ", and \ quoting, but ' is treated the same as " and both may include \ quotes */ -int poptParseArgvString(char * s, int * argcPtr, char *** argvPtr); +int poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr); const char * poptStrerror(const int error); void poptSetExecPath(poptContext con, const char * path, int allowAbsolute); void poptPrintHelp(poptContext con, FILE * f, int flags); diff --git a/support/poptparse.c b/support/poptparse.c index 35eaa436..b4e14340 100644 --- a/support/poptparse.c +++ b/support/poptparse.c @@ -15,24 +15,25 @@ #include "popt-gnome.h" -int poptParseArgvString(char * s, int * argcPtr, char *** argvPtr) { - char * buf; - 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); - buf = strcpy(alloca(strlen(s) + 1), s); src = s; - dst = buf; argv[argc] = buf; - memset(buf, '\0', strlen(s) + 1); - while (*src) { if (quote == *src) { quote = '\0'; @@ -50,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; |