aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1993-06-10 21:15:55 +0000
committerRichard M. Stallman <[email protected]>1993-06-10 21:15:55 +0000
commitc2225d0026d73b23be56993d1332096f02bdec0e (patch)
treee62d04bcd53353ee878a9afe8dcdecb817ee5df5 /src
parente98dda89869c4aee4291c9976cac54af56ffd835 (diff)
(Fload): Forward all 4 args to magic-name handler.
(syms_of_lread): Set up Qload. (Fload): Handle magic file names.
Diffstat (limited to 'src')
-rw-r--r--src/lread.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/lread.c b/src/lread.c
index bc3fe8ee77..57410a71d7 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -52,7 +52,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
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 @@ Return t if file exists.")
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 @@ or variables, and cons cells `(provide . FEATURE)' and `(require . FEATURE)'.");
Qascii_character = intern ("ascii-character");
staticpro (&Qascii_character);
+
+ Qload = intern ("load");
+ staticpro (&Qload);
}