From 3e3f80d2449128884b70929feee97fa3c240421a Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 15 Feb 1998 04:32:43 +0000 Subject: netrc improvement. svn path=/trunk/; revision=1624 --- netrc.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'netrc.c') diff --git a/netrc.c b/netrc.c index 635228a7..44339590 100644 --- a/netrc.c +++ b/netrc.c @@ -133,6 +133,9 @@ parse_netrc (file) /* If we are defining macros, then skip parsing the line. */ while (*p && last_token != tok_macdef) { + char quote_char = 0; + char *pp; + /* Skip any whitespace. */ while (*p && isspace (*p)) p++; @@ -141,15 +144,41 @@ parse_netrc (file) if (*p == '#') break; - tok = p; + tok = pp = p; /* Find the end of the token. */ - while (*p && !isspace (*p)) - p ++; - + while (*p && (quote_char || !isspace (*p))) + { + if (quote_char) + { + if (quote_char == *p) + { + quote_char = 0; + p ++; + } + else + { + *pp = *p; + p ++; + pp ++; + } + } + else + { + if (*p == '"' || *p == '\'') + quote_char = *p; + else + { + *pp = *p; + pp ++; + } + p ++; + } + } /* Null-terminate the token, if it isn't already. */ if (*p) *p ++ = '\0'; + *pp = 0; switch (last_token) { -- cgit v1.2.3