aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1996-05-11 21:23:08 +0000
committerRichard M. Stallman1996-05-11 21:23:08 +0000
commit21319b18dcf11b86a5941ff11e9d6435ce1ab9f4 (patch)
tree4495a72b921d5b9065bb937b83110cfcc1c1873d /src
parent4d105bce0a558228617fbccee8d95a8e7da28cc7 (diff)
downloademacs-21319b18dcf11b86a5941ff11e9d6435ce1ab9f4.tar.gz
emacs-21319b18dcf11b86a5941ff11e9d6435ce1ab9f4.zip
(msdos_downcase_filename): New function to convert case in filenames.
(Fmsdos_downcase_filename): New function. (syms_of_msdos): Defsubr it.
Diffstat (limited to 'src')
-rw-r--r--src/msdos.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/msdos.c b/src/msdos.c
index 626119a0c00..d71787feb4c 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -2090,6 +2090,7 @@ unixtodos_filename (p)
2090} 2090}
2091 2091
2092/* Get the default directory for a given drive. 0=def, 1=A, 2=B, ... */ 2092/* Get the default directory for a given drive. 0=def, 1=A, 2=B, ... */
2093void msdos_downcase_filename (unsigned char *);
2093 2094
2094int 2095int
2095getdefdir (drive, dst) 2096getdefdir (drive, dst)
@@ -2113,11 +2114,7 @@ getdefdir (drive, dst)
2113 if (errno) 2114 if (errno)
2114 return 0; 2115 return 0;
2115 2116
2116 /* Under LFN we expect to get pathnames in their true case. */ 2117 msdos_downcase_filename (dst);
2117 if (! (_USE_LFN))
2118 for (p = dst; *p; p++)
2119 if (*p >= 'A' && *p <= 'Z')
2120 *p += 'a' - 'A';
2121 2118
2122 errno = e; 2119 errno = e;
2123 return 1; 2120 return 1;
@@ -2232,6 +2229,32 @@ DEFUN ("msdos-long-file-names", Fmsdos_long_file_names, Smsdos_long_file_names,
2232{ 2229{
2233 return (_USE_LFN ? Qt : Qnil); 2230 return (_USE_LFN ? Qt : Qnil);
2234} 2231}
2232
2233/* Convert alphabetic characters in a filename to lower-case. */
2234
2235void
2236msdos_downcase_filename (p)
2237 register unsigned char *p;
2238{
2239 /* Under LFN we expect to get pathnames in their true case. */
2240 if (NILP (Fmsdos_long_file_names ()))
2241 for ( ; *p; p++)
2242 if (*p >= 'A' && *p <= 'Z')
2243 *p += 'a' - 'A';
2244}
2245
2246DEFUN ("msdos-downcase-filename", Fmsdos_downcase_filename, Smsdos_downcase_filename,
2247 1, 1, 0,
2248 "Convert alphabetic characters in FILENAME to lower case and return that.\n\
2249When long filenames are supported, doesn't change FILENAME.")
2250 (filename)
2251 Lisp_Object filename;
2252{
2253 char *fname = XSTRING (filename)->data;
2254
2255 msdos_downcase_filename (fname);
2256 return make_string (fname, XSTRING (filename)->size);
2257}
2235 2258
2236/* The Emacs root directory as determined by init_environment. */ 2259/* The Emacs root directory as determined by init_environment. */
2237 2260
@@ -2924,6 +2947,7 @@ syms_of_msdos ()
2924 2947
2925 defsubr (&Srecent_doskeys); 2948 defsubr (&Srecent_doskeys);
2926 defsubr (&Smsdos_long_file_names); 2949 defsubr (&Smsdos_long_file_names);
2950 defsubr (&Smsdos_downcase_filename);
2927} 2951}
2928 2952
2929#endif /* MSDOS */ 2953#endif /* MSDOS */