branch: externals/shell-command+
commit a8917560d6370d88aef39ce27a458070745d3ce2
Author: Philip K <phil...@posteo.net>
Commit: Philip K <phil...@posteo.net>

    Detect errors during tokenization
---
 shell-command+.el | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/shell-command+.el b/shell-command+.el
index 4e0bfba..ab8fe14 100644
--- a/shell-command+.el
+++ b/shell-command+.el
@@ -138,13 +138,15 @@ the command string"
   "Return list of tokens of COMMAND."
   (let ((pos 0) tokens)
     (while (string-match
-            (rx (* space)
+            (rx bos (* space)
                 (or (: ?\" (group-n 1 (* (not ?\"))) ?\")
-                    (: (group-n 1 (+ (not (any ?\" ?\s)))))))
-            command pos)
-      (push (match-string 1 command)
+                    (: (group-n 1 (+ (not (any ?\" space)))))))
+            (substring command pos))
+      (push (match-string 1 (substring command pos))
             tokens)
-      (setq pos (match-end 0)))
+      (setq pos (+ pos (match-end 0))))
+    (unless (= pos (length command))
+      (error "Tokenization error at %s" (substring command pos)))
     (nreverse tokens)))
 
 (defun shell-command+-cmd-grep (command)

Reply via email to