diff options
author | Dan Nicolaescu <dann@ics.uci.edu> | 2007-05-16 16:14:26 +0000 |
---|---|---|
committer | Dan Nicolaescu <dann@ics.uci.edu> | 2007-05-16 16:14:26 +0000 |
commit | 105faa8427cdb6738c01c3c3b0f7274749f8f259 (patch) | |
tree | 46d54158020a151d6e75d2367a6d9610df7d8570 /lib-src | |
parent | fa7a701fe384e93dcefee2623dd813d685089faf (diff) | |
download | emacs-105faa8427cdb6738c01c3c3b0f7274749f8f259.tar.gz |
* emacsclient.c (s): Restore.
(main): Don't define s here.
(w32_execvp): Move definition before use.
Diffstat (limited to 'lib-src')
-rw-r--r-- | lib-src/ChangeLog.multi-tty | 6 | ||||
-rw-r--r-- | lib-src/emacsclient.c | 76 |
2 files changed, 42 insertions, 40 deletions
diff --git a/lib-src/ChangeLog.multi-tty b/lib-src/ChangeLog.multi-tty index 1c55d3d9845..21862e5ed32 100644 --- a/lib-src/ChangeLog.multi-tty +++ b/lib-src/ChangeLog.multi-tty @@ -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. diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index b155035f760..cf03430e9c5 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -172,7 +172,7 @@ char *server_file = NULL; 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 @@ w32_window_app () 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 @@ initialize_sockets () #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 @@ main (argc, argv) int argc; char **argv; { - HSOCKET s; int i, rl, needlf = 0; char *cwd, *str; char string[BUFSIZ+1]; |