浏览代码

Vendor package update github.com/mattn/go-shellwords

Signed-off-by: Manjunath A Kumatagi <mkumatag@in.ibm.com>
Manjunath A Kumatagi 8 年之前
父节点
当前提交
3d6d9061e3

+ 1 - 1
vendor.conf

@@ -10,7 +10,7 @@ github.com/go-check/check 4ed411733c5785b40214c70bce814c3a3a689609 https://githu
 github.com/gorilla/context v1.1
 github.com/gorilla/mux v1.1
 github.com/kr/pty 5cf931ef8f
-github.com/mattn/go-shellwords v1.0.0
+github.com/mattn/go-shellwords v1.0.3
 github.com/tchap/go-patricia v2.2.6
 github.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3
 # forked golang.org/x/net package includes a patch for lazy loading trace templates

+ 21 - 0
vendor/github.com/mattn/go-shellwords/LICENSE

@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2017 Yasuhiro Matsumoto
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 1 - 1
vendor/github.com/mattn/go-shellwords/README.md

@@ -40,7 +40,7 @@ This is based on cpan module [Parse::CommandLine](https://metacpan.org/pod/Parse
 
 # License
 
-under the MIT License: http://mattn.mit-license.org/2014
+under the MIT License: http://mattn.mit-license.org/2017
 
 # Author
 

+ 18 - 7
vendor/github.com/mattn/go-shellwords/shellwords.go

@@ -4,7 +4,6 @@ import (
 	"errors"
 	"os"
 	"regexp"
-	"strings"
 )
 
 var (
@@ -35,21 +34,24 @@ func replaceEnv(s string) string {
 type Parser struct {
 	ParseEnv      bool
 	ParseBacktick bool
+	Position      int
 }
 
 func NewParser() *Parser {
-	return &Parser{ParseEnv, ParseBacktick}
+	return &Parser{ParseEnv, ParseBacktick, 0}
 }
 
 func (p *Parser) Parse(line string) ([]string, error) {
-	line = strings.TrimSpace(line)
-
 	args := []string{}
 	buf := ""
 	var escaped, doubleQuoted, singleQuoted, backQuote bool
 	backtick := ""
 
-	for _, r := range line {
+	pos := -1
+	got := false
+
+loop:
+	for i, r := range line {
 		if escaped {
 			buf += string(r)
 			escaped = false
@@ -69,12 +71,13 @@ func (p *Parser) Parse(line string) ([]string, error) {
 			if singleQuoted || doubleQuoted || backQuote {
 				buf += string(r)
 				backtick += string(r)
-			} else if buf != "" {
+			} else if got {
 				if p.ParseEnv {
 					buf = replaceEnv(buf)
 				}
 				args = append(args, buf)
 				buf = ""
+				got = false
 			}
 			continue
 		}
@@ -107,15 +110,21 @@ func (p *Parser) Parse(line string) ([]string, error) {
 				singleQuoted = !singleQuoted
 				continue
 			}
+		case ';', '&', '|', '<', '>':
+			if !(escaped || singleQuoted || doubleQuoted || backQuote) {
+				pos = i
+				break loop
+			}
 		}
 
+		got = true
 		buf += string(r)
 		if backQuote {
 			backtick += string(r)
 		}
 	}
 
-	if buf != "" {
+	if got {
 		if p.ParseEnv {
 			buf = replaceEnv(buf)
 		}
@@ -126,6 +135,8 @@ func (p *Parser) Parse(line string) ([]string, error) {
 		return nil, errors.New("invalid command line string")
 	}
 
+	p.Position = pos
+
 	return args, nil
 }