From 087fc47ace7797d2ef36ff167f7befd5f4ba01da Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 4 Jun 2010 16:13:35 +0200 Subject: [PATCH] Turn `directory-sep-char' into a noop. * lisp/subr.el (directory-sep-char): Move from fileio.c and make a defconst. * src/emacs.c (decode_env_path): Don't check DIRECTORY_SEP, call dostounix_filename directly. * src/fileio.c (CORRECT_DIR_SEPS): Remove. (Ffile_name_directory, directory_file_name, Fexpand_file_name) (Fsubstitute_in_file_name): Use dostounix_filename instead. (file_name_as_directory): Use dostounix_filename, DIRECTORY_SEP. (syms_of_fileio) : Move to subr.el. * src/lisp.h [WINDOWSNT] (Vdirectory_sep_char): Don't declare. (DIRECTORY_SEP): Define unconditionally. * src/w32proc.c (CORRECT_DIR_SEPS): Remove. (Fw32_short_file_name, Fw32_long_file_name): Use dostounix_filename. * src/s/ms-w32.h (DIRECTORY_SEP): Remove. --- lisp/ChangeLog | 4 ++++ lisp/subr.el | 6 +++++- src/ChangeLog | 21 +++++++++++++++++++++ src/emacs.c | 7 ++----- src/fileio.c | 29 +++++++++-------------------- src/lisp.h | 8 +------- src/s/ms-w32.h | 3 --- src/w32proc.c | 10 ++-------- 8 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4ce37b1996a..c90df7c810a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2010-06-04 Juanma Barranquero + + * subr.el (directory-sep-char): Move from fileio.c and make a defconst. + 2010-06-04 Michael Albinus * net/tramp-gvfs.el (tramp-gvfs-handle-expand-file-name): Expand "~/". diff --git a/lisp/subr.el b/lisp/subr.el index e7fbf31b2b7..16ba45f1c74 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1089,7 +1089,11 @@ is converted into a string by expressing it in decimal." (make-obsolete 'process-filter-multibyte-p nil "23.1") (make-obsolete 'set-process-filter-multibyte nil "23.1") -(make-obsolete-variable 'directory-sep-char "do not use it." "21.1") +(defconst directory-sep-char ?/ + "Directory separator character for built-in functions that return file names. +The value is always ?/.") +(make-obsolete-variable 'directory-sep-char "do not use it, just use `/'." "21.1") + (make-obsolete-variable 'mode-line-inverse-video "use the appropriate faces instead." diff --git a/src/ChangeLog b/src/ChangeLog index 728a442e86b..d938bd57fd7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,24 @@ +2010-06-04 Juanma Barranquero + + Turn `directory-sep-char' into a noop. + + * lisp.h [WINDOWSNT] (Vdirectory_sep_char): Don't declare. + (DIRECTORY_SEP): Define unconditionally. + + * s/ms-w32.h (DIRECTORY_SEP): Remove. + + * emacs.c (decode_env_path): Don't check DIRECTORY_SEP, + call dostounix_filename directly. + + * fileio.c (CORRECT_DIR_SEPS): Remove. + (Ffile_name_directory, directory_file_name, Fexpand_file_name) + (Fsubstitute_in_file_name): Use dostounix_filename instead. + (file_name_as_directory): Use dostounix_filename, DIRECTORY_SEP. + (syms_of_fileio) : Move to subr.el. + + * w32proc.c (CORRECT_DIR_SEPS): Remove. + (Fw32_short_file_name, Fw32_long_file_name): Use dostounix_filename. + 2010-06-03 Dan Nicolaescu Move UNEXEC definition to autoconf. diff --git a/src/emacs.c b/src/emacs.c index c0ef926da75..7e778e2e5fd 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1723,7 +1723,7 @@ main (int argc, char **argv) #endif init_window (); init_font (); - + if (!initialized) { char *file; @@ -2384,10 +2384,7 @@ decode_env_path (evarname, defalt) strcpy (p, path); path = p; - if ('/' == DIRECTORY_SEP) - dostounix_filename (path); - else - unixtodos_filename (path); + dostounix_filename (path); } #endif lpath = Qnil; diff --git a/src/fileio.c b/src/fileio.c index dc5ca37ff2f..8c2ee45c073 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -83,10 +83,6 @@ along with GNU Emacs. If not, see . */ #endif #ifdef DOS_NT -#define CORRECT_DIR_SEPS(s) \ - do { if ('/' == DIRECTORY_SEP) dostounix_filename (s); \ - else unixtodos_filename (s); \ - } while (0) /* On Windows, drive letters must be alphabetic - on DOS, the Netware redirector allows the six letters between 'Z' and 'a' as well. */ #ifdef MSDOS @@ -474,7 +470,7 @@ Given a Unix syntax file name, returns a string ending in slash. */) p = beg + strlen (beg); } } - CORRECT_DIR_SEPS (beg); + dostounix_filename (beg); #endif /* DOS_NT */ return make_specified_string (beg, -1, p - beg, STRING_MULTIBYTE (filename)); @@ -561,12 +557,11 @@ file_name_as_directory (out, in) /* For Unix syntax, Append a slash if necessary */ if (!IS_DIRECTORY_SEP (out[size])) { - /* Cannot use DIRECTORY_SEP, which could have any value */ - out[size + 1] = '/'; + out[size + 1] = DIRECTORY_SEP; out[size + 2] = '\0'; } #ifdef DOS_NT - CORRECT_DIR_SEPS (out); + dostounix_filename (out); #endif return out; } @@ -627,7 +622,7 @@ directory_file_name (src, dst) ) dst[slen - 1] = 0; #ifdef DOS_NT - CORRECT_DIR_SEPS (dst); + dostounix_filename (dst); #endif return 1; } @@ -1032,10 +1027,9 @@ filesystem tree, not (expand-file-name ".." dirname). */) if (!lose) { #ifdef DOS_NT - /* Make sure directories are all separated with / or \ as - desired, but avoid allocation of a new string when not - required. */ - CORRECT_DIR_SEPS (nm); + /* Make sure directories are all separated with /, but + avoid allocation of a new string when not required. */ + dostounix_filename (nm); #ifdef WINDOWSNT if (IS_DIRECTORY_SEP (nm[1])) { @@ -1381,7 +1375,7 @@ filesystem tree, not (expand-file-name ".." dirname). */) target[0] = '/'; target[1] = ':'; } - CORRECT_DIR_SEPS (target); + dostounix_filename (target); #endif /* DOS_NT */ result = make_specified_string (target, -1, o - target, multibyte); @@ -1659,7 +1653,7 @@ those `/' is discarded. */) bcopy (SDATA (filename), nm, SBYTES (filename) + 1); #ifdef DOS_NT - CORRECT_DIR_SEPS (nm); + dostounix_filename (nm); substituted = (strcmp (nm, SDATA (filename)) != 0); #endif endp = nm + SBYTES (filename); @@ -5787,11 +5781,6 @@ of file names regardless of the current language environment. */); Fput (Qfile_date_error, Qerror_message, make_pure_c_string ("Cannot set file date")); - DEFVAR_LISP ("directory-sep-char", &Vdirectory_sep_char, - doc: /* Directory separator character for built-in functions that return file names. -The value is always ?/. Don't use this variable, just use `/'. */); - XSETFASTINT (Vdirectory_sep_char, '/'); - DEFVAR_LISP ("file-name-handler-alist", &Vfile_name_handler_alist, doc: /* *Alist of elements (REGEXP . HANDLER) for file names handled specially. If a file name matches REGEXP, then all I/O on that file is done by calling diff --git a/src/lisp.h b/src/lisp.h index e17931ca366..7c6c85e6356 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3509,16 +3509,10 @@ extern char *egetenv P_ ((char *)); extern void init_system_name P_ ((void)); /* Some systems (e.g., NT) use a different path separator than Unix, - in addition to a device separator. Default the path separator + in addition to a device separator. Set the path separator to '/', and don't test for a device separator in IS_ANY_SEP. */ -#ifdef WINDOWSNT -extern Lisp_Object Vdirectory_sep_char; -#endif - -#ifndef DIRECTORY_SEP #define DIRECTORY_SEP '/' -#endif #ifndef IS_DIRECTORY_SEP #define IS_DIRECTORY_SEP(_c_) ((_c_) == DIRECTORY_SEP) #endif diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h index 2d6cc2f4bd5..1fcf73d2578 100644 --- a/src/s/ms-w32.h +++ b/src/s/ms-w32.h @@ -95,9 +95,6 @@ along with GNU Emacs. If not, see . */ your system and must be used only through an encapsulation (which you should place, by convention, in sysdep.c). */ -/* Define this to be the separator between path elements. */ -#define DIRECTORY_SEP XINT (Vdirectory_sep_char) - /* Define this to be the separator between devices and paths. */ #define DEVICE_SEP ':' diff --git a/src/w32proc.c b/src/w32proc.c index 9d4d58f1230..b8443e5a75b 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -1762,12 +1762,6 @@ socket connections still exist. */) /* Some miscellaneous functions that are Windows specific, but not GUI specific (ie. are applicable in terminal or batch mode as well). */ -/* lifted from fileio.c */ -#define CORRECT_DIR_SEPS(s) \ - do { if ('/' == DIRECTORY_SEP) dostounix_filename (s); \ - else unixtodos_filename (s); \ - } while (0) - DEFUN ("w32-short-file-name", Fw32_short_file_name, Sw32_short_file_name, 1, 1, 0, doc: /* Return the short file name version (8.3) of the full path of FILENAME. If FILENAME does not exist, return nil. @@ -1786,7 +1780,7 @@ All path elements in FILENAME are converted to their short names. */) if (GetShortPathName (SDATA (ENCODE_FILE (filename)), shortname, MAX_PATH) == 0) return Qnil; - CORRECT_DIR_SEPS (shortname); + dostounix_filename (shortname); return build_string (shortname); } @@ -1815,7 +1809,7 @@ All path elements in FILENAME are converted to their long names. */) if (!w32_get_long_filename (SDATA (ENCODE_FILE (filename)), longname, MAX_PATH)) return Qnil; - CORRECT_DIR_SEPS (longname); + dostounix_filename (longname); /* If we were passed only a drive, make sure that a slash is not appended for consistency with directories. Allow for drive mapping via SUBST -- 2.39.2