Changeset 12426


Ignore:
Timestamp:
02/07/10 09:21:26 (11 years ago)
Author:
Mark Evenson
Message:

ABCL packed FASLS no longer have to end in ".abcl".

The requirement that packed FASLS had to end in ".abcl" was introduced
in the recent Pathname code as a optimization to avoid opening/closing
an input stream on the assumption that renaming FASLs would not be
expected to work. But COMPILE-FILE has an :OUTPUT-FILE arg that
certainly can be used, so we relax this restriction.

Found by dmiles in the ANSI test suite.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/Load.java

    r12422 r12426  
    152152        }
    153153
    154         if (truename.type.getStringValue().equals(COMPILE_FILE_TYPE)
    155             && Utilities.checkZipFile(truename))
    156             {
    157                 String n = truename.getNamestring();
    158                 if (n.startsWith("jar:")) {
    159                     n = "jar:" + n + "!/" + truename.name.getStringValue() + "."
    160                       + COMPILE_FILE_INIT_FASL_TYPE;
     154        if (Utilities.checkZipFile(truename)) {
     155            String n = truename.getNamestring();
     156            if (n.startsWith("jar:")) {
     157                n = "jar:" + n + "!/" + truename.name.getStringValue() + "."
     158                    + COMPILE_FILE_INIT_FASL_TYPE;
     159            } else {
     160                n = "jar:file:" + n + "!/" + truename.name.getStringValue() + "."
     161                    + COMPILE_FILE_INIT_FASL_TYPE;
     162            }
     163            mergedPathname = new Pathname(n);
     164            LispObject initTruename = Pathname.truename(mergedPathname);
     165            if (initTruename == null || initTruename.equals(NIL)) {
     166                String errorMessage
     167                    = "Loadable FASL not found for"
     168                    + "'" + pathname + "'"
     169                    + " in "
     170                    + "'" + mergedPathname + "'";
     171                if (ifDoesNotExist) {
     172                    return error(new FileError(errorMessage, mergedPathname));
    161173                } else {
    162                     n = "jar:file:" + n + "!/" + truename.name.getStringValue() + "."
    163                       + COMPILE_FILE_INIT_FASL_TYPE;
    164                 }
    165                 mergedPathname = new Pathname(n);
    166                 LispObject initTruename = Pathname.truename(mergedPathname);
    167                 if (initTruename == null || initTruename.equals(NIL)) {
    168                     String errorMessage
    169                         = "Loadable FASL not found for"
    170                           + "'" + pathname + "'"
    171                           + " in "
    172                           + "'" + mergedPathname + "'";
    173                     if (ifDoesNotExist) {
    174                         return error(new FileError(errorMessage, mergedPathname));
    175                     } else {
    176                         Debug.trace(errorMessage);
    177                         return NIL;
    178                     }
    179                 }
    180                 truename = (Pathname)initTruename;
    181             }
     174                    Debug.trace(errorMessage);
     175                    return NIL;
     176                }
     177            }
     178            truename = (Pathname)initTruename;
     179        }
    182180       
    183181        InputStream in = truename.getInputStream();
Note: See TracChangeset for help on using the changeset viewer.