From: hniksic Date: Sun, 29 Apr 2001 10:53:55 +0000 (-0700) Subject: [svn] Change default anonymous FTP password to "-wget@". X-Git-Tag: v1.13~2156 X-Git-Url: http://sjero.net/git/?p=wget;a=commitdiff_plain;h=dfc1eb576672755588d24cca9c901f0934559914 [svn] Change default anonymous FTP password to "-wget@". Published in . --- diff --git a/src/ChangeLog b/src/ChangeLog index f5b70250..cde7aebd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,17 @@ +2001-04-28 Hrvoje Niksic + + * main.c (main): Removed undocumented option `--email-address'. + + * netrc.c: Use the latest read_whole_line. + + * init.c (defaults): Set opt.ftp_pass to "-wget@". + + * mswindows.c (pwd_cuserid): Ditto. + + * utils.c (pwd_cuserid): Removed. + + * host.c (ftp_getaddress): Removed. + 2001-04-28 Hrvoje Niksic (http_loop): Allocate space for filename_plus_orig_suffix with diff --git a/src/ftp.c b/src/ftp.c index 1e8ad517..8f80e424 100644 --- a/src/ftp.c +++ b/src/ftp.c @@ -133,8 +133,6 @@ getftp (struct urlinfo *u, long *len, long restval, ccon *con) passwd = u->passwd; search_netrc (u->host, (const char **)&user, (const char **)&passwd, 1); user = user ? user : opt.ftp_acc; - if (!opt.ftp_pass) - opt.ftp_pass = ftp_getaddress (); passwd = passwd ? passwd : opt.ftp_pass; assert (user && passwd); diff --git a/src/host.c b/src/host.c index 9cfb21f9..eaf70762 100644 --- a/src/host.c +++ b/src/host.c @@ -360,130 +360,6 @@ sufmatch (const char **list, const char *what) return 0; } -/* Return email address of the form username@FQDN suitable for - anonymous FTP passwords. This process is error-prone, and the - escape hatch is the MY_HOST preprocessor constant, which can be - used to hard-code either your hostname or FQDN at compile-time. - - If the FQDN cannot be determined, a warning is printed, and the - function returns a short `username@' form, accepted by most - anonymous servers. - - The returned string is generated by malloc() and should be freed - using free(). - - If not even the username cannot be divined, it means things are - seriously fucked up, and Wget exits. */ -char * -ftp_getaddress (void) -{ - static char *address; - - /* Do the drill only the first time, as it won't change. */ - if (!address) - { - char userid[32]; /* 9 should be enough for Unix, but - I'd rather be on the safe side. */ - char *host, *fqdn; - - if (!pwd_cuserid (userid)) - { - logprintf (LOG_ALWAYS, _("%s: Cannot determine user-id.\n"), - exec_name); - exit (1); - } -#ifdef MY_HOST - STRDUP_ALLOCA (host, MY_HOST); -#else /* not MY_HOST */ -#ifdef HAVE_UNAME - { - struct utsname ubuf; - if (uname (&ubuf) < 0) - { - logprintf (LOG_ALWAYS, _("%s: Warning: uname failed: %s\n"), - exec_name, strerror (errno)); - fqdn = ""; - goto giveup; - } - STRDUP_ALLOCA (host, ubuf.nodename); - } -#else /* not HAVE_UNAME */ -#ifdef HAVE_GETHOSTNAME - host = alloca (256); - if (gethostname (host, 256) < 0) - { - logprintf (LOG_ALWAYS, _("%s: Warning: gethostname failed\n"), - exec_name); - fqdn = ""; - goto giveup; - } -#else /* not HAVE_GETHOSTNAME */ - #error Cannot determine host name. -#endif /* not HAVE_GETHOSTNAME */ -#endif /* not HAVE_UNAME */ -#endif /* not MY_HOST */ - /* If the address we got so far contains a period, don't bother - anymore. */ - if (strchr (host, '.')) - fqdn = host; - else - { - /* #### I've seen the following scheme fail on at least one - system! Do we care? */ - char *tmpstore; - /* According to Richard Stevens, the correct way to find the - FQDN is to (1) find the host name, (2) find its IP - address using gethostbyname(), and (3) get the FQDN using - gethostbyaddr(). So that's what we'll do. Step one has - been done above. */ - /* (2) */ - struct hostent *hp = gethostbyname (host); - if (!hp || !hp->h_addr_list) - { - logprintf (LOG_ALWAYS, _("\ -%s: Warning: cannot determine local IP address.\n"), - exec_name); - fqdn = ""; - goto giveup; - } - /* Copy the argument, so the call to gethostbyaddr doesn't - clobber it -- just in case. */ - tmpstore = (char *)alloca (hp->h_length); - memcpy (tmpstore, *hp->h_addr_list, hp->h_length); - /* (3) */ - hp = gethostbyaddr (tmpstore, hp->h_length, hp->h_addrtype); - if (!hp || !hp->h_name) - { - logprintf (LOG_ALWAYS, _("\ -%s: Warning: cannot reverse-lookup local IP address.\n"), - exec_name); - fqdn = ""; - goto giveup; - } - if (!strchr (hp->h_name, '.')) - { -#if 0 - /* This gets ticked pretty often. Karl Berry reports - that there can be valid reasons for the local host - name not to be an FQDN, so I've decided to remove the - annoying warning. */ - logprintf (LOG_ALWAYS, _("\ -%s: Warning: reverse-lookup of local address did not yield FQDN!\n"), - exec_name); -#endif - fqdn = ""; - goto giveup; - } - /* Once we're here, hp->h_name contains the correct FQDN. */ - STRDUP_ALLOCA (fqdn, hp->h_name); - } - giveup: - address = (char *)xmalloc (strlen (userid) + 1 + strlen (fqdn) + 1); - sprintf (address, "%s@%s", userid, fqdn); - } - return address; -} - /* Print error messages for host errors. */ char * herrmsg (int error) diff --git a/src/init.c b/src/init.c index d824d8c3..62115a86 100644 --- a/src/init.c +++ b/src/init.c @@ -227,8 +227,8 @@ defaults (void) opt.ntry = 20; opt.reclevel = 5; opt.add_hostdir = 1; - opt.ftp_acc = xstrdup ("anonymous"); - /*opt.ftp_pass = xstrdup (ftp_getaddress ());*/ + opt.ftp_acc = xstrdup ("anonymous"); + opt.ftp_pass = xstrdup ("-wget@"); opt.netrc = 1; opt.ftp_glob = 1; opt.htmlify = 1; diff --git a/src/main.c b/src/main.c index 5f1f2603..255bb8c4 100644 --- a/src/main.c +++ b/src/main.c @@ -251,7 +251,6 @@ main (int argc, char *const *argv) { "debug", no_argument, NULL, 'd' }, { "delete-after", no_argument, NULL, 136 }, { "dont-remove-listing", no_argument, NULL, 149 }, - { "email-address", no_argument, NULL, 154 }, /* undocumented (debug) */ { "follow-ftp", no_argument, NULL, 142 }, { "force-directories", no_argument, NULL, 'x' }, { "force-hier", no_argument, NULL, 'x' }, /* obsolete */ @@ -400,11 +399,6 @@ hpVqvdkKsxmNWrHSLcFbEY:G:g:T:U:O:l:n:i:o:a:t:D:A:R:P:B:e:Q:X:I:w:C:", case 150: setval ("simplehostcheck", "on"); break; - case 154: - /* For debugging purposes. */ - printf ("%s\n", ftp_getaddress ()); - exit (0); - break; case 155: setval ("bindaddress", optarg); break; diff --git a/src/mswindows.c b/src/mswindows.c index a938cab6..46f86749 100644 --- a/src/mswindows.c +++ b/src/mswindows.c @@ -63,32 +63,6 @@ read_registry (HKEY hkey, char *subkey, char *valuename, char *buf, int *len) return buf; } -char * -pwd_cuserid (char *where) -{ - char buf[32], *ptr; - int len = sizeof (buf); - if (GetUserName (buf, (LPDWORD) &len) == TRUE) - { - ; - } - else if (!!(ptr = getenv ("USERNAME"))) - { - strcpy (buf, ptr); - } - else if (!read_registry (HKEY_LOCAL_MACHINE, "Network\\Logon", - "username", buf, &len)) - { - return NULL; - } - if (where) - { - strncpy (where, buf, len); - return where; - } - return xstrdup (buf); -} - void windows_main_junk (int *argc, char **argv, char **exec_name) { diff --git a/src/netrc.c b/src/netrc.c index 9777e9e2..8a048fd9 100644 --- a/src/netrc.c +++ b/src/netrc.c @@ -67,7 +67,7 @@ search_netrc (const char *host, const char **acc, const char **passwd, /* Find ~/.netrc. */ if (!processed_netrc) { - char *home = home_dir(); + char *home = home_dir (); netrc_list = NULL; processed_netrc = 1; @@ -140,51 +140,58 @@ search_netrc (const char *host, const char **acc, const char **passwd, #ifdef STANDALONE + +#include + /* Normally, these functions would be defined by your package. */ # define xmalloc malloc # define xfree free # define xstrdup strdup -/* The function reads a whole line. It reads the line realloc-ing the +# define xrealloc realloc + +/* Read a line from FP. The function reallocs the storage as needed + to accomodate for any length of the line. Reallocs are done storage exponentially, doubling the storage after each overflow to - minimize the number of calls to realloc(). + minimize the number of calls to realloc() and fgets(). The newline + character at the end of line is retained. - It is not an exemplary of correctness, since it kills off the - newline (and no, there is no way to know if there was a newline at - EOF). */ -# define xrealloc realloc -# define DYNAMIC_LINE_BUFFER 40 + After end-of-file is encountered without anything being read, NULL + is returned. NULL is also returned on error. To distinguish + between these two cases, use the stdio function ferror(). */ char * read_whole_line (FILE *fp) { - char *line; - int i, bufsize, c; - - i = 0; - bufsize = DYNAMIC_LINE_BUFFER; - line = xmalloc(bufsize); - /* Construct the line. */ - while ((c = getc(fp)) != EOF && c != '\n') + int length = 0; + int bufsize = 81; + char *line = (char *)xmalloc (bufsize); + + while (fgets (line + length, bufsize - length, fp)) { - if (i > bufsize - 1) - line = (char *)xrealloc(line, (bufsize <<= 1)); - line[i++] = c; + length += strlen (line + length); + assert (length > 0); + if (line[length - 1] == '\n') + break; + /* fgets() guarantees to read the whole line, or to use up the + space we've given it. We can double the buffer + unconditionally. */ + bufsize <<= 1; + line = xrealloc (line, bufsize); } - if (c == EOF && !i) + if (length == 0 || ferror (fp)) { - xfree(line); + xfree (line); return NULL; } - - /* Check for overflow at zero-termination (no need to double the - buffer in this case. */ - if (i == bufsize) - line = (char *)xrealloc(line, i + 1); - line[i] = '\0'; + if (length + 1 < bufsize) + /* Relieve the memory from our exponential greediness. We say + `length + 1' because the terminating \0 is not included in + LENGTH. We don't need to zero-terminate the string ourselves, + though, because fgets() does that. */ + line = xrealloc (line, length + 1); return line; } - #endif /* STANDALONE */ /* Maybe add NEWENTRY to the account information list, LIST. NEWENTRY is diff --git a/src/utils.c b/src/utils.c index 1f326d50..77ea4348 100644 --- a/src/utils.c +++ b/src/utils.c @@ -431,31 +431,7 @@ uerrmsg (uerr_t errnum) /* The Windows versions of the following two functions are defined in mswindows.c. */ -/* A cuserid() immitation using getpwuid(), to avoid hassling with - utmp. Besides, not all systems have cuesrid(). Under Windows, it - is defined in mswindows.c. - - If WHERE is non-NULL, the username will be stored there. - Otherwise, it will be returned as a static buffer (as returned by - getpwuid()). In the latter case, the buffer should be copied - before calling getpwuid() or pwd_cuserid() again. */ #ifndef WINDOWS -char * -pwd_cuserid (char *where) -{ - struct passwd *pwd; - - if (!(pwd = getpwuid (getuid ())) || !pwd->pw_name) - return NULL; - if (where) - { - strcpy (where, pwd->pw_name); - return where; - } - else - return pwd->pw_name; -} - void fork_to_background (void) {