# HG changeset patch # User Richard M. Stallman # Date 1114891933 0 # Node ID cf8e7c12c048ca7b9b33e5ad081ef7fd817bdddb # Parent b3a3357502cdc6764310b18c552dd41a7416915b (Ffind_file_name_handler): Handle the `operations' property of the file name handler. (Qoperations): New variable. (syms_of_fileio): Initialize and staticpro it. diff -r b3a3357502cd -r cf8e7c12c048 src/fileio.c --- a/src/fileio.c Sat Apr 30 20:08:12 2005 +0000 +++ b/src/fileio.c Sat Apr 30 20:12:13 2005 +0000 @@ -175,6 +175,10 @@ whose I/O is done with a special handler. */ Lisp_Object Vfile_name_handler_alist; +/* Property name of a file name handler, + which gives a list of operations it handles.. */ +Lisp_Object Qoperations; + /* Lisp functions for translating file formats */ Lisp_Object Qformat_decode, Qformat_annotate_function; @@ -366,13 +370,16 @@ elt = XCAR (chain); if (CONSP (elt)) { - Lisp_Object string; + Lisp_Object string = XCAR (elt); int match_pos; - string = XCAR (elt); + Lisp_Object handler = XCDR (elt); + Lisp_Object operations = Fget (handler, Qoperations); + if (STRINGP (string) - && (match_pos = fast_string_match (string, filename)) > pos) + && (match_pos = fast_string_match (string, filename)) > pos + && (NILP (operations) || ! NILP (Fmemq (operation, operations)))) { - Lisp_Object handler, tem; + Lisp_Object tem; handler = XCDR (elt); tem = Fmemq (handler, inhibited_handlers); @@ -6437,6 +6444,7 @@ void syms_of_fileio () { + Qoperations = intern ("operations"); Qexpand_file_name = intern ("expand-file-name"); Qsubstitute_in_file_name = intern ("substitute-in-file-name"); Qdirectory_file_name = intern ("directory-file-name"); @@ -6471,6 +6479,7 @@ Qset_visited_file_modtime = intern ("set-visited-file-modtime"); Qauto_save_coding = intern ("auto-save-coding"); + staticpro (&Qoperations); staticpro (&Qexpand_file_name); staticpro (&Qsubstitute_in_file_name); staticpro (&Qdirectory_file_name);