]> sjero.net Git - wget/blobdiff - src/init.c
[svn] New option --no-http-keep-alive.
[wget] / src / init.c
index 38b065faeef4900d92ae3c04c7720bb539d92c71..e7b974f4d4353b539c4b347b75d9cabb814bf4f9 100644 (file)
@@ -122,6 +122,7 @@ static struct {
   { "header",          NULL,                   cmd_spec_header },
   { "htmlextension",   &opt.html_extension,    cmd_boolean },
   { "htmlify",         NULL,                   cmd_spec_htmlify },
+  { "httpkeepalive",   &opt.http_keep_alive,   cmd_boolean },
   { "httppasswd",      &opt.http_passwd,       cmd_string },
   { "httpproxy",       &opt.http_proxy,        cmd_string },
   { "httpuser",                &opt.http_user,         cmd_string },
@@ -214,6 +215,7 @@ defaults (void)
   opt.netrc = 1;
   opt.ftp_glob = 1;
   opt.htmlify = 1;
+  opt.http_keep_alive = 1;
   opt.use_proxy = 1;
   tmp = getenv ("no_proxy");
   if (tmp)
@@ -336,10 +338,7 @@ run_wgetrc (const char *file)
     {
       char *com, *val;
       int status;
-      int length = strlen (line);
 
-      if (length && line[length - 1] == '\r')
-       line[length - 1] = '\0';
       /* Parse the line.  */
       status = parse_line (line, &com, &val);
       free (line);
@@ -411,12 +410,12 @@ parse_line (const char *line, char **com, char **val)
   const char *orig_comptr, *end;
   char *new_comptr;
 
-  /* Skip spaces.  */
-  while (*p == ' ' || *p == '\t')
+  /* Skip whitespace.  */
+  while (*p && ISSPACE (*p))
     ++p;
 
   /* Don't process empty lines.  */
-  if (!*p || *p == '\n' || *p == '#')
+  if (!*p || *p == '#')
     return -1;
 
   for (orig_comptr = p; ISALPHA (*p) || *p == '_' || *p == '-'; p++)
@@ -424,6 +423,8 @@ parse_line (const char *line, char **com, char **val)
   /* The next char should be space or '='.  */
   if (!ISSPACE (*p) && (*p != '='))
     return 0;
+  /* Here we cannot use strdupdelim() as we normally would because we
+     want to skip the `-' and `_' characters in the input string.  */
   *com = (char *)xmalloc (p - orig_comptr + 1);
   for (new_comptr = *com; orig_comptr < p; orig_comptr++)
     {
@@ -449,10 +450,12 @@ parse_line (const char *line, char **com, char **val)
     }
   /* Skip spaces after '='.  */
   for (++p; ISSPACE (*p); p++);
-  /* Get the ending position.  */
-  for (end = p; *end && *end != '\n'; end++);
-  /* Allocate *val, and copy from line.  */
-  *val = strdupdelim (p, end);
+  /* Get the ending position for VAL by starting with the end of the
+     line and skipping whitespace.  */
+  end = line + strlen (line) - 1;
+  while (end > p && ISSPACE (*end))
+    --end;
+  *val = strdupdelim (p, end + 1);
   return 1;
 }