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.