Hi,
Attached is a test program which does the following:
1. Expands an array of struct Placeholder { c, rep } in one step, to avoid the current collisions where expanded text may contain %x which is then interpreted as a placeholder.
It would be a shame not to include this.
2. Replaces %% with a literal %.
This is a logical thing to have...
3. Quotes any text between %" %" natively. (Rules 1 and 2 apply identically to the text inside %" %")
*This may be easily removed from the expansion.*
Pros: - Very unlikely to break the current user commands. - bash quoting support for Windows, search and tools: bash -c 'echo "$0" "$1" "$2"' echo %"foo"'bar%" qux echo foo"'bar qux - Simple to implement and understand. Contrary to the grim predictions, it's only ~35 lines, even considering that the expansion may be merged in a single function without it.
Cons: - Uncommon quoter. All good quotes are already taken. :) - With " ' and %" you can shoot yourself in the foot. Well, one can easily do that with shell by specifying $1 or "$CFLAGS", right?
I can propose rules for verifying the existing user commands, fixing some of them and making suggestions for others, and for verifying the new commands entered by the user to some extent. But if we don't like %" I'd skip that part.
4. Defines utils_quote_natively(), which quotes text natively. It will be good to quote at least --include=filespec under Windows, where the child is responsible for the filename expansion.
-- E-gards: Jimmy