]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fload): If FILE arg ends in .el or .elc, don't insist on adding a suffix.
authorRichard M. Stallman <rms@gnu.org>
Fri, 29 Aug 1997 19:53:25 +0000 (19:53 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 29 Aug 1997 19:53:25 +0000 (19:53 +0000)
src/lread.c

index 8718a05c9d43921db969a76d0cf27d88e06b9516..c065db926fe97e91d5916cecc809b08bf56b01ad 100644 (file)
@@ -395,8 +395,9 @@ Print messages at start and end of loading unless\n\
  optional third arg NOMESSAGE is non-nil.\n\
 If optional fourth arg NOSUFFIX is non-nil, don't try adding\n\
  suffixes `.elc' or `.el' to the specified name FILE.\n\
-If optional fifth arg MUST-SUFFIX is non-nil, insist on adding\n\
- the suffixe `.elc' or `.el'; don't accept just FILE.\n\
+If optional fifth arg MUST-SUFFIX is non-nil, insist on\n\
+ the suffix `.elc' or `.el'; don't accept just FILE unless
+ it ends in one of those suffixes or includes a directory name.\n\
 Return t if file exists.")
   (file, noerror, nomessage, nosuffix, must_suffix)
      Lisp_Object file, noerror, nomessage, nosuffix, must_suffix;
@@ -433,7 +434,25 @@ Return t if file exists.")
      since it would try to load a directory as a Lisp file */
   if (XSTRING (file)->size > 0)
     {
+      int size = XSTRING (file)->size;
+
       GCPRO1 (file);
+
+      if (! NILP (must_suffix))
+       {
+         /* Don't insist on adding a suffix if FILE already ends with one.  */
+         if (size > 3
+             && !strcmp (XSTRING (file)->data + size - 3, ".el"))
+           must_suffix = Qnil;
+         else if (size > 4
+                  && !strcmp (XSTRING (file)->data + size - 4, ".elc"))
+           must_suffix = Qnil;
+         /* Don't insist on adding a suffix
+            if the argument includes a directory name.  */
+         else if (! NILP (Ffile_name_directory (file)))
+           must_suffix = Qnil;
+       }
+
       fd = openp (Vload_path, file,
                  (!NILP (nosuffix) ? ""
                   : ! NILP (must_suffix) ? ".elc:.el"