tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: S_IFMT not mentioned in any man page

Mouse <mouse%Rodents-Montreal.ORG@localhost> wrote:
 |>     No new S_IFMT symbolic names for the file type values of
 |>     mode_t will be defined by POSIX.1-2008; if new file types are
 |>     required, they will only be testable through S_ISxx( ) or
 |>     S_TYPEISxxx( ) macros instead.
 |That strikes me as stupid of them.  You can't write
 | switch (st_mode satisfying)
 |  { case S_ISTHINGY(selector):
 |       ...;
 |(though arguably maybe you should be able to :-).

I had them mapped to Sys::IO::enum FileType as s_sock etc., but
i think i've practically always accessed that via
Sys::IO::FileInfo.isXy() (not even plain .fileType()).  I think
most of the time you're interested in one or two specific things.
And since you need a mask to get there it is possibly better, in
this particular case, to hide details from end-user programmers.
As you say, the problem was possibly the direct access to st_mode,
instead of at some S_FILETYPE(struct stat) or whatever,
restricting the scope of system library implementors.

 |Of course, NetBSD can define new S_ITHINGY names even if POSIX won't.

Of course (they can do whatever they want).  (Or not.)


Home | Main Index | Thread Index | Old Index