[En-Nut-Discussion] is there a better set of definitons for fcntl.h ???

Harald Kipp harald.kipp at egnite.de
Tue Nov 23 09:59:02 CET 2004


Hi Douglas,


>Would it not be better to have:
>
>#define _O_RDONLY       0x0004  /*!< Read only. */

...

>That code could to change to (check my code unless I made an error):
>"if (!(mode & _O_RDONLY)) {"
>and
>"if (!(mode & _O_WRONLY)) {"
>
>Which IMHO is more readable and 'safer' as
>Is this a better idea?

I'd agree, but almost all desktop systems define _O_RDONLY
as zero. Assuming any of the flags being non-zero would
make the code less portable.

Typically the value of 4 is assigned to _O_NONBLOCK,
but this is not used in Nut/OS yet.

How about

   #define FRWMASK (_O_RDONLY | _O_WRONLY | _O_RDWR)
   if((mode & FRWMASK) == _O_RDONLY)...

which would make the code fully independent from defined
values?

Btw. Rich Salz, the author of INN, sometime somewhere stated,
that he very much dislikes using

   if(!(num-expr))

instead of

   if((num-expr) != 0)

He argued, that ! is a boolean operator and should be used
on boolean expressions only. I learned a lot from Rich'
source codes and respect him very much.

Harald







More information about the En-Nut-Discussion mailing list