# HG changeset patch # User Dan Nicolaescu # Date 1179332066 0 # Node ID 9aa8a3a78f9e9bb4c6ae0645deb9a16f4629580f # Parent 97b49919580120bef76fa1caddfd5f76c80df681 * emacsclient.c (s): Restore. (main): Don't define s here. (w32_execvp): Move definition before use. diff -r 97b499195801 -r 9aa8a3a78f9e lib-src/ChangeLog.multi-tty --- a/lib-src/ChangeLog.multi-tty Wed May 16 10:13:25 2007 +0000 +++ b/lib-src/ChangeLog.multi-tty Wed May 16 16:14:26 2007 +0000 @@ -1,3 +1,9 @@ +2007-05-16 Dan Nicolaescu + + * emacsclient.c (s): Restore. + (main): Don't define s here. + (w32_execvp): Move definition before use. + 2007-05-16 Jason Rumney * emacsclient.c (s): Remove. diff -r 97b499195801 -r 9aa8a3a78f9e lib-src/emacsclient.c --- a/lib-src/emacsclient.c Wed May 16 10:13:25 2007 +0000 +++ b/lib-src/emacsclient.c Wed May 16 16:14:26 2007 +0000 @@ -172,7 +172,7 @@ int emacs_pid = 0; /* Socket used to communicate with the Emacs server process. */ -/*HSOCKET s;*/ +HSOCKET s; void print_help_and_exit () NO_RETURN; @@ -314,7 +314,41 @@ return window_app; } -#endif + +/* + execvp wrapper for Windows. Quotes arguments with embedded spaces. + + This is necessary due to the broken implementation of exec* routines in + the Microsoft libraries: they concatenate the arguments together without + quoting special characters, and pass the result to CreateProcess, with + predictably bad results. By contrast, Posix execvp passes the arguments + directly into the argv array of the child process. +*/ +int +w32_execvp (path, argv) + char *path; + char **argv; +{ + int i; + + /* Required to allow a .BAT script as alternate editor. */ + argv[0] = (char *) alternate_editor; + + for (i = 0; argv[i]; i++) + if (strchr (argv[i], ' ')) + { + char *quoted = alloca (strlen (argv[i]) + 3); + sprintf (quoted, "\"%s\"", argv[i]); + argv[i] = quoted; + } + + return execvp (path, argv); +} + +#undef execvp +#define execvp w32_execvp + +#endif /* WINDOWSNT */ void message (int is_error, char *message, ...) @@ -736,43 +770,6 @@ #endif /* WINDOWSNT */ -#ifdef WINDOWSNT - -/* - execvp wrapper for Windows. Quotes arguments with embedded spaces. - - This is necessary due to the broken implementation of exec* routines in - the Microsoft libraries: they concatenate the arguments together without - quoting special characters, and pass the result to CreateProcess, with - predictably bad results. By contrast, Posix execvp passes the arguments - directly into the argv array of the child process. -*/ -int -w32_execvp (path, argv) - char *path; - char **argv; -{ - int i; - - /* Required to allow a .BAT script as alternate editor. */ - argv[0] = (char *) alternate_editor; - - for (i = 0; argv[i]; i++) - if (strchr (argv[i], ' ')) - { - char *quoted = alloca (strlen (argv[i]) + 3); - sprintf (quoted, "\"%s\"", argv[i]); - argv[i] = quoted; - } - - return execvp (path, argv); -} - -#undef execvp -#define execvp w32_execvp - -#endif /* WINDOWSNT */ - /* * Read the information needed to set up a TCP comm channel with * the Emacs server: host, port, pid and authentication string. @@ -1265,7 +1262,6 @@ int argc; char **argv; { - HSOCKET s; int i, rl, needlf = 0; char *cwd, *str; char string[BUFSIZ+1];