[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[E-devel] Ecore_exe and shell metacharachters

Ecore_exe will try to avoid using "sh -c" to execute a program if it can. If the command line contains shell meta characters (defined as any combination of |&;<>$'\"'*?#) it will use the user's shell to execute the command, otherwise it will execute it directly.

Unfortunately this causes a problem if the user's shell is csh/tcsh and the command line contains a ? character. I noticed this problem because dEvian's RSS face uses ecore_exe in order to launch a web browser with the URL as the command line argument, and if the URL contains a ? ecore_exe will try to use tcsh to execute it, and this will only work if the ? is escaped with a \. Not even including the command line between single quotes

Not really sure what the best way to fix this would be though. The simple solution of enclosing the command line in single quotes does not work. I think if the command line is parsed and all meta characters are escaped it will work with any shell, but I'm too lazy to implement that. :( Just wanted to report it, I'll probably change my shell or edit ecore_exe.c to use /bin/sh instead of my shell to work around it until someone less lazy then myself can fix it. :)

Mike Russo
ReadQ Systems, Inc.
(212) 425 3680 x105

Random quote of the last-time-I-ran-bash:
<rac> jstubbs: perl is garbage collected. however, circular references will confuse it <rac> jstubbs: so if you have circular references, you have to break the circularity manually <jstubbs> rac: so if references aren't being used and everything is defined using "my" within a function that gets called from a loop, is it normal for it to continuously eat memory? <rac> jstubbs: why do i feel like if i say "no", i'm going to get a bug filed on my head? :)