Mercurial > emacs
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"