Article View: gnu.emacs.vm.bug
Article #711Re: Can't launch attachments with "spaces" in file name
From: Kevin Rodgers
Date: Fri, 06 Feb 2004 23:02
Date: Fri, 06 Feb 2004 23:02
77 lines
4031 bytes
4031 bytes
Jeffrey J. Kosowsky wrote:
> Kevin Rodgers <ihs_4664@yahoo.com> writes:
>>It might be that VM is using the file name that was cached in the MIME
>>layout, instead of the quoted file name. What does this return on your
>>platform:
>>
>> (shell-quote-argument
>> "c:/DOCUME~1/myname/LOCALS~1/Temp/FP&A 2004-2005 Capabilities.ppt")
>
> Returns:
> "c:/DOCUME~1/myname/LOCALS~1/Temp/FP&A 2004-2005 Capabilities.ppt"
>
>>Also, what happens if you leave off the %f spec so that
>>vm-mime-display-external-generic adds the quoted name itself:
>>
>> ("application" "cmd /c")
>> ("audio" "cmd /c")
>> ("image" "cmd /c")
>> ("video" "cmd /c")
>
> No change...
>
> However, I have identified the *source* of the problem.
> According the the help message generated by "help cmd" in an XP shell,
> special characters like '&' need to be *directly* quoted. Specifically,
> The special characters that require quotes are:
> <space>
> &()[]{}^=;!'+,`~
>
> In other words quoting the *entire* file name fails as follows:
> cmd "FP&A 2004-2005 Capabilities.ppt"
> gives:
> 'FP' is not recognized as an internal or external command,
> operable program or batch file.
> 'A.doc' is not recognized as an internal or external command,
> operable program or batch file.
>
> Instead, you need to quote the *special* character itself as follows:
> cmd FP"&"A 2004-2005 Capabilities.ppt
> which correctly opens the file.
Don't each of the spaces need to be quoted as well? That would yield
cmd FP"&"A" "2004-2005" "Capabilities.ppt
> So, to make this work, you need to quote directly all the special
> characters in the string represented by %f.
>
> Not sure how to do this best in elisp though... (Perl on the other
> hand would be very easy).
>
> At least, this seems to explain the problem!
Indeed. What is system-type on your platform? lisp/subr.el defines
shell-quote-argument, and its result depends on that variable. But
none of the alternatives use the quoting convention you describe.
If cmd is the shell you use for M-! and M-|, you can probably just redefine
it:
(defun cmd-quote-argument (argument)
"Quote ARGUMENT for a `cmd` command."
(let ((result "")
(start 0)
end)
(while (string-match "[][ &(){}^=;!'+,`~]" 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))))
(defalias 'shell-quote-argument 'cmd-quote-argument)
--
Kevin Rodgers
Technical Details
Message-ID:
<40241D13.8060908@yahoo.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!170.207.51.80!not-for-mailReferences:
<m2fzekj10g.fsf@consult.pretender> <400320B7.5060408@yahoo.com> <m2k73n2nrb.fsf@consult.pretender> <400D5599.10709@yahoo.com> <m2isj6m7a4.fsf@consult.pretender> <861xpth8a1.fsf@robf.deREMOVETHIS> <m2smi88qsy.fsf@consult.pretender> <86hdyoc6n9.fsf@robf.deREMOVETHIS> <m2y8rscb3z.fsf@consult.pretender> <4017E7FE.8040704@yahoo.com> <m21xpjvd3q.fsf@consult.pretender> <401FCD17.6010700@yahoo.com> <m2llnjn6bs.fsf@consult.pretender>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: f6829,6e83a1235cadfbbe X-Google-Attributes: gidf6829,public X-Google-ArrivalTime: 2004-02-06 15:02:39 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!170.207.51.80!not-for-mail From: Kevin Rodgers <ihs_4664@yahoo.com> Newsgroups: gnu.emacs.vm.bug Subject: Re: Can't launch attachments with "spaces" in file name Date: Fri, 06 Feb 2004 16:02:43 -0700 Lines: 78 Message-ID: <40241D13.8060908@yahoo.com> References: <m2fzekj10g.fsf@consult.pretender> <400320B7.5060408@yahoo.com> <m2k73n2nrb.fsf@consult.pretender> <400D5599.10709@yahoo.com> <m2isj6m7a4.fsf@consult.pretender> <861xpth8a1.fsf@robf.deREMOVETHIS> <m2smi88qsy.fsf@consult.pretender> <86hdyoc6n9.fsf@robf.deREMOVETHIS> <m2y8rscb3z.fsf@consult.pretender> <4017E7FE.8040704@yahoo.com> <m21xpjvd3q.fsf@consult.pretender> <401FCD17.6010700@yahoo.com> <m2llnjn6bs.fsf@consult.pretender> NNTP-Posting-Host: 170.207.51.80 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de 1076108557 34695542 D 170.207.51.80 ([82742]) User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2 X-Accept-Language: en-us