/* ESCAPE.CMD -- Quote a filename for use in command-interpreter exits */
/*
* This is a REXX script that contains an escape() function that can be
* used to quote filenames (and other arguments) that are to be passed
* to command-interpreter exits, ensuring that characters within the
* argument are not treated as command-interpreter metacharacters.
*
* (c) Copyright 2010 Jonathan de Boyne Pollard. "Moral" rights asserted.
*
* Permission is hereby granted to copy, modify, and redistribute this script
* as long as the author is not held responsible for any consequences of its
* possession or use, and as long as you agree that it comes with no guarantee.
*/
escape: procedure
parse arg s
quote = ''
temp = s
do while temp \= ''
c = left(temp,1)
temp = substr(temp,2)
if c = ' ' | c = X'09' then do
quote = '"'
leave
end
end
r = ''
if quote \= '' then do
do while s \= ''
c = left(s,1)
s = substr(s,2)
select
when c = '"' then r = r||'\'||c
when c = '%' then r = r||'%'||c
otherwise r = r||c
end
end
end
else
do
do while s \= ''
c = left(s,1)
s = substr(s,2)
if c = '^' | c = '%' | c = '&' | c = '|' | c = '>' | c = '