Opened 11 years ago
Closed 11 years ago
#60 closed defect (wontfix)
ash: double quotes are always escaped with backslash
| Reported by: | dmik | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | shell | Version: | |
| Severity: | Keywords: | ||
| Cc: |
Description
It seems that sh.exe always escapes double quotes with backslashes in arguments passed to an external program. Let's have this t.sh file:
t.cmd -DFIREFOX_ICO='"../../dist/branding/firefox-os2.ico"'
and this 't.cmd` file:
/**/ say '['arg(1)']'
The output of running sh.exe with the first script will be:
D:>sh t.sh [-DFIREFOX_ICO=\"../../dist/branding/firefox-os2.ico\"]
That's wrong as it confuses some applications that are unable to deal with such escaping (like the Watcom Resource compiler, WRC.EXE).
Change History (2)
comment:1 by , 11 years ago
| Component: | → shell |
|---|
comment:2 by , 11 years ago
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

It turns out that the problem has nothing to do with ash but it's rather a kLIBC problem. It looks like kLIBC deliberately escapes
"with\somewhere inside theexecimplementation. If the target executable is a kLIBC-based binary, they are unescaped back somewhere in themainstartup code (so that the application doesn't even notice that). But it's apparently not the case for non-kLIBC binaries (like REXX.EXE or WRC.EXE).I created a kLIBC ticket for that: http://trac.netlabs.org/libc/ticket/343.
Closing this one.