This is the mail archive of the cygwin 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]

cygwin programs called from non-cygwin programs mauling \" in args

Given a simple child process that prints its argument, and a parent
that execs it passing a\"b\"c, trying combinations of cygwin and non-
cygwin parent and child shows inconsistency in what's received:

$ cat child.c
#include <stdio.h>
int main(int argc, char **argv)
  printf("[%s]\n", argv[1]);
  return 0;

$ cat parent.c
#include <unistd.h>
int main(int argc, char **argv) {
  char *args[] = { argv[1], "a\\\"b\\\"c", 0};
  execv( argv[1], args);
  return 1;

$ gcc -mno-cygwin -Wall child.c -o nocygchild

$ gcc -mno-cygwin -Wall parent.c -o nocygparent
parent.c: In function `main':
parent.c:4: warning: passing arg 2 of `execv' from incompatible pointer type

$ gcc -Wall child.c -o cygchild

$ gcc -Wall parent.c -o cygparent

$ ./cygparent cygchild

$ ./cygparent nocygchild

$ ./nocygparent cygchild

$ ./nocygparent nocygchild

The a\b"c definitely looks like something going wrong.

(This is breaking things for me when using gcc from a non-cygwin make

Unsubscribe info:
Problem reports:

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