. Fixed problem with name being a prefix of another
authorJoey Schulze <joey@infodrom.org>
Sun, 15 Aug 1999 08:48:05 +0000 (08:48 +0000)
committerJoey Schulze <joey@infodrom.org>
Sun, 15 Aug 1999 08:48:05 +0000 (08:48 +0000)
 . Also decode HTTP strings for multiple fields

CHANGES
cgi.c

diff --git a/CHANGES b/CHANGES
index bc2eb75..b12c7d0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,8 @@ Version 0.5
  . Corrected multiple fields code
  . Reworked offline parser, thanks to Mikko
  . Improved test suite
+ . Fixed problem with name being a prefix of another
+ . Also decode HTTP strings for multiple fields
 
 
 
diff --git a/cgi.c b/cgi.c
index b6f6a08..dd61258 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -192,8 +192,9 @@ s_cgi **cgiInit ()
 
        if (i<numargs) {
 
-           for (k=0; k<i && (strncmp(result[k]->name,cp, esp-cp)); k++);
            /* try to find out if there's already such a variable */
+           for (k=0; k<i && (strncmp (result[k]->name,cp, esp-cp) || !(strlen (result[k]->name) == esp-cp)); k++);
+
            if (k == i) {       /* No such variable yet */
                if ((result[i] = (s_cgi *)malloc(sizeof(s_cgi))) == NULL)
                    return NULL;
@@ -223,7 +224,7 @@ s_cgi **cgiInit ()
                sprintf (sptr, "%s\n", result[k]->value);
                strncat(sptr, cp, ip-esp);
                free(result[k]->value);
-               result[k]->value = sptr;
+               result[k]->value = cgiDecodeString (sptr);
            }
        }
        cp = ++ip;