under windows, you have to paste the arg strings back together in order to pass
them to a subprocess. this means they need to be quoted.
i JUST fixed this in the latest 21.2 beta. under 21.1.x it won't work.
the shit in ntproc.c is slated to go away; currently it's only needed for
old-call-process-internal, which is on its way out.
Charles G Waldman wrote:
Adrian Aichner writes:
>
> Can you commit from the *cvs* buffer useing
>
> c runs the command cvs-mode-commit
Yes, that's how I normally do commits.
>
> I am baffled.
>
> The latest CVS sources don't show any quoting of the commit message
> either.
I think I know what's going on! You are using MS-Windows, right? And
I'm using various UNIX boxes.
Since cvs starts the child process using start-process (which
ultimately calls fork/execve on Unix) there really isn't a need to
quote arguments which contain spaces - there is no "command-line
parsing" to separate a string of tokens into an argv structure, the
argv is supplied to the execve call, and multi-word arguments occupy
only one slot in the argv structure. At least, this works on Unix.
In the case of MS-Win, there must be a differnence. In fact, reading
ntproc.c, I find the following comment:
DEFVAR_LISP ("win32-quote-process-args", &Vwin32_quote_process_args /*
Non-nil enables quoting of process arguments to ensure correct parsing.
Because Windows does not directly pass argv arrays to child processes,
programs have to reconstruct the argv array by parsing the command
line string. For an argument to contain a space, it must be enclosed
in double quotes or it will be parsed as multiple arguments.
I'll bet if you set win32-quote-process-args to 't your CVS commits
will work.
I'm not an NT hacker (anymore) so I won't attempt to fix this. But
reading ntproc.c sure does make me feel slightly ill! There's an
nt-quote-process-args, as well as a win32-quote-process-args. I don't
know why there are two different variables (and maybe I don't want to
know!) but it seems to me like the correct fix for your pcl-cvs
troubles lies here, in the innards of NT process creation, rather
than in pcl-cvs.el. Most lisp-packages are probably expecting
Unix-style process creation, where multi-word arguments don't need to
be quoted.
--
Ben
In order to save my hands, I am cutting back on my mail. I also write
as succinctly as possible -- please don't be offended. If you send me
mail, you _will_ get a response, but please be patient, especially for
XEmacs-related mail. If you need an immediate response and it is not
apparent in your message, please say so. Thanks for your understanding.
See also
http://www.666.com/ben/chronic-pain/