Merge pull request #32498 from thaJeztah/17.05.0-rc1-changelog

17.05.0 rc1 changelog
diff --git a/vendor.conf b/vendor.conf
index d8849e7..aa8b2f7 100644
--- a/vendor.conf
+++ b/vendor.conf
@@ -10,7 +10,7 @@
 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
diff --git a/vendor/github.com/mattn/go-shellwords/LICENSE b/vendor/github.com/mattn/go-shellwords/LICENSE
new file mode 100644
index 0000000..740fa93
--- /dev/null
+++ b/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.
diff --git a/vendor/github.com/mattn/go-shellwords/README.md b/vendor/github.com/mattn/go-shellwords/README.md
index 56f357f..b1d235c 100644
--- a/vendor/github.com/mattn/go-shellwords/README.md
+++ b/vendor/github.com/mattn/go-shellwords/README.md
@@ -40,7 +40,7 @@
 
 # License
 
-under the MIT License: http://mattn.mit-license.org/2014
+under the MIT License: http://mattn.mit-license.org/2017
 
 # Author
 
diff --git a/vendor/github.com/mattn/go-shellwords/shellwords.go b/vendor/github.com/mattn/go-shellwords/shellwords.go
index 1abaa6c..1078039 100644
--- a/vendor/github.com/mattn/go-shellwords/shellwords.go
+++ b/vendor/github.com/mattn/go-shellwords/shellwords.go
@@ -4,7 +4,6 @@
 	"errors"
 	"os"
 	"regexp"
-	"strings"
 )
 
 var (
@@ -35,21 +34,24 @@
 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 @@
 			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 @@
 				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 @@
 		return nil, errors.New("invalid command line string")
 	}
 
+	p.Position = pos
+
 	return args, nil
 }