]> sjero.net Git - wget/blobdiff - src/init.c
Bump version number in NEWS.
[wget] / src / init.c
index 277d4a74b5c26c5f95129bd3ed5cd9313edea07f..0389c39fff1ecd2df9d5b02b09d6b9a29ad7105a 100644 (file)
@@ -247,6 +247,7 @@ static const struct {
   { "secureprotocol",   &opt.secure_protocol,   cmd_spec_secure_protocol },
 #endif
   { "serverresponse",   &opt.server_response,   cmd_boolean },
+  { "showalldnsentries", &opt.show_all_dns_entries, cmd_boolean },
   { "spanhosts",        &opt.spanhost,          cmd_boolean },
   { "spider",           &opt.spider,            cmd_boolean },
   { "strictcomments",   &opt.strict_comments,   cmd_boolean },
@@ -359,6 +360,7 @@ defaults (void)
   opt.encoding_remote = NULL;
 
   opt.useservertimestamps = true;
+  opt.show_all_dns_entries = false;
 }
 \f
 /* Return the user's home directory (strdup-ed), or NULL if none is
@@ -366,8 +368,8 @@ defaults (void)
 char *
 home_dir (void)
 {
-  static char buf[PATH_MAX];
-  static char *home;
+  static char *buf = NULL;
+  static char *home, *ret;
 
   if (!home)
     {
@@ -375,17 +377,28 @@ home_dir (void)
       if (!home)
         {
 #if defined(MSDOS)
+          int len;
+
           /* Under MSDOS, if $HOME isn't defined, use the directory where
              `wget.exe' resides.  */
           const char *_w32_get_argv0 (void); /* in libwatt.a/pcconfig.c */
           char *p;
 
-          strcpy (buf, _w32_get_argv0 ());
+          buff = _w32_get_argv0 ();
+
           p = strrchr (buf, '/');            /* djgpp */
           if (!p)
             p = strrchr (buf, '\\');          /* others */
           assert (p);
-          *p = '\0';
+
+          len = p - buff + 1;
+          buff = malloc (len + 1);
+          if (buff == NULL)
+            return NULL;
+
+          strncpy (buff, _w32_get_argv0 (), len);
+          buff[len] = '\0';
+
           home = buf;
 #elif !defined(WINDOWS)
           /* If HOME is not defined, try getting it from the password
@@ -393,8 +406,7 @@ home_dir (void)
           struct passwd *pwd = getpwuid (getuid ());
           if (!pwd || !pwd->pw_dir)
             return NULL;
-          strcpy (buf, pwd->pw_dir);
-          home = buf;
+          home = pwd->pw_dir;
 #else  /* !WINDOWS */
           /* Under Windows, if $HOME isn't defined, use the directory where
              `wget.exe' resides.  */
@@ -403,7 +415,11 @@ home_dir (void)
         }
     }
 
-  return home ? xstrdup (home) : NULL;
+  ret = home ? xstrdup (home) : NULL;
+  if (buf)
+    free (buf);
+
+  return ret;
 }
 
 /* Check the 'WGETRC' environment variable and return the file name