summaryrefslogtreecommitdiff
path: root/src/cmd/ld/go.c
diff options
context:
space:
mode:
authorDan Sinclair <dan.sinclair@gmail.com>2010-09-10 13:59:20 -0400
committerDan Sinclair <dan.sinclair@gmail.com>2010-09-10 13:59:20 -0400
commitf9b19033a5ea19b761548c8661645fd0dae7aa97 (patch)
tree62630b81aedb910f0acb4c09320c906d1f2ee6f8 /src/cmd/ld/go.c
parent16e6240d26ef30e4edc0894ce318a645d7550c7e (diff)
downloadgo-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.c15
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';