summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2022-02-22 21:25:36 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2022-02-22 21:25:36 +0000
commit40af1deff9db7b86532db6957ebdbc0aaff38db1 (patch)
treecb417113744f26a015d36ee6732746c4e808e700 /main.c
parentae6471f1c94f51df540d95edc09c7749002f44e8 (diff)
Make errors more like dyalog:
* Use the same error numbers * Rename ⎕THROW to ⎕SIGNAL * Implement ⎕EN to inspect the last error code * Implement ⎕EM to get a message from an error code
Diffstat (limited to 'main.c')
-rw-r--r--main.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/main.c b/main.c
index 60beed2..d67d742 100644
--- a/main.c
+++ b/main.c
@@ -33,10 +33,14 @@ threadmain(int argc, char *argv[])
restart:
if(setjmp(eg->jmp)){
ThreadData *td = getthreaddata();
- if(td->lasterrormsg)
- print("%S: %S\n", errorstrs[td->lasterror], td->lasterrormsg);
- else
- print("%S\n", errorstrs[td->lasterror]);
+ 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));
while(getcurrentdfn())
popdfnframe();
goto restart;