-// Copyright 2004 Adam Megacz, see the COPYING file for licensing [GPL]
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the GNU General Public License version 2 ("the License").
+// You may not use this file except in compliance with the License.
+
package org.ibex.core;
import java.net.*;
public static String origin = null;
public static String initialTemplate = null;
- public static final Stream builtin = new Stream.Zip(new Stream.Builtin());
+ //public static final Fountain builtin = new Fountain.Zip(new Fountain.FromInputStream(Platform.getBuiltinInputStream()));
+ public static final Fountain vera;
+ static {
+ Fountain temp = null;
+ try {
+ temp = new Fountain.FromInputStream(Encode.JavaSourceCode.decode(Vera.data));
+ } catch (Exception e) { Log.error(Main.class, e); }
+ vera = temp;
+ }
public static void printUsage() {
System.err.println("Usage: ibex [-lawp] [ url | file | directory ]");
System.err.println(" -l user@host email log to user@host");
System.err.println(" -l host:port emit log to TCP socket");
System.err.println(" -l <file> write log to a file on disk");
- System.err.println(" -a check assertions");
+ //System.err.println(" -a check assertions");
System.err.println(" -w <window-id> reserved for libibex");
System.err.println(" -p dump profiling information [not yet supported]");
Runtime.getRuntime().exit(-1);
int startargs = 0;
while (true) {
if (startargs > args.length - 1) printUsage();
- else if (args[startargs].equals("-a")) JS.checkAssertions = true;
+ // FEATURE: This should be enabled at the parser level - there shouldn't even be an assert bytecode
+ /*else if (args[startargs].equals("-a")) JS.checkAssertions = true;*/
else if (args[startargs].equals("-l")) {
startargs++;
StringTokenizer opts = new StringTokenizer(args[startargs], ",");
initialTemplate = args.length > startargs + 1 ? args[startargs + 1] : "main";
origin = args[startargs];
- Stream rr;
+ Fountain rr;
final String startupTemplate;
if (origin.startsWith("http://") || origin.startsWith("https://")) {
originHost = origin.substring(origin.indexOf('/') + 2);
originHost = originHost.substring(0, originHost.indexOf('/') == -1 ? originHost.length() : originHost.indexOf('/'));
if (originHost.indexOf('@') != -1) originHost = originHost.substring(originHost.indexOf('@') + 1);
originAddr = InetAddress.getByName(originHost);
- rr = builtin;
- startupTemplate = "org.ibex.builtin.splash";
+ //rr = builtin;
+ //startupTemplate = "org.ibex.builtin.splash";
+ rr = new Fountain.HTTP(origin);
+ startupTemplate = initialTemplate;
} else {
- rr = new Stream.File(origin);
- if (!new File(origin).isDirectory()) rr = new Stream.Zip(rr);
+ rr = new Fountain.File(origin);
+ if (!new File(origin).isDirectory()) rr = new Fountain.Zip(rr);
startupTemplate = initialTemplate;
}
if (Log.on) Log.info(Main.class, "loading xwar");
final Ibex ibex = new Ibex(rr);
- org.ibex.graphics.Surface.scarImage =
- Picture.load(Main.builtin.get(JS.S("org/ibex/core/builtin/scar.png")),
- new Task() { public void perform() throws JSExn, UnknownHostException {
- if (Log.on) Log.info(Main.class, "invoking initial template");
- ibex.resolveString(startupTemplate, false).call(new Box(), null, null, null, 1);
- } });
+ try {
+ JS blessed = ibex.bless(new Fountain.FromInputStream(Encode.JavaSourceCode.decode(org.ibex.core.builtin.Scar.data)));
+ org.ibex.graphics.Surface.scarImage = Platform.createPicture(blessed);
+ } catch (Exception e) {
+ Log.error(Main.class, e);
+ }
- Scheduler.init();
+ Platform.Scheduler.add(new Callable() {
+ private final JS[] callargs = new JS[1];
+ public Object run(Object o) throws JSExn,UnknownHostException {
+ if (Log.on) Log.info(Main.class, "invoking initial template");
+ try {
+ callargs[0] = new Box();
+ ibex.resolveString(startupTemplate, false).call(null, callargs);
+ } finally { callargs[0] = null; }
+ return null;
+ } });
+
+ Platform.Scheduler.init();
}
}