--- gforth/Attic/errore.fs 1994/02/11 16:30:46 1.1 +++ gforth/Attic/errore.fs 1996/07/16 20:57:07 1.8 @@ -1,16 +1,35 @@ \ ERRORE.FS English error strings 9may93jaw +\ Copyright (C) 1995 Free Software Foundation, Inc. + +\ This file is part of Gforth. + +\ Gforth is free software; you can redistribute it and/or +\ modify it under the terms of the GNU General Public License +\ as published by the Free Software Foundation; either version 2 +\ of the License, or (at your option) any later version. + +\ This program is distributed in the hope that it will be useful, +\ but WITHOUT ANY WARRANTY; without even the implied warranty of +\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +\ GNU General Public License for more details. + +\ You should have received a copy of the GNU General Public License +\ along with this program; if not, write to the Free Software +\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + \ The errors are defined by a linked list, for easy adding \ and deleting. Speed is not neccassary at this point. AVARIABLE ErrLink \ Linked list entry point -0 ErrLink ! +NIL ErrLink ! : ERR" ( n -- ) ErrLink linked , - [char] " word count - dup c, here over chars allot swap move align ; + [char] " parse + string, align ; decimal @@ -47,13 +66,41 @@ decimal -56 ERR" QUIT" -57 ERR" Error in sending or receiving a character" -58 ERR" [IF], [ELSE], [THEN] error" +\ signals are handled with strsignal +\ but some signals produce throw-codes > -256, e.g., -28 +\ signals: ( We list them all, except those already present, just in case ) +\ -256 ERR" Hangup signal" +\ -257 ERR" Quit signal" +\ -258 ERR" Illegal Instruction" +\ -259 ERR" Trace Trap" +\ -260 ERR" IOT instruction" +\ -261 ERR" EMT instruction" \ abort() call? +\ -262 ERR" Kill signal" \ cannot be caught but so what +\ -263 ERR" Bad arg to system call" +\ -264 ERR" Broken pipe" +\ -265 ERR" Alarm signal" +\ -266 ERR" Terminate signal" +\ -267 ERR" User signal 1" +\ -268 ERR" User signal 2" +\ error numbers between -512 and -2047 are for OS errors and are +\ handled with strerror + : .error ( n -- ) - cr ." Error: " - ErrLink - BEGIN @ dup - WHILE - 2dup cell+ @ = - IF 2 cells + count type drop exit THEN - REPEAT - drop . ; + cr ." Error: " + ErrLink + BEGIN @ dup + WHILE + 2dup cell+ @ = + IF 2 cells + count type drop exit THEN + REPEAT + drop + dup -511 -255 within + IF + 256 + negate strsignal type exit + THEN + dup -2047 -511 within + IF + 512 + negate strerror type exit + THEN + . ;