# HG changeset patch # User Karl Heuer # Date 767059004 0 # Node ID f67c02c50e2a07e99d618f7043b421772356b0d8 # Parent 6915bf781a3817b7beaf6e18e32ca277706f97bb (Ffind_file_name_handler): New argument OPERATION. All callers changed. diff -r 6915bf781a38 -r f67c02c50e2a src/fileio.c --- a/src/fileio.c Fri Apr 22 23:41:18 1994 +0000 +++ b/src/fileio.c Fri Apr 22 23:56:44 1994 +0000 @@ -198,16 +198,16 @@ Lisp_Object Qverify_visited_file_modtime; Lisp_Object Qset_visited_file_modtime; -DEFUN ("find-file-name-handler", Ffind_file_name_handler, Sfind_file_name_handler, 1, 1, 0, - "Return FILENAME's handler function, if its syntax is handled specially.\n\ +DEFUN ("find-file-name-handler", Ffind_file_name_handler, Sfind_file_name_handler, 2, 2, 0, + "Return FILENAME's handler function for OPERATION, if it has one.\n\ Otherwise, return nil.\n\ A file name is handled if one of the regular expressions in\n\ `file-name-handler-alist' matches it.\n\n\ If FILENAME is a member of `inhibit-file-name-handlers',\n\ -then its handler is not run. This is lets handlers\n\ +then its handler is not run. This lets handlers\n\ use the standard functions without calling themselves recursively.") - (filename) - Lisp_Object filename; + (filename, operation) + Lisp_Object filename, operation; { /* This function must not munge the match data. */ Lisp_Object chain; @@ -264,7 +264,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (file); + handler = Ffind_file_name_handler (file, Qfile_name_directory); if (!NILP (handler)) return call2 (handler, Qfile_name_directory, file); @@ -322,7 +322,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (file); + handler = Ffind_file_name_handler (file, Qfile_name_nondirectory); if (!NILP (handler)) return call2 (handler, Qfile_name_nondirectory, file); @@ -356,7 +356,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qunhandled_file_name_directory); if (!NILP (handler)) return call2 (handler, Qunhandled_file_name_directory, filename); @@ -462,7 +462,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (file); + handler = Ffind_file_name_handler (file, Qfile_name_as_directory); if (!NILP (handler)) return call2 (handler, Qfile_name_as_directory, file); @@ -643,7 +643,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (directory); + handler = Ffind_file_name_handler (directory, Qdirectory_file_name); if (!NILP (handler)) return call2 (handler, Qdirectory_file_name, directory); @@ -712,7 +712,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (name); + handler = Ffind_file_name_handler (name, Qexpand_file_name); if (!NILP (handler)) return call3 (handler, Qexpand_file_name, name, defalt); @@ -1732,10 +1732,10 @@ /* If the input file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qcopy_file); /* Likewise for output file name. */ if (NILP (handler)) - handler = Ffind_file_name_handler (newname); + handler = Ffind_file_name_handler (newname, Qcopy_file); if (!NILP (handler)) RETURN_UNGCPRO (call5 (handler, Qcopy_file, filename, newname, ok_if_already_exists, keep_date)); @@ -1830,7 +1830,7 @@ CHECK_STRING (dirname, 0); dirname = Fexpand_file_name (dirname, Qnil); - handler = Ffind_file_name_handler (dirname); + handler = Ffind_file_name_handler (dirname, Qmake_directory); if (!NILP (handler)) return call3 (handler, Qmake_directory, dirname, Qnil); @@ -1854,7 +1854,7 @@ dirname = Fexpand_file_name (dirname, Qnil); dir = XSTRING (dirname)->data; - handler = Ffind_file_name_handler (dirname); + handler = Ffind_file_name_handler (dirname, Qdelete_directory); if (!NILP (handler)) return call2 (handler, Qdelete_directory, dirname); @@ -1874,7 +1874,7 @@ CHECK_STRING (filename, 0); filename = Fexpand_file_name (filename, Qnil); - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qdelete_file); if (!NILP (handler)) return call2 (handler, Qdelete_file, filename); @@ -1908,9 +1908,9 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qrename_file); if (NILP (handler)) - handler = Ffind_file_name_handler (newname); + handler = Ffind_file_name_handler (newname, Qrename_file); if (!NILP (handler)) RETURN_UNGCPRO (call4 (handler, Qrename_file, filename, newname, ok_if_already_exists)); @@ -1973,7 +1973,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qadd_name_to_file); if (!NILP (handler)) RETURN_UNGCPRO (call4 (handler, Qadd_name_to_file, filename, newname, ok_if_already_exists)); @@ -2027,7 +2027,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qmake_symbolic_link); if (!NILP (handler)) RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, filename, linkname, ok_if_already_exists)); @@ -2148,7 +2148,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_exists_p); if (!NILP (handler)) return call2 (handler, Qfile_exists_p, abspath); @@ -2170,7 +2170,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_executable_p); if (!NILP (handler)) return call2 (handler, Qfile_executable_p, abspath); @@ -2191,7 +2191,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_readable_p); if (!NILP (handler)) return call2 (handler, Qfile_readable_p, abspath); @@ -2217,7 +2217,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qfile_symlink_p); if (!NILP (handler)) return call2 (handler, Qfile_symlink_p, filename); @@ -2284,7 +2284,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_writable_p); if (!NILP (handler)) return call2 (handler, Qfile_writable_p, abspath); @@ -2321,7 +2321,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_directory_p); if (!NILP (handler)) return call2 (handler, Qfile_directory_p, abspath); @@ -2344,7 +2344,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qfile_accessible_directory_p); if (!NILP (handler)) return call2 (handler, Qfile_accessible_directory_p, filename); @@ -2368,7 +2368,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qfile_modes); if (!NILP (handler)) return call2 (handler, Qfile_modes, abspath); @@ -2404,7 +2404,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath); + handler = Ffind_file_name_handler (abspath, Qset_file_modes); if (!NILP (handler)) return call3 (handler, Qset_file_modes, abspath, mode); @@ -2507,9 +2507,9 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (abspath1); + handler = Ffind_file_name_handler (abspath1, Qfile_newer_than_file_p); if (NILP (handler)) - handler = Ffind_file_name_handler (abspath2); + handler = Ffind_file_name_handler (abspath2, Qfile_newer_than_file_p); if (!NILP (handler)) return call3 (handler, Qfile_newer_than_file_p, abspath1, abspath2); @@ -2569,7 +2569,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qinsert_file_contents); if (!NILP (handler)) { val = call6 (handler, Qinsert_file_contents, filename, @@ -2943,10 +2943,10 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qwrite_region); /* If FILENAME has no handler, see if VISIT has one. */ if (NILP (handler) && XTYPE (visit) == Lisp_String) - handler = Ffind_file_name_handler (visit); + handler = Ffind_file_name_handler (visit, Qwrite_region); if (!NILP (handler)) { @@ -3339,7 +3339,8 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (b->filename); + handler = Ffind_file_name_handler (b->filename, + Qverify_visited_file_modtime); if (!NILP (handler)) return call2 (handler, Qverify_visited_file_modtime, buf); @@ -3404,7 +3405,7 @@ /* If the file name has special constructs in it, call the corresponding file handler. */ - handler = Ffind_file_name_handler (filename); + handler = Ffind_file_name_handler (filename, Qset_visited_file_modtime); if (!NILP (handler)) /* The handler can find the file name the same way we did. */ return call2 (handler, Qset_visited_file_modtime, Qnil); @@ -3511,7 +3512,8 @@ /* -1 means we've turned off autosaving for a while--see below. */ && XINT (b->save_length) >= 0 && (do_handled_files - || NILP (Ffind_file_name_handler (b->auto_save_file_name)))) + || NILP (Ffind_file_name_handler (b->auto_save_file_name, + Qwrite_region)))) { EMACS_TIME before_time, after_time;