aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJim Blandy1992-12-12 15:32:51 +0000
committerJim Blandy1992-12-12 15:32:51 +0000
commit642ef2454b011a69bd615f2f9f34c4c6c7ae1679 (patch)
tree943c2eefcc157f0e12bc547eb0782de9f5b0e0eb /src
parent58616e67550336ab0555ed21d4f32c329d77bf88 (diff)
downloademacs-642ef2454b011a69bd615f2f9f34c4c6c7ae1679.tar.gz
emacs-642ef2454b011a69bd615f2f9f34c4c6c7ae1679.zip
Give subprocess creation a way to find a valid current directory
for subprocesses when the buffer's default-directory is a handled name. * fileio.c (Funhandled_file_name_directory): New function. (Qunhandled_file_name_directory): New file-name-handler operation. (syms_of_fileio): Defsubr Sunhandled_file_name_directory, and initialize and staticpro Qunhandled_file_name_directory. * callproc.c (Fcall_process): Call Funhandled_file_name_directory on the buffer's default directory. Do it earlier in the function so there's less to GCPRO. * process.c (create_process): Don't check the validity of the buffer's default directory here... (Fstart_process): Instead, do it here; if we call Funhandled_file_name_directory here, there's less GCPROing to do. * fileio.c (find_file_handler): Rename this to Ffind_file_name_handler, and make it visible to lisp. Add a QUIT to the loop which scans file-name-handler-alist. All uses changed. (syms_of_fileio): Mention this new function in the docstring for Vfile_name_handler_alist. defsubr Sfind_file_name_handler. * lisp.h (Ffind_file_name_handler): Added extern declaration. * dired.c: All uses of find_file_handler changed here too. * fileio.c (syms_of_fileio): Add staticpros for Qexpand_file_name, Qdirectory_file_name, Qfile_name_directory, Qfile_name_nondirectory, Qfile_name_as_directory.
Diffstat (limited to 'src')
-rw-r--r--src/fileio.c114
1 files changed, 77 insertions, 37 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 58b7972a757..f96dd00af34 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -133,6 +133,7 @@ Lisp_Object Qexpand_file_name;
133Lisp_Object Qdirectory_file_name; 133Lisp_Object Qdirectory_file_name;
134Lisp_Object Qfile_name_directory; 134Lisp_Object Qfile_name_directory;
135Lisp_Object Qfile_name_nondirectory; 135Lisp_Object Qfile_name_nondirectory;
136Lisp_Object Qunhandled_file_name_directory;
136Lisp_Object Qfile_name_as_directory; 137Lisp_Object Qfile_name_as_directory;
137Lisp_Object Qcopy_file; 138Lisp_Object Qcopy_file;
138Lisp_Object Qmake_directory; 139Lisp_Object Qmake_directory;
@@ -155,13 +156,16 @@ Lisp_Object Qinsert_file_contents;
155Lisp_Object Qwrite_region; 156Lisp_Object Qwrite_region;
156Lisp_Object Qverify_visited_file_modtime; 157Lisp_Object Qverify_visited_file_modtime;
157 158
158/* If FILENAME is handled specially on account of its syntax, 159DEFUN ("find-file-name-handler", Ffind_file_name_handler, Sfind_file_name_handler, 1, 1, 0,
159 return its handler function. Otherwise, return nil. */ 160 "Return FILENAME's handler function, if its syntax is handled specially.\n\
160 161Otherwise, return nil.\n\
161Lisp_Object 162A file name is handled if one of the regular expressions in\n\
162find_file_handler (filename) 163`file-name-handler-alist' matches it.")
163 Lisp_Object filename; 164 (filename)
165 Lisp_Object filename;
164{ 166{
167 /* This function must not munge the match data. */
168
165 Lisp_Object chain; 169 Lisp_Object chain;
166 for (chain = Vfile_name_handler_alist; XTYPE (chain) == Lisp_Cons; 170 for (chain = Vfile_name_handler_alist; XTYPE (chain) == Lisp_Cons;
167 chain = XCONS (chain)->cdr) 171 chain = XCONS (chain)->cdr)
@@ -176,6 +180,8 @@ find_file_handler (filename)
176 && fast_string_match (string, filename) >= 0) 180 && fast_string_match (string, filename) >= 0)
177 return XCONS (elt)->cdr; 181 return XCONS (elt)->cdr;
178 } 182 }
183
184 QUIT;
179 } 185 }
180 return Qnil; 186 return Qnil;
181} 187}
@@ -198,7 +204,7 @@ on VMS, perhaps instead a string ending in `:', `]' or `>'.")
198 204
199 /* If the file name has special constructs in it, 205 /* If the file name has special constructs in it,
200 call the corresponding file handler. */ 206 call the corresponding file handler. */
201 handler = find_file_handler (file); 207 handler = Ffind_file_name_handler (file);
202 if (!NILP (handler)) 208 if (!NILP (handler))
203 return call2 (handler, Qfile_name_directory, file); 209 return call2 (handler, Qfile_name_directory, file);
204 210
@@ -232,7 +238,7 @@ or the entire name if it contains no slash.")
232 238
233 /* If the file name has special constructs in it, 239 /* If the file name has special constructs in it,
234 call the corresponding file handler. */ 240 call the corresponding file handler. */
235 handler = find_file_handler (file); 241 handler = Ffind_file_name_handler (file);
236 if (!NILP (handler)) 242 if (!NILP (handler))
237 return call2 (handler, Qfile_name_nondirectory, file); 243 return call2 (handler, Qfile_name_nondirectory, file);
238 244
@@ -247,6 +253,29 @@ or the entire name if it contains no slash.")
247 253
248 return make_string (p, end - p); 254 return make_string (p, end - p);
249} 255}
256
257DEFUN ("unhandled-file-name-directory", Funhandled_file_name_directory, Sunhandled_file_name_directory, 1, 1, 0,
258 "Return a directly usable directory name somehow associated with FILENAME.\n\
259A `directly usable' directory name is one that may be used without the\n\
260intervention of any file handler.\n\
261If FILENAME is a directly usable file itself, return\n\
262(file-name-directory FILENAME).\n\
263The `call-process' and `start-process' functions use this function to\n\
264get a current directory to run processes in.")
265 (filename)
266 Lisp_Object filename;
267{
268 Lisp_Object handler;
269
270 /* If the file name has special constructs in it,
271 call the corresponding file handler. */
272 handler = Ffind_file_name_handler (filename);
273 if (!NILP (handler))
274 return call2 (handler, Qunhandled_file_name_directory, filename);
275
276 return Ffile_name_directory (filename);
277}
278
250 279
251char * 280char *
252file_name_as_directory (out, in) 281file_name_as_directory (out, in)
@@ -342,7 +371,7 @@ On VMS, converts \"[X]FOO.DIR\" to \"[X.FOO]\", etc.")
342 371
343 /* If the file name has special constructs in it, 372 /* If the file name has special constructs in it,
344 call the corresponding file handler. */ 373 call the corresponding file handler. */
345 handler = find_file_handler (file); 374 handler = Ffind_file_name_handler (file);
346 if (!NILP (handler)) 375 if (!NILP (handler))
347 return call2 (handler, Qfile_name_as_directory, file); 376 return call2 (handler, Qfile_name_as_directory, file);
348 377
@@ -518,7 +547,7 @@ it returns a file name such as \"[X]Y.DIR.1\".")
518 547
519 /* If the file name has special constructs in it, 548 /* If the file name has special constructs in it,
520 call the corresponding file handler. */ 549 call the corresponding file handler. */
521 handler = find_file_handler (directory); 550 handler = Ffind_file_name_handler (directory);
522 if (!NILP (handler)) 551 if (!NILP (handler))
523 return call2 (handler, Qdirectory_file_name, directory); 552 return call2 (handler, Qdirectory_file_name, directory);
524 553
@@ -583,7 +612,7 @@ See also the function `substitute-in-file-name'.")
583 612
584 /* If the file name has special constructs in it, 613 /* If the file name has special constructs in it,
585 call the corresponding file handler. */ 614 call the corresponding file handler. */
586 handler = find_file_handler (name); 615 handler = Ffind_file_name_handler (name);
587 if (!NILP (handler)) 616 if (!NILP (handler))
588 return call3 (handler, Qexpand_file_name, name, defalt); 617 return call3 (handler, Qexpand_file_name, name, defalt);
589 618
@@ -1519,11 +1548,11 @@ A prefix arg makes KEEP-TIME non-nil.")
1519 1548
1520 /* If the input file name has special constructs in it, 1549 /* If the input file name has special constructs in it,
1521 call the corresponding file handler. */ 1550 call the corresponding file handler. */
1522 handler = find_file_handler (filename); 1551 handler = Ffind_file_name_handler (filename);
1523 if (!NILP (handler)) 1552 if (!NILP (handler))
1524 return call3 (handler, Qcopy_file, filename, newname); 1553 return call3 (handler, Qcopy_file, filename, newname);
1525 /* Likewise for output file name. */ 1554 /* Likewise for output file name. */
1526 handler = find_file_handler (newname); 1555 handler = Ffind_file_name_handler (newname);
1527 if (!NILP (handler)) 1556 if (!NILP (handler))
1528 return call3 (handler, Qcopy_file, filename, newname); 1557 return call3 (handler, Qcopy_file, filename, newname);
1529 1558
@@ -1594,7 +1623,7 @@ DEFUN ("make-directory-internal", Fmake_directory_internal,
1594 CHECK_STRING (dirname, 0); 1623 CHECK_STRING (dirname, 0);
1595 dirname = Fexpand_file_name (dirname, Qnil); 1624 dirname = Fexpand_file_name (dirname, Qnil);
1596 1625
1597 handler = find_file_handler (dirname); 1626 handler = Ffind_file_name_handler (dirname);
1598 if (!NILP (handler)) 1627 if (!NILP (handler))
1599 return call3 (handler, Qmake_directory, dirname, Qnil); 1628 return call3 (handler, Qmake_directory, dirname, Qnil);
1600 1629
@@ -1618,7 +1647,7 @@ DEFUN ("delete-directory", Fdelete_directory, Sdelete_directory, 1, 1, "FDelete
1618 dirname = Fexpand_file_name (dirname, Qnil); 1647 dirname = Fexpand_file_name (dirname, Qnil);
1619 dir = XSTRING (dirname)->data; 1648 dir = XSTRING (dirname)->data;
1620 1649
1621 handler = find_file_handler (dirname); 1650 handler = Ffind_file_name_handler (dirname);
1622 if (!NILP (handler)) 1651 if (!NILP (handler))
1623 return call2 (handler, Qdelete_directory, dirname); 1652 return call2 (handler, Qdelete_directory, dirname);
1624 1653
@@ -1638,7 +1667,7 @@ If file has multiple names, it continues to exist with the other names.")
1638 CHECK_STRING (filename, 0); 1667 CHECK_STRING (filename, 0);
1639 filename = Fexpand_file_name (filename, Qnil); 1668 filename = Fexpand_file_name (filename, Qnil);
1640 1669
1641 handler = find_file_handler (filename); 1670 handler = Ffind_file_name_handler (filename);
1642 if (!NILP (handler)) 1671 if (!NILP (handler))
1643 return call2 (handler, Qdelete_file, filename); 1672 return call2 (handler, Qdelete_file, filename);
1644 1673
@@ -1672,7 +1701,7 @@ This is what happens in interactive use with M-x.")
1672 1701
1673 /* If the file name has special constructs in it, 1702 /* If the file name has special constructs in it,
1674 call the corresponding file handler. */ 1703 call the corresponding file handler. */
1675 handler = find_file_handler (filename); 1704 handler = Ffind_file_name_handler (filename);
1676 if (!NILP (handler)) 1705 if (!NILP (handler))
1677 return call3 (handler, Qrename_file, filename, newname); 1706 return call3 (handler, Qrename_file, filename, newname);
1678 1707
@@ -1731,7 +1760,7 @@ This is what happens in interactive use with M-x.")
1731 1760
1732 /* If the file name has special constructs in it, 1761 /* If the file name has special constructs in it,
1733 call the corresponding file handler. */ 1762 call the corresponding file handler. */
1734 handler = find_file_handler (filename); 1763 handler = Ffind_file_name_handler (filename);
1735 if (!NILP (handler)) 1764 if (!NILP (handler))
1736 return call3 (handler, Qadd_name_to_file, filename, newname); 1765 return call3 (handler, Qadd_name_to_file, filename, newname);
1737 1766
@@ -1782,7 +1811,7 @@ This happens for interactive use with M-x.")
1782 1811
1783 /* If the file name has special constructs in it, 1812 /* If the file name has special constructs in it,
1784 call the corresponding file handler. */ 1813 call the corresponding file handler. */
1785 handler = find_file_handler (filename); 1814 handler = Ffind_file_name_handler (filename);
1786 if (!NILP (handler)) 1815 if (!NILP (handler))
1787 return call3 (handler, Qmake_symbolic_link, filename, linkname); 1816 return call3 (handler, Qmake_symbolic_link, filename, linkname);
1788 1817
@@ -1899,7 +1928,7 @@ See also `file-readable-p' and `file-attributes'.")
1899 1928
1900 /* If the file name has special constructs in it, 1929 /* If the file name has special constructs in it,
1901 call the corresponding file handler. */ 1930 call the corresponding file handler. */
1902 handler = find_file_handler (abspath); 1931 handler = Ffind_file_name_handler (abspath);
1903 if (!NILP (handler)) 1932 if (!NILP (handler))
1904 return call2 (handler, Qfile_exists_p, abspath); 1933 return call2 (handler, Qfile_exists_p, abspath);
1905 1934
@@ -1921,7 +1950,7 @@ For directories this means you can change to that directory.")
1921 1950
1922 /* If the file name has special constructs in it, 1951 /* If the file name has special constructs in it,
1923 call the corresponding file handler. */ 1952 call the corresponding file handler. */
1924 handler = find_file_handler (abspath); 1953 handler = Ffind_file_name_handler (abspath);
1925 if (!NILP (handler)) 1954 if (!NILP (handler))
1926 return call2 (handler, Qfile_executable_p, abspath); 1955 return call2 (handler, Qfile_executable_p, abspath);
1927 1956
@@ -1942,7 +1971,7 @@ See also `file-exists-p' and `file-attributes'.")
1942 1971
1943 /* If the file name has special constructs in it, 1972 /* If the file name has special constructs in it,
1944 call the corresponding file handler. */ 1973 call the corresponding file handler. */
1945 handler = find_file_handler (abspath); 1974 handler = Ffind_file_name_handler (abspath);
1946 if (!NILP (handler)) 1975 if (!NILP (handler))
1947 return call2 (handler, Qfile_readable_p, abspath); 1976 return call2 (handler, Qfile_readable_p, abspath);
1948 1977
@@ -1968,7 +1997,7 @@ Otherwise returns NIL.")
1968 1997
1969 /* If the file name has special constructs in it, 1998 /* If the file name has special constructs in it,
1970 call the corresponding file handler. */ 1999 call the corresponding file handler. */
1971 handler = find_file_handler (filename); 2000 handler = Ffind_file_name_handler (filename);
1972 if (!NILP (handler)) 2001 if (!NILP (handler))
1973 return call2 (handler, Qfile_symlink_p, filename); 2002 return call2 (handler, Qfile_symlink_p, filename);
1974 2003
@@ -2011,7 +2040,7 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0,
2011 2040
2012 /* If the file name has special constructs in it, 2041 /* If the file name has special constructs in it,
2013 call the corresponding file handler. */ 2042 call the corresponding file handler. */
2014 handler = find_file_handler (abspath); 2043 handler = Ffind_file_name_handler (abspath);
2015 if (!NILP (handler)) 2044 if (!NILP (handler))
2016 return call2 (handler, Qfile_writable_p, abspath); 2045 return call2 (handler, Qfile_writable_p, abspath);
2017 2046
@@ -2041,7 +2070,7 @@ if the directory so specified exists and really is a directory.")
2041 2070
2042 /* If the file name has special constructs in it, 2071 /* If the file name has special constructs in it,
2043 call the corresponding file handler. */ 2072 call the corresponding file handler. */
2044 handler = find_file_handler (abspath); 2073 handler = Ffind_file_name_handler (abspath);
2045 if (!NILP (handler)) 2074 if (!NILP (handler))
2046 return call2 (handler, Qfile_directory_p, abspath); 2075 return call2 (handler, Qfile_directory_p, abspath);
2047 2076
@@ -2064,7 +2093,7 @@ searchable directory.")
2064 2093
2065 /* If the file name has special constructs in it, 2094 /* If the file name has special constructs in it,
2066 call the corresponding file handler. */ 2095 call the corresponding file handler. */
2067 handler = find_file_handler (filename); 2096 handler = Ffind_file_name_handler (filename);
2068 if (!NILP (handler)) 2097 if (!NILP (handler))
2069 return call2 (handler, Qfile_accessible_directory_p, filename); 2098 return call2 (handler, Qfile_accessible_directory_p, filename);
2070 2099
@@ -2088,7 +2117,7 @@ DEFUN ("file-modes", Ffile_modes, Sfile_modes, 1, 1, 0,
2088 2117
2089 /* If the file name has special constructs in it, 2118 /* If the file name has special constructs in it,
2090 call the corresponding file handler. */ 2119 call the corresponding file handler. */
2091 handler = find_file_handler (abspath); 2120 handler = Ffind_file_name_handler (abspath);
2092 if (!NILP (handler)) 2121 if (!NILP (handler))
2093 return call2 (handler, Qfile_modes, abspath); 2122 return call2 (handler, Qfile_modes, abspath);
2094 2123
@@ -2111,7 +2140,7 @@ Only the 12 low bits of MODE are used.")
2111 2140
2112 /* If the file name has special constructs in it, 2141 /* If the file name has special constructs in it,
2113 call the corresponding file handler. */ 2142 call the corresponding file handler. */
2114 handler = find_file_handler (abspath); 2143 handler = Ffind_file_name_handler (abspath);
2115 if (!NILP (handler)) 2144 if (!NILP (handler))
2116 return call3 (handler, Qset_file_modes, abspath, mode); 2145 return call3 (handler, Qset_file_modes, abspath, mode);
2117 2146
@@ -2216,7 +2245,7 @@ otherwise, if FILE2 does not exist, the answer is t.")
2216 2245
2217 /* If the file name has special constructs in it, 2246 /* If the file name has special constructs in it,
2218 call the corresponding file handler. */ 2247 call the corresponding file handler. */
2219 handler = find_file_handler (abspath1); 2248 handler = Ffind_file_name_handler (abspath1);
2220 if (!NILP (handler)) 2249 if (!NILP (handler))
2221 return call3 (handler, Qfile_newer_than_file_p, abspath1, abspath2); 2250 return call3 (handler, Qfile_newer_than_file_p, abspath1, abspath2);
2222 2251
@@ -2261,7 +2290,7 @@ before the error is signaled.")
2261 2290
2262 /* If the file name has special constructs in it, 2291 /* If the file name has special constructs in it,
2263 call the corresponding file handler. */ 2292 call the corresponding file handler. */
2264 handler = find_file_handler (filename); 2293 handler = Ffind_file_name_handler (filename);
2265 if (!NILP (handler)) 2294 if (!NILP (handler))
2266 { 2295 {
2267 val = call3 (handler, Qinsert_file_contents, filename, visit); 2296 val = call3 (handler, Qinsert_file_contents, filename, visit);
@@ -2445,7 +2474,7 @@ to the file, instead of any buffer contents, and END is ignored.")
2445 2474
2446 /* If the file name has special constructs in it, 2475 /* If the file name has special constructs in it,
2447 call the corresponding file handler. */ 2476 call the corresponding file handler. */
2448 handler = find_file_handler (filename); 2477 handler = Ffind_file_name_handler (filename);
2449 2478
2450 if (!NILP (handler)) 2479 if (!NILP (handler))
2451 { 2480 {
@@ -2740,7 +2769,7 @@ This means that the file has not been changed since it was visited or saved.")
2740 2769
2741 /* If the file name has special constructs in it, 2770 /* If the file name has special constructs in it,
2742 call the corresponding file handler. */ 2771 call the corresponding file handler. */
2743 handler = find_file_handler (b->filename); 2772 handler = Ffind_file_name_handler (b->filename);
2744 if (!NILP (handler)) 2773 if (!NILP (handler))
2745 return call2 (handler, Qverify_visited_file_modtime, buf); 2774 return call2 (handler, Qverify_visited_file_modtime, buf);
2746 2775
@@ -2787,7 +2816,7 @@ or if the file itself has been changed for some known benign reason.")
2787 2816
2788 /* If the file name has special constructs in it, 2817 /* If the file name has special constructs in it,
2789 call the corresponding file handler. */ 2818 call the corresponding file handler. */
2790 handler = find_file_handler (filename); 2819 handler = Ffind_file_name_handler (filename);
2791 if (!NILP (handler)) 2820 if (!NILP (handler))
2792 current_buffer->modtime = 0; 2821 current_buffer->modtime = 0;
2793 2822
@@ -3178,6 +3207,7 @@ syms_of_fileio ()
3178 Qdirectory_file_name = intern ("directory-file-name"); 3207 Qdirectory_file_name = intern ("directory-file-name");
3179 Qfile_name_directory = intern ("file-name-directory"); 3208 Qfile_name_directory = intern ("file-name-directory");
3180 Qfile_name_nondirectory = intern ("file-name-nondirectory"); 3209 Qfile_name_nondirectory = intern ("file-name-nondirectory");
3210 Qunhandled_file_name_directory = intern ("unhandled-file-name-directory");
3181 Qfile_name_as_directory = intern ("file-name-as-directory"); 3211 Qfile_name_as_directory = intern ("file-name-as-directory");
3182 Qcopy_file = intern ("copy-file"); 3212 Qcopy_file = intern ("copy-file");
3183 Qmake_directory = intern ("make-directory"); 3213 Qmake_directory = intern ("make-directory");
@@ -3200,9 +3230,12 @@ syms_of_fileio ()
3200 Qwrite_region = intern ("write-region"); 3230 Qwrite_region = intern ("write-region");
3201 Qverify_visited_file_modtime = intern ("verify-visited-file-modtime"); 3231 Qverify_visited_file_modtime = intern ("verify-visited-file-modtime");
3202 3232
3203 Qfile_name_history = intern ("file-name-history"); 3233 staticpro (&Qexpand_file_name);
3204 Fset (Qfile_name_history, Qnil); 3234 staticpro (&Qdirectory_file_name);
3205 3235 staticpro (&Qfile_name_directory);
3236 staticpro (&Qfile_name_nondirectory);
3237 staticpro (&Qunhandled_file_name_directory);
3238 staticpro (&Qfile_name_as_directory);
3206 staticpro (&Qcopy_file); 3239 staticpro (&Qcopy_file);
3207 staticpro (&Qmake_directory); 3240 staticpro (&Qmake_directory);
3208 staticpro (&Qdelete_directory); 3241 staticpro (&Qdelete_directory);
@@ -3223,6 +3256,9 @@ syms_of_fileio ()
3223 staticpro (&Qinsert_file_contents); 3256 staticpro (&Qinsert_file_contents);
3224 staticpro (&Qwrite_region); 3257 staticpro (&Qwrite_region);
3225 staticpro (&Qverify_visited_file_modtime); 3258 staticpro (&Qverify_visited_file_modtime);
3259
3260 Qfile_name_history = intern ("file-name-history");
3261 Fset (Qfile_name_history, Qnil);
3226 staticpro (&Qfile_name_history); 3262 staticpro (&Qfile_name_history);
3227 3263
3228 Qfile_error = intern ("file-error"); 3264 Qfile_error = intern ("file-error");
@@ -3260,11 +3296,15 @@ to be handled; the remaining arguments are the arguments that were\n\
3260passed to that primitive. For example, if you do\n\ 3296passed to that primitive. For example, if you do\n\
3261 (file-exists-p FILENAME)\n\ 3297 (file-exists-p FILENAME)\n\
3262and FILENAME is handled by HANDLER, then HANDLER is called like this:\n\ 3298and FILENAME is handled by HANDLER, then HANDLER is called like this:\n\
3263 (funcall HANDLER 'file-exists-p FILENAME)"); 3299 (funcall HANDLER 'file-exists-p FILENAME)\n\
3300The function `find-file-name-handler' checks this list for a handler\n\
3301for its argument.");
3264 Vfile_name_handler_alist = Qnil; 3302 Vfile_name_handler_alist = Qnil;
3265 3303
3304 defsubr (&Sfind_file_name_handler);
3266 defsubr (&Sfile_name_directory); 3305 defsubr (&Sfile_name_directory);
3267 defsubr (&Sfile_name_nondirectory); 3306 defsubr (&Sfile_name_nondirectory);
3307 defsubr (&Sunhandled_file_name_directory);
3268 defsubr (&Sfile_name_as_directory); 3308 defsubr (&Sfile_name_as_directory);
3269 defsubr (&Sdirectory_file_name); 3309 defsubr (&Sdirectory_file_name);
3270 defsubr (&Smake_temp_name); 3310 defsubr (&Smake_temp_name);