diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2018-11-19 11:36:50 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2018-11-19 11:38:21 -0800 |
commit | 0e3b24586202fc60e7d8a9bff4640e76e6d54e9c (patch) | |
tree | 21d981704d5147c60f14df772a84df7b525f7f1f /lib-src | |
parent | 736f1b364f8d57f7f0ea358d9c024ca628a0dbec (diff) | |
download | emacs-0e3b24586202fc60e7d8a9bff4640e76e6d54e9c.tar.gz |
emacsclient.c: file name component fixes
* lib-src/emacsclient.c: Include <dosname.h>.
(file_name_absolute_p): Remove, as a code duplicate.
All uses replaced by IS_ABSOLUTE_FILE_NAME.
(set_local_socket): Don’t treat \ as a file name separator
on GNU and POSIX hosts.
Diffstat (limited to 'lib-src')
-rw-r--r-- | lib-src/emacsclient.c | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 5c4e71a4925..808755ef604 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -81,6 +81,7 @@ char *w32_getenv (const char *); #include <sys/stat.h> #include <unistd.h> +#include <dosname.h> #include <min-max.h> #include <unlocked-io.h> @@ -888,31 +889,6 @@ unquote_argument (char *str) } -static bool -file_name_absolute_p (const char *filename) -{ - /* Sanity check, it shouldn't happen. */ - if (! filename) return false; - - /* /xxx is always an absolute path. */ - if (filename[0] == '/') return true; - - /* Empty filenames (which shouldn't happen) are relative. */ - if (filename[0] == '\0') return false; - -# ifdef WINDOWSNT - /* X:\xxx is always absolute. */ - if (isalpha ((unsigned char) filename[0]) - && filename[1] == ':' && (filename[2] == '\\' || filename[2] == '/')) - return true; - - /* Both \xxx and \\xxx\yyy are absolute. */ - if (filename[0] == '\\') return true; -# endif - - return false; -} - # ifdef WINDOWSNT /* Wrapper to make WSACleanup a cdecl, as required by atexit. */ void __cdecl close_winsock (void); @@ -951,7 +927,7 @@ get_server_config (const char *config_file, struct sockaddr_in *server, char *port; FILE *config = NULL; - if (file_name_absolute_p (config_file)) + if (IS_ABSOLUTE_FILE_NAME (config_file)) config = fopen (config_file, "rb"); else { @@ -1241,7 +1217,8 @@ set_local_socket (const char *local_socket_name) char *tmpdir_storage = NULL; char *socket_name_storage = NULL; - if (!strchr (local_socket_name, '/') && !strchr (local_socket_name, '\\')) + if (! (strchr (local_socket_name, '/') + || (ISSLASH ('\\') && strchr (local_socket_name, '\\')))) { /* socket_name is a file name component. */ long uid = geteuid (); @@ -1809,7 +1786,7 @@ main (int argc, char **argv) } } # ifdef WINDOWSNT - else if (! file_name_absolute_p (argv[i]) + else if (! IS_ABSOLUTE_FILE_NAME (argv[i]) && (isalpha (argv[i][0]) && argv[i][1] == ':')) /* Windows can have a different default directory for each drive, so the cwd passed via "-dir" is not sufficient @@ -1830,7 +1807,7 @@ main (int argc, char **argv) # endif send_to_emacs (emacs_socket, "-file "); - if (tramp_prefix && file_name_absolute_p (argv[i])) + if (tramp_prefix && IS_ABSOLUTE_FILE_NAME (argv[i])) quote_argument (emacs_socket, tramp_prefix); quote_argument (emacs_socket, argv[i]); send_to_emacs (emacs_socket, " "); |