[Issue 10344] Exiting _Dmain should flush all FILE*s and return nonzero on failure

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jun 18 02:32:57 PDT 2013


http://d.puremagic.com/issues/show_bug.cgi?id=10344



--- Comment #19 from Lionello Lunesu <lio+bugzilla at lunesu.com> 2013-06-18 02:32:54 PDT ---
(In reply to comment #18)
> (In reply to comment #17)
> > But the question is: what to throw? 
> 
> I think throwing an Error would be fine, because the user isn't going to be
> catching it anyway.

It would be nice to show at least the actual error, based on errno, instead of
an hardcoded string.

druntime does have the declaration for the C runtime strerror() and .errno so
we can do:

        if (fflush(null) != 0)
        {
            auto s = strerror(.errno);
            throw new Error(s[0..strlen(s)].idup);
        }

resulting in:

$ ./hw 1</dev/null
object.Error: Bad file descriptor
----------------
5   hw                                  0x0000000109e4b765 extern (C) int
rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void
tryExec(scope void delegate()) + 45
6   hw                                  0x0000000109e4b719 _d_run_main + 457
7   hw                                  0x0000000109e4b548 main + 20
8   libdyld.dylib                       0x00007fff8e6107e1 start + 0
9   ???                                 0x

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list