changeset 19622:be0876941b71

(Fload): If FILE arg ends in .el or .elc, don't insist on adding a suffix.
author Richard M. Stallman <rms@gnu.org>
date Fri, 29 Aug 1997 19:53:25 +0000
parents 74151390752c
children 390656cf7e41
files src/lread.c
diffstat 1 files changed, 21 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lread.c	Fri Aug 29 19:52:57 1997 +0000
+++ b/src/lread.c	Fri Aug 29 19:53:25 1997 +0000
@@ -395,8 +395,9 @@
  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 @@
      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"