diff options
| author | Richard M. Stallman | 1996-05-11 21:23:08 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1996-05-11 21:23:08 +0000 |
| commit | 21319b18dcf11b86a5941ff11e9d6435ce1ab9f4 (patch) | |
| tree | 4495a72b921d5b9065bb937b83110cfcc1c1873d /src | |
| parent | 4d105bce0a558228617fbccee8d95a8e7da28cc7 (diff) | |
| download | emacs-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.c | 34 |
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, ... */ |
| 2093 | void msdos_downcase_filename (unsigned char *); | ||
| 2093 | 2094 | ||
| 2094 | int | 2095 | int |
| 2095 | getdefdir (drive, dst) | 2096 | getdefdir (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 | |||
| 2235 | void | ||
| 2236 | msdos_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 | |||
| 2246 | DEFUN ("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\ | ||
| 2249 | When 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 */ |