Sujet : Re: THROW codes and ambiguous conditions
De : albert (at) *nospam* spenarnc.xs4all.nl
Groupes : comp.lang.forthDate : 01. Jun 2025, 11:47:42
Autres entêtes
Organisation : KPN B.V.
Message-ID : <nnd$5c501e87$383f11cb@a5c2a2bcc067e6c0>
References : 1 2 3 4
User-Agent : trn 4.0-test77 (Sep 1, 2010)
In article <
2025May31.180736@mips.complang.tuwien.ac.at>,
Anton Ertl <
anton@mips.complang.tuwien.ac.at> wrote:
albert@spenarnc.xs4all.nl writes:
In article <2025May31.080248@mips.complang.tuwien.ac.at>,
Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
xxxxxxxx.fs /tmp/x.fs
-514 -525 Gforth
-37 -37 iforth 5.1-mini
-261 -261 lxf 1.7-172-983
-199 -199 SwiftForth i386-Linux 3.11.0
-69 -69 SwiftForth x64-Linux 4.0.0-RC89
-258 -258 VFX Forth 64 5.43
>
-2 -13 ciforth on (whatever) linux
>
-13 MESSAGE
: Permission denied
OK
-2 MESSAGE
: No such file or directory
OK
>
Am I the only to use the Unix error codes?
>
You seem to be the only one who remaps them by just negating them.
This remaps them right into the range of throw codes that are
preassigned by the Forth standard in table 9.1.
>
Actually, the error returns from system calls are negative
numbers. So I do approximately:
( open file ) DUP 0 MIN THROW \ Now the result is a file channel id.
So I was puzzled at the term remapping. Indeed the man 3 errno
reveals that positive numbers are intended.
If you look at the results above, you will find that Gforth remaps
errno into the ior -512-errno (e.g., -514 for "No such file or
directory, and -525 for "permission denied"), and INCLUDED THROWs that
ior.
I could add -512 to them. ciforth has as one of its names
"close to ISO" Forth. This discussion proves that adhering to
the exact throw cause is of dubious value.
One of my design goals was simplicity and usability at the expense of
speed and traditional expectations. This was one of the corners cut
off. The positive errors are not compliant anyway.
E.g. gforth error number 13 (not-found compliant) is split into error 10
(malformed number) and 12 (not found in the search order).
>
For Unix signals, if Gforth does not translate them to one of the
predefined throw codes or handles the signal in some other way (e.g.,
SIGWINCH just changes what FORM returns, and is otherwise
transparent), it throws -256-sig.
gforth is a politically correct implementation. That is much
appreciated. It takes a team to maintain that and study the
standard extensively. That niche has been filled, so if that
was my priority I'd join the gforth team.
ciforth has no gratituous deviations from the standard
(by my arbitration), but it violates traditional expectations.
>
- anton
Groetjes Albert
-- Temu exploits Christians: (Disclaimer, only 10 apostles)Last Supper Acrylic Suncatcher - 15Cm Round Stained Glass- Style WallArt For Home, Office And Garden Decor - Perfect For Windows, Bars,And Gifts For Friends Family And Colleagues.