> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED]]On Behalf Of Beman Dawes > Sent: 13 December 2002 15:31 > To: Boost mailing list; Boost mailing list > Subject: Re: [boost] Filesystem Library mini-review > > > At 08:19 AM 12/13/2002, Peter Dimov wrote: > > >From: "Beman Dawes" <[EMAIL PROTECTED]> > >> > >> Part of the problem is that there is no guarantee that > the macros will > be > >> available in <cerrno>. > > > >Yes, that's true in theory, but in practice, is there a > platform that > >doesn't have the macros in <cerrno>? > > It is messier than that. For example, Microsoft supplies > cerrno with only > some of the macros. EBUSY, ENOTDIR, ENOTEMPTY, and others are missing.
And many unixes don't make them available without an environment variable or an additional #define. > > The filesystem library also needs one or two additional codes > for its own > errors. > > >Note that there are two issues here. First, whether the > portable error > code > >reported by the library matches the numeric value of the > corresponding > EXXX > >macro. Second, how does the exception.hpp header make the constants > >available, i.e. does it #include <cerrno> (with <cerrno> > guaranteed to > have > >the macros), or does it provide its own aliases. > > The "already standard" argument you make below pushes toward > including > <cerrno>. Yet usual C++ practice would be more like the enum > in the current > header, and not including <cerrno>. > > Would you see any value in providing aliases with names that map more > closely to the POSIX names? > > For example, instead of: > > not_found_error, > not_directory_error, > > Would you prefer: > > enoent, > enotdir, > > If so, why? I strongly prefer the former. One of the first things I do when having to deal with errno is map the errno names to something readable like not_found_error. I can never remember the posix names and many unix programmers resort to the man page to look them up ( not caring if they are the posix names of the implementation ones. > > I'm wondering if part of your worries could be caused by the > lack of a > filesystem function similar to POSIX perror()? > > >> That's messy for Boost; we would have to provide > >> our own and configure accordingly. > > > >Depends on whether we target a platform where <cerrno> > doesn't have the > >macros. Do we? > > > >> It might also be messy for > >> standardization; its seems to have a lot of trouble when multiple > >> committees start specifying the contents of the same header. > > > >On the other hand, ignoring other well established > standards isn't a good > >thing either, from standardization point of view. > > > >> The final > >> worry about a POSIX based scheme is that it might mislead > users into > >> thinking every operating system can deliver exactly the > POSIX errors > and > >no > >> others. That isn't the case. > > > >I don't see the problem. Any kind of a portable error > scheme can mislead > >users into thinking that all OSes report the same set of > errors (and in > >general, any portable API can mislead users into thinking > that all OSes > >support the same functionality.) We already have a standard > portable > error > >scheme. Why reinvent the wheel? Will we do any better? > > We might. The POSIX errno scheme doesn't seem all that strong to me. Agreed. I've given a fair ammount of though to this over the past year ( whilst working on sockets). The conclusion I came to was that I would rather have a standard C++ name on what ever platform I work on than keep having to look them up on every platform. /ikh _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost