changeset 3625:57174f9b1870

(Fload): Forward all 4 args to magic-name handler. (syms_of_lread): Set up Qload. (Fload): Handle magic file names.
author Richard M. Stallman <rms@gnu.org>
date Thu, 10 Jun 1993 21:15:55 +0000
parents 386094c1a569
children ae0389767674
files src/lread.c
diffstat 1 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lread.c	Thu Jun 10 20:44:12 1993 +0000
+++ b/src/lread.c	Thu Jun 10 21:15:55 1993 +0000
@@ -52,7 +52,7 @@
 
 Lisp_Object Qread_char, Qget_file_char, Qstandard_input, Qcurrent_load_list;
 Lisp_Object Qvariable_documentation, Vvalues, Vstandard_input, Vafter_load_alist;
-Lisp_Object Qascii_character;
+Lisp_Object Qascii_character, Qload;
 
 extern Lisp_Object Qevent_symbol_element_mask;
 
@@ -318,10 +318,25 @@
   Lisp_Object found;
   /* 1 means inhibit the message at the beginning.  */
   int nomessage1 = 0;
+  Lisp_Object handler;
 
   CHECK_STRING (str, 0);
   str = Fsubstitute_in_file_name (str);
 
+  /* If file name is magic, call the handler.  */
+  handler = Ffind_file_name_handler (str);
+  if (!NILP (handler))
+    {
+      Lisp_Object args[6];
+      args[0] = handler;
+      args[1] = Qload;
+      args[2] = str;
+      args[3] = noerror;
+      args[4] = nomessage;
+      args[5] = nosuffix;
+      return Ffuncall (6, args);
+    }
+
   /* Avoid weird lossage with null string as arg,
      since it would try to load a directory as a Lisp file */
   if (XSTRING (str)->size > 0)
@@ -1893,4 +1908,7 @@
 
   Qascii_character = intern ("ascii-character");
   staticpro (&Qascii_character);
+
+  Qload = intern ("load");
+  staticpro (&Qload);
 }