diff options
author | Richard M. Stallman <[email protected]> | 1993-06-10 21:15:55 +0000 |
---|---|---|
committer | Richard M. Stallman <[email protected]> | 1993-06-10 21:15:55 +0000 |
commit | c2225d0026d73b23be56993d1332096f02bdec0e (patch) | |
tree | e62d04bcd53353ee878a9afe8dcdecb817ee5df5 /src | |
parent | e98dda89869c4aee4291c9976cac54af56ffd835 (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.c | 20 |
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); } |