X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fnetrc.c;h=193d4f3767633433ea2f07ad93997477a91a0d30;hp=87c8c94b8b5f55cf799efc68341ba591f03df662;hb=2f6aa1d7417df1dfc58597777686fbd77179b9fd;hpb=e7d78dd2a75d0ea21a63ac4968df6079b8018cd5 diff --git a/src/netrc.c b/src/netrc.c index 87c8c94b..193d4f37 100644 --- a/src/netrc.c +++ b/src/netrc.c @@ -1,5 +1,6 @@ /* Read and parse the .netrc file to get hosts, accounts, and passwords. - Copyright (C) 1996, 2007 Free Software Foundation, Inc. + Copyright (C) 1996, 2007, 2008, 2009, 2010, 2011 Free Software + Foundation, Inc. This file is part of GNU Wget. @@ -16,29 +17,27 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Wget. If not, see . -In addition, as a special exception, the Free Software Foundation -gives permission to link the code of its release of Wget with the -OpenSSL project's "OpenSSL" library (or with modified versions of it -that use the same license as the "OpenSSL" library), and distribute -the linked executables. You must obey the GNU General Public License -in all respects for all of the code used other than "OpenSSL". If you -modify this file, you may extend this exception to your version of the -file, but you are not obligated to do so. If you do not wish to do -so, delete this exception statement from your version. */ +Additional permission under GNU GPL version 3 section 7 + +If you modify this program, or any covered work, by linking or +combining it with the OpenSSL project's OpenSSL library (or a +modified version of that library), containing parts covered by the +terms of the OpenSSL or SSLeay licenses, the Free Software Foundation +grants you additional permission to convey the resulting work. +Corresponding Source for a non-source form of such a combination +shall include the source code for the parts of OpenSSL used as well +as that of the covered work. */ /* This file used to be kept in synch with the code in Fetchmail, but the latter has diverged since. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include "wget.h" #include #include #include #include -#include "wget.h" #include "utils.h" #include "netrc.h" #include "init.h" @@ -67,6 +66,21 @@ search_netrc (const char *host, const char **acc, const char **passwd, /* Find ~/.netrc. */ if (!processed_netrc) { +#ifdef __VMS + + int err; + struct_stat buf; + char *path = "SYS$LOGIN:.netrc"; + + netrc_list = NULL; + processed_netrc = 1; + + err = stat (path, &buf); + if (err == 0) + netrc_list = parse_netrc (path); + +#else /* def __VMS */ + char *home = home_dir (); netrc_list = NULL; @@ -83,6 +97,8 @@ search_netrc (const char *host, const char **acc, const char **passwd, if (err == 0) netrc_list = parse_netrc (path); } + +#endif /* def __VMS [else] */ } /* If nothing to do... */ if (!netrc_list) @@ -238,7 +254,7 @@ static void shift_left(char *string) { char *p; - + for (p=string; *p; ++p) *p = *(p+1); } @@ -251,7 +267,7 @@ parse_netrc (const char *path) char *line, *p, *tok; const char *premature_token; acc_t *current, *retval; - int ln, quote; + int ln, qmark; /* The latest token we've seen in the file. */ enum @@ -280,10 +296,10 @@ parse_netrc (const char *path) /* Parse the line. */ p = line; - quote = 0; + qmark = 0; /* Skip leading whitespace. */ - while (*p && ISSPACE (*p)) + while (*p && c_isspace (*p)) p ++; /* If the line is empty, then end any macro definition. */ @@ -295,7 +311,7 @@ parse_netrc (const char *path) while (*p && last_token != tok_macdef) { /* Skip any whitespace. */ - while (*p && ISSPACE (*p)) + while (*p && c_isspace (*p)) p ++; /* Discard end-of-line comments; also, stop processing if @@ -306,25 +322,25 @@ parse_netrc (const char *path) /* If the token starts with quotation mark, note this fact, and squash the quotation character */ if (*p == '"'){ - quote = 1; + qmark = 1; shift_left (p); } tok = p; /* Find the end of the token, handling quotes and escapes. */ - while (*p && (quote ? *p != '"' : !ISSPACE (*p))){ + while (*p && (qmark ? *p != '"' : !c_isspace (*p))){ if (*p == '\\') shift_left (p); p ++; } /* If field was quoted, squash the trailing quotation mark - and reset quote flag. */ - if (quote) + and reset qmark flag. */ + if (qmark) { shift_left (p); - quote = 0; + qmark = 0; } /* Null-terminate the token, if it isn't already. */ @@ -373,8 +389,8 @@ parse_netrc (const char *path) if (premature_token) { fprintf (stderr, _("\ -%s: %s:%d: warning: \"%s\" token appears before any machine name\n"), - exec_name, path, ln, premature_token); +%s: %s:%d: warning: %s token appears before any machine name\n"), + exec_name, path, ln, quote (premature_token)); premature_token = NULL; }