aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/ld
diff options
context:
space:
mode:
authorDan Sinclair <dan.sinclair@gmail.com>2010-09-10 13:59:20 -0400
committerRuss Cox <rsc@golang.org>2010-09-10 13:59:20 -0400
commit122f3980c73532484eac40cc2b21118df08dcb68 (patch)
treec7df89907ba02a763d55a073cc640f270d9044f2 /src/cmd/ld
parent26fd5252f41d2226a12cb21879ec956f0591b9d6 (diff)
downloadgo-122f3980c73532484eac40cc2b21118df08dcb68.tar.xz
ld: handle quoted spaces in package path
Fixes #1087. R=rsc CC=golang-dev https://golang.org/cl/2172041
Diffstat (limited to 'src/cmd/ld')
-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 46ae5ff74d..e0ea6091f0 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';