summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@src.gnome.org>1998-12-24 20:48:02 +0000
committerJeff Garzik <jgarzik@src.gnome.org>1998-12-24 20:48:02 +0000
commit78bcc5f518272d7fb90da69b7e7806a0ad3871d6 (patch)
tree0af67fc8c8240be9bfa6b1cee64ef4cbc071b237
parent88c1bbc3572fc9782ca6fc5ec69b9d657cf490f2 (diff)
downloadshared-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/ChangeLog12
-rw-r--r--support/popt-gnome.h2
-rw-r--r--support/poptparse.c23
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;