]> sjero.net Git - wget/blobdiff - src/headers.c
[svn] Move path_simplify to url.c.
[wget] / src / headers.c
index bf279552aa9459a97cbf48cf60f3659c12064dbd..7f8693a31ef4983f05878f8cdbef9e9b804de512 100644 (file)
@@ -1,20 +1,20 @@
 /* Generic support for headers.
    Copyright (C) 1997, 1998 Free Software Foundation, Inc.
 
-This file is part of Wget.
+This file is part of GNU Wget.
 
-This program is free software; you can redistribute it and/or modify
+GNU Wget is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
+GNU Wget is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
+along with Wget; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include <config.h>
@@ -26,7 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #else
 # include <strings.h>
 #endif
-#include <ctype.h>
 
 #include "wget.h"
 #include "connect.h"
@@ -128,7 +127,7 @@ header_process (const char *header, const char *name,
                void *arg)
 {
   /* Check whether HEADER matches NAME.  */
-  while (*name && (tolower (*name) == tolower (*header)))
+  while (*name && (TOLOWER (*name) == TOLOWER (*header)))
     ++name, ++header;
   if (*name || *header++ != ':')
     return 0;
@@ -150,6 +149,15 @@ header_extract_number (const char *header, void *closure)
 
   for (result = 0; ISDIGIT (*p); p++)
     result = 10 * result + (*p - '0');
+
+  /* Failure if no number present. */
+  if (p == header)
+    return 0;
+
+  /* Skip trailing whitespace. */
+  p += skip_lws (p);
+
+  /* Indicate failure if trailing garbage is present. */
   if (*p)
     return 0;
 
@@ -165,6 +173,14 @@ header_strdup (const char *header, void *closure)
   return 1;
 }
 
+/* Write the value 1 into the integer pointed to by CLOSURE.  */
+int
+header_exists (const char *header, void *closure)
+{
+  *(int *)closure = 1;
+  return 1;
+}
+
 /* Skip LWS (linear white space), if present.  Returns number of
    characters to skip.  */
 int