This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

sprintf question.


I have, what I hope, is a easy question about sprintf under cygwin.

In a nutshell, it looks like system or sprintf is chopping off any
backslashes that get passed in.  Example below.

C:\work\COMPILER\ee>gcc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)


sprintfExample.c
----CUT HERE----
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char backslashes[] = "C:\\winnt\\system32\\notepad.exe";
    char result[128];
    int retval;

    printf("printf says \"%s\"\n",backslashes);
    sprintf(result,"%s",backslashes);

    retval = system(result);

    return(0);
}
----END CUT----

compile it...
C:\work\COMPILER\ee>gcc sprintfRevision.c -o sprintf.exe

run it...
C:\work\COMPILER\ee>sprintf.exe
printf says "C:\winnt\system32\notepad.exe"
C:winntsystem32notepad.exe: not found


I've looked through the GNU LibC manual (PDF), the man pages, and the cygwin
docs, and I don't see any mention of this.
Am I just missing something easy?  Is this a bug?

If I change the 
char backslashes[] = "C:\\winnt\\system32\\notepad.exe";
to be 
char backslashes[] = "C:'\\'winnt'\\'system32'\\'notepad.exe";
it works as expected (fires up notepad).

What am I missing here guys?


C. Pitts


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]