🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.emacs.vm.bug
Article #711

Re: Can't launch attachments with "spaces" in file name

#711
From: Kevin Rodgers
Date: Fri, 06 Feb 2004 23:02
77 lines
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-mail
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>

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