# HG changeset patch # User Richard M. Stallman # Date 872884405 0 # Node ID be0876941b71b602402a0d0a23d70d97db759af3 # Parent 74151390752c2445663f6af2e118836bff8fd881 (Fload): If FILE arg ends in .el or .elc, don't insist on adding a suffix. diff -r 74151390752c -r be0876941b71 src/lread.c --- 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"