diff options
author | Dan Sinclair <dan.sinclair@gmail.com> | 2010-09-10 13:59:20 -0400 |
---|---|---|
committer | Dan Sinclair <dan.sinclair@gmail.com> | 2010-09-10 13:59:20 -0400 |
commit | f9b19033a5ea19b761548c8661645fd0dae7aa97 (patch) | |
tree | 62630b81aedb910f0acb4c09320c906d1f2ee6f8 /src/cmd/ld/go.c | |
parent | 16e6240d26ef30e4edc0894ce318a645d7550c7e (diff) | |
download | go-f9b19033a5ea19b761548c8661645fd0dae7aa97.tar.gz |
ld: handle quoted spaces in package path
Fixes issue 1087.
R=rsc
CC=golang-dev
http://codereview.appspot.com/2172041
Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd/ld/go.c')
-rw-r--r-- | src/cmd/ld/go.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/cmd/ld/go.c b/src/cmd/ld/go.c index 46ae5ff74..e0ea6091f 100644 --- a/src/cmd/ld/go.c +++ b/src/cmd/ld/go.c @@ -282,7 +282,7 @@ static int parsepkgdata(char *file, char *pkg, char **pp, char *ep, char **prefixp, char **namep, char **defp) { char *p, *prefix, *name, *def, *edef, *meth; - int n; + int n, inquote; // skip white space p = *pp; @@ -319,8 +319,19 @@ loop: // name: a.b followed by space name = p; - while(p < ep && *p != ' ') + inquote = 0; + while(p < ep) { + if (*p == ' ' && !inquote) + break; + + if(*p == '\\') + p++; + else if(*p == '"') + inquote = !inquote; + p++; + } + if(p >= ep) return -1; *p++ = '\0'; |