[cvsnt] Re: loginfo bug ?

Russell Yanofsky rey4 at columbia.edu
Tue Jun 24 11:12:15 BST 2003


If you tried using a line like

    ALL "C:\Program Files\CVSMailer\CVSmailer.exe" %{sVv} "$USER"

It will not work. This is NOT because CVSNT "parses out data" or "does
not make use of double quotes." The reason is the way cmd.exe handles
double quotes. From the cmd.exe documentation:

    [cmd.exe's] behavior is to see if the first character is
    a quote character and if so, strip the leading character
    and remove the last quote character on the command line.

Since the first character is a quote, it and the last quote character
will be stripped. So, the command that gets executed looks like:

    C:\Program Files\CVSMailer\CVSmailer.exe" "dir file,1.1,1.2" "user

which is obviously invalid.

The solution is to use the following line:

    ALL ""C:\Program Files\CVSMailer\CVSmailer.exe" %{sVv} "$USER""

When this is passed to cmd.exe, it will strip off the first and last
quotes, and be able execute the resulting string without a problem.

- Russ

> -----Original Message-----
> From: Bo Berglund [mailto:Bo.Berglund at system3r.se]
> Sent: Tuesday, June 24, 2003 4:08 AM
> To: Russell Yanofsky; cvsnt at cvsnt.org
> Subject: RE: [cvsnt] Re: loginfo bug ?
> 
> Possibly, but I had my problem in the very first item after the
regulat
> expression:
> ALL C:\Program Files\CVSMailer\CVSmailer.exe blah blah blah
> results in CVSNT trying to execute
> C:\Program
> with the first argument
> Files\CVSMailer\CVSmailer.exe
> 
> Putting quotes around the program name did not help at all, so I
forced
> the setup
> to install to C:\Programs\CVSMailer\CVSMailer.exe instead (no spaces
in
> path).
> Then it started working again.
> 
> /Bo
> 
> 
> -----Original Message-----
> From: Russell Yanofsky [mailto:rey4 at columbia.edu]
> Sent: den 23 juni 2003 23:42
> To: cvsnt at cvsnt.org
> Subject: [cvsnt] Re: loginfo bug ?
> 
> 
> Bo Berglund wrote:
> > I think that the commands given on the script lines are actually not
> > passed "as is" to cmd.exe. Instead CVS itself seems to parse out the
> > data and in doing so it does not make use of the double quotes as
> > cmd.exe does.
> 
> AFAICT, the only change CVSNT makes to the script line is to replace
> %{sVv} with
> an argument containing the specified data. The argument is quoted if
> necessary.
> 
> > End result is:
> > You cannot have extra spaces in either the command program itself or
> > in the arguments.
> 
> Again AFAICT, CVSNT seems to leave spaces on the script line intact.
And
> when it
> expands %{sVv,}it escapes any spaces in folder or file names by
preceding
> them
> with a backslash.
> 
> - Russ
> 
> 
> _______________________________________________
> cvsnt mailing list
> cvsnt at cvsnt.org
> http://www.cvsnt.org/cgi-bin/mailman/listinfo/cvsnt



More information about the cvsnt mailing list