Fix parser for ifeq
diff --git a/parser.go b/parser.go
index bc11904..8404649 100644
--- a/parser.go
+++ b/parser.go
@@ -251,29 +251,36 @@
 	return args, i + 1, nil
 }
 
-func parseTwoQuotes(s string) ([]string, bool) {
-	toks := splitSpaces(s)
-	if len(toks) != 2 {
-		return nil, false
-	}
+func (p *parser) parseTwoQuotes(s string, op string) ([]string, bool) {
 	var args []string
-	for _, tok := range toks {
-		if len(tok) < 2 {
+	for i := 0; i < 2; i++ {
+		s = strings.TrimSpace(s)
+		if len(s) < 1 {
 			return nil, false
 		}
-		ti := len(tok) - 1
-		if tok[0] != tok[ti] || (tok[0] != '\'' && tok[ti] != '"') {
+
+		quote := s[0]
+		if quote != '\'' && quote != '"' {
 			return nil, false
 		}
-		args = append(args, tok[1:ti])
+		end := strings.IndexByte(s[1:], quote) + 1
+		if end < 0 {
+			return nil, false
+		}
+
+		args = append(args, s[1:end])
+		s = s[end+1:]
+	}
+	if len(s) > 0 {
+		Error(p.mk.filename, p.lineno, `extraneous text after %q directive`, op)
 	}
 	return args, true
 }
 
-func parseEq(s string) (string, string, bool) {
+func (p *parser) parseEq(s string, op string) (string, string, bool) {
 	args, _, err := parseExpr(s)
 	if err != nil {
-		args, ok := parseTwoQuotes(s)
+		args, ok := p.parseTwoQuotes(s, op)
 		if ok {
 			return args[0], args[1], true
 		}
@@ -287,13 +294,14 @@
 }
 
 func (p *parser) parseIfeq(line string, oplen int) AST {
-	lhs, rhs, ok := parseEq(strings.TrimSpace(line[oplen+1:]))
+	op := line[:oplen]
+	lhs, rhs, ok := p.parseEq(strings.TrimSpace(line[oplen+1:]), op)
 	if !ok {
 		Error(p.mk.filename, p.lineno, `*** invalid syntax in conditional.`)
 	}
 
 	ast := &IfAST{
-		op:  line[:oplen],
+		op:  op,
 		lhs: lhs,
 		rhs: rhs,
 	}