Annotation of gforth/kernel/errore.fs, revision 1.16

1.1       anton       1: \ ERRORE.FS English error strings                      9may93jaw
                      2: 
1.16    ! anton       3: \ Copyright (C) 1995,1996,1997,1998,1999,2000,2003,2006,2007 Free Software Foundation, Inc.
1.1       anton       4: 
                      5: \ This file is part of Gforth.
                      6: 
                      7: \ Gforth is free software; you can redistribute it and/or
                      8: \ modify it under the terms of the GNU General Public License
1.15      anton       9: \ as published by the Free Software Foundation, either version 3
1.1       anton      10: \ of the License, or (at your option) any later version.
                     11: 
                     12: \ This program is distributed in the hope that it will be useful,
                     13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15: \ GNU General Public License for more details.
                     16: 
                     17: \ You should have received a copy of the GNU General Public License
1.15      anton      18: \ along with this program. If not, see http://www.gnu.org/licenses/.
1.1       anton      19: 
                     20: 
                     21: \ The errors are defined by a linked list, for easy adding
                     22: \ and deleting. Speed is not neccassary at this point.
                     23: 
1.7       jwilke     24: require ./io.fs
                     25: require ./nio.fs
                     26: 
1.3       pazsan     27: AVariable ErrLink              \ Linked list entry point
1.1       anton      28: NIL ErrLink !
                     29: 
                     30: decimal
                     31: 
                     32: \ error numbers between -256 and -511 represent signals
                     33: \ signals are handled with strsignal
                     34: \ but some signals produce throw-codes > -256, e.g., -28
                     35: 
                     36: \ error numbers between -512 and -2047 are for OS errors and are
                     37: \ handled with strerror
                     38: 
1.5       pazsan     39: has? OS [IF]
1.3       pazsan     40: : >stderr ( -- )
                     41:     r> outfile-id >r stderr to outfile-id
                     42:     >exec  r> to outfile-id ;
1.5       pazsan     43: [THEN]
1.3       pazsan     44: 
1.1       anton      45: : .error ( n -- )
1.13      pazsan     46: [ has? OS [IF] ]
1.3       pazsan     47:     >stderr
1.13      pazsan     48: [ [THEN] ]
1.1       anton      49:     ErrLink
                     50:     BEGIN @ dup
                     51:     WHILE
                     52:        2dup cell+ @ =
1.3       pazsan     53:        IF
                     54:            2 cells + count type drop EXIT THEN
1.1       anton      55:     REPEAT
                     56:     drop
1.2       jwilke     57: [ has? os [IF] ]
1.1       anton      58:     dup -511 -255 within
                     59:     IF
1.3       pazsan     60:        256 + negate strsignal type EXIT
1.1       anton      61:     THEN
                     62:     dup -2047 -511 within
                     63:     IF
1.3       pazsan     64:        512 + negate strerror type EXIT
1.1       anton      65:     THEN
                     66: [ [THEN] ]
1.8       anton      67:     ." error " dec. ;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>