Mercurial > emacs
changeset 83600:9aa8a3a78f9e
* emacsclient.c (s): Restore.
(main): Don't define s here.
(w32_execvp): Move definition before use.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Wed, 16 May 2007 16:14:26 +0000 |
parents | 97b499195801 |
children | 8365dbf64d14 |
files | lib-src/ChangeLog.multi-tty lib-src/emacsclient.c |
diffstat | 2 files changed, 42 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- 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 <dann@ics.uci.edu> + + * emacsclient.c (s): Restore. + (main): Don't define s here. + (w32_execvp): Move definition before use. + 2007-05-16 Jason Rumney <jasonr@gnu.org> * emacsclient.c (s): Remove.
--- 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];