diff options
author | glenda <glenda@cirno> | 2022-09-10 16:25:05 +0000 |
---|---|---|
committer | glenda <glenda@cirno> | 2022-09-10 16:25:05 +0000 |
commit | e2ebfbb7d19ff3b990eb51dc9843200053cbbf98 (patch) | |
tree | 986b0353a1179f803872b1578ebfe0acd83050bd /main.c | |
parent | d07d4afcb8acff3757394f2f9822d014f31fecf0 (diff) |
Improve the session a lot
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 28 |
1 files changed, 11 insertions, 17 deletions
@@ -9,6 +9,7 @@ Biobuf *stdin; static int booted = 0; static Rune *startfile = L"runtime/start.apl"; +static Rune *stdlibfile = L"runtime/stdlib.apl"; void threadmain(int argc, char *argv[]) @@ -34,15 +35,7 @@ threadmain(int argc, char *argv[]) ErrorGuard *eg = newerrorguard(mkscalarint(0), nil); restart: if(setjmp(eg->jmp)){ - ThreadData *td = getthreaddata(); - Rune *msg = errorstr(td->lasterror); - if(td->lasterrormsg){ - if(runestrlen(msg) == 0) - print("%S\n", td->lasterrormsg); - else - print("%S: %S\n", errorstr(td->lasterror), td->lasterrormsg); - }else - print("%S\n", errorstr(td->lasterror)); + displayerror(); while(getcurrentdfn()) popdfnframe(); goto restart; @@ -50,20 +43,21 @@ restart: if(!booted){ booted = 1; - Array *path = mkrunearray(startfile); - runfile(path); - freearray(path); + runfile(mkrunearray(stdlibfile)); + runfile(mkrunearray(startfile)); } while(!off){ checkmem("main loop"); - /* if(needsnewline){ - print("\n"); - needsnewline = 0; - } */ Datum *result = evalline(nil, stdin, 1); if(result && !result->shy) - setquotequad(result); + setquad(result); + else{ + Datum *dummy = allocdatum(ArrayTag, 0); + dummy->array = mkrunearray(L""); + setquad(dummy); + freedatum(dummy); + } freedatum(result); /* print("Unfreed arrays: %d\n", arrayalloccounts); |