(cons 'progn body)
(list 'store-match-data original)))))
+(defun shell-quote-argument (argument)
+ "Quote an argument for passing as argument to an inferior shell."
+ ;; Quote everything except POSIX filename characters.
+ ;; This should be safe enough even for really weird shells.
+ (let ((result "") (start 0) end)
+ (while (string-match "[^---0-9a-zA-Z_./]" argument start)
+ (setq end (match-beginning 0)
+ result (concat result (substring argument start end)
+ "\\" (substring argument end (1+ end)))
+ start (1+ end)))
+ (concat result (substring argument start))))
+
;; now in fns.c
;(defun nth (n list)
; "Returns the Nth element of LIST.