ref: 1dcc71ec821e945158fa057a7ac07a60b91f5ed6
parent: eec95c17b8912b9ce79617bc23263d26ed1d71f6
author: JeffBezanson <jeff.bezanson@gmail.com>
date: Thu Apr 29 14:39:17 EDT 2010
factoring out startup routine for embedded use
--- a/femtolisp/flisp.c
+++ b/femtolisp/flisp.c
@@ -2258,7 +2258,7 @@
extern value_t fl_file(value_t *args, uint32_t nargs);
-int main(int argc, char *argv[])
+int fl_startup()
{
value_t e;
int saveSP;
@@ -2303,17 +2303,31 @@
}
ios_close(value2c(ios_t*,Stack[SP-1]));
POPN(1);
+ }
+ FL_CATCH {
+ ios_puts("fatal error during bootstrap:\n", ios_stderr);
+ fl_print(ios_stderr, lasterror);
+ ios_putc('\n', ios_stderr);
+ return 1;
+ }
+ return 0;
+}
+int main(int argc, char *argv[])
+{
+ if (fl_startup())
+ return 1;
+
+ FL_TRY {
PUSH(symbol_value(symbol("__start")));
PUSH(argv_list(argc, argv));
(void)_applyn(1);
}
FL_CATCH {
- ios_puts("fatal error during bootstrap:\n", ios_stderr);
+ ios_puts("fatal error:\n", ios_stderr);
fl_print(ios_stderr, lasterror);
ios_putc('\n', ios_stderr);
return 1;
}
-
return 0;
}
--- a/femtolisp/flisp.h
+++ b/femtolisp/flisp.h
@@ -322,4 +322,6 @@
value_t cvalue_byte(value_t *args, uint32_t nargs);
value_t cvalue_wchar(value_t *args, uint32_t nargs);
+int fl_startup();
+
#endif