Changeset 8601


Ignore:
Timestamp:
02/18/05 00:43:09 (16 years ago)
Author:
piso
Message:

Support --noinit command line option.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Interpreter.java

    r8573 r8601  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: Interpreter.java,v 1.79 2005-02-14 19:07:00 piso Exp $
     5 * $Id: Interpreter.java,v 1.80 2005-02-18 00:43:09 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    125125                    autoload.load();
    126126                }
    127                 do {
    128                     String userHome = System.getProperty("user.home");
    129                     File file = new File(userHome, ".abclrc");
    130                     if (file.isFile()) {
    131                         Load.load(file.getCanonicalPath());
    132                         break;
    133                     }
    134                     if (Utilities.isPlatformWindows()) {
    135                         file = new File("C:\\.abclrc");
    136                         if (file.isFile()) {
    137                             Load.load(file.getCanonicalPath());
    138                             break;
    139                         }
    140                     }
    141                     file = new File(userHome, ".ablrc");
    142                     if (file.isFile()) {
    143                         String message =
    144                             "Warning: use of .ablrc is deprecated; use .abclrc instead.";
    145                         getStandardOutput()._writeLine(message);
    146                         Load.load(file.getCanonicalPath());
    147                         break;
    148                     }
    149                     file = new File(userHome, ".ablisprc");
    150                     if (file.isFile()) {
    151                         String message =
    152                             "Warning: use of .ablisprc is deprecated; use .abclrc instead.";
    153                         getStandardOutput()._writeLine(message);
    154                         Load.load(file.getCanonicalPath());
    155                         break;
    156                     }
    157                 } while (false);
    158127            }
    159128            catch (Throwable t) {
     
    164133    }
    165134
    166     private void processCommandLineArguments(String[] args)
     135    private static synchronized void processInitializationFile()
     136    {
     137        try {
     138            String userHome = System.getProperty("user.home");
     139            File file = new File(userHome, ".abclrc");
     140            if (file.isFile()) {
     141                Load.load(file.getCanonicalPath());
     142                return;
     143            }
     144            if (Utilities.isPlatformWindows()) {
     145                file = new File("C:\\.abclrc");
     146                if (file.isFile()) {
     147                    Load.load(file.getCanonicalPath());
     148                    return;
     149                }
     150            }
     151            file = new File(userHome, ".ablrc");
     152            if (file.isFile()) {
     153                String message =
     154                    "Warning: use of .ablrc is deprecated; use .abclrc instead.";
     155                getStandardOutput()._writeLine(message);
     156                Load.load(file.getCanonicalPath());
     157                return;
     158            }
     159            file = new File(userHome, ".ablisprc");
     160            if (file.isFile()) {
     161                String message =
     162                    "Warning: use of .ablisprc is deprecated; use .abclrc instead.";
     163                getStandardOutput()._writeLine(message);
     164                Load.load(file.getCanonicalPath());
     165                return;
     166            }
     167        }
     168        catch (Throwable t) {
     169            t.printStackTrace();
     170        }
     171    }
     172
     173    private static boolean noinit;
     174
     175    // Check for --noinit; verify that arguments are supplied for --load and
     176    // --eval options.
     177    private void preprocessCommandLineArguments(String[] args)
    167178        throws ConditionThrowable
    168179    {
    169         if (args.length > 0) {
     180        if (args != null) {
     181            for (int i = 0; i < args.length; ++i) {
     182                String arg = args[i];
     183                if (arg.equals("--noinit")) {
     184                    noinit = true;
     185                } else if (arg.equals("--eval")) {
     186                    if (i + 1 < args.length) {
     187                        ++i;
     188                    } else {
     189                        System.err.println("No argument supplied to --eval");
     190                        System.exit(1);
     191                    }
     192                } else if (arg.equals("--load") ||
     193                           arg.equals("--load-system-file")) {
     194                    if (i + 1 < args.length) {
     195                        ++i;
     196                    } else {
     197                        System.err.println("No argument supplied to --load");
     198                        System.exit(1);
     199                    }
     200                }
     201            }
     202        }
     203    }
     204
     205    // Do the --load and --eval actions.
     206    private void postprocessCommandLineArguments(String[] args)
     207        throws ConditionThrowable
     208    {
     209        if (args != null) {
    170210            for (int i = 0; i < args.length; ++i) {
    171211                String arg = args[i];
     
    185225                        ++i;
    186226                    } else {
     227                        // Shouldn't happen.
    187228                        System.err.println("No argument supplied to --eval");
    188229                        System.exit(1);
     
    206247                        ++i;
    207248                    } else {
     249                        // Shouldn't happen.
    208250                        System.err.println("No argument supplied to --load");
    209251                        System.exit(1);
     
    245287            initializeLisp(jlisp);
    246288            initializeTopLevel();
    247             if (args != null)
    248                 processCommandLineArguments(args);
     289            if (jlisp) {
     290                Debug.assertTrue(args == null);
     291                processInitializationFile();
     292            } else {
     293                if (args != null)
     294                    preprocessCommandLineArguments(args);
     295                if (!noinit)
     296                    processInitializationFile();
     297                if (args != null)
     298                    postprocessCommandLineArguments(args);
     299            }
    249300            Symbol TOP_LEVEL_LOOP = intern("TOP-LEVEL-LOOP", PACKAGE_TPL);
    250301            LispObject tplFun = TOP_LEVEL_LOOP.getSymbolFunction();
Note: See TracChangeset for help on using the changeset viewer.