[En-Nut-Discussion] is there a better set of definitons for fcntl.h	???
    Douglas Pearless 
    Douglas.Pearless at pearless.co.nz
       
    Tue Nov 23 07:08:50 CET 2004
    
    
  
Hi,
When working on updating the fat.c driver for the MMC cards, I noticed that
_O_RDONLY in fcntl.h was set to 0x0000.
I noticed that there was no 0x0004 in the sequence either, can I suggest
rather than:
#define _O_RDONLY	0x0000	/*!< Read only. */
#define _O_WRONLY	0x0001	/*!< Write only. */
#define _O_RDWR	0x0002	/*!< Read and write. */
#define _O_APPEND 0x0008  	/*!< Start writing at the end. */
#define _O_CREAT	0x0100	/*!< Create file if it does not exist. */
#define _O_TRUNC	0x0200	/*!< Truncate file if it exists. */
#define _O_EXCL	0x0400	/*!< Open only if it does not exist. */
#define _O_TEXT	0x4000	/*!< EOL translation. */
#define _O_BINARY	0x8000	/*!< Raw mode. */ 
Would it not be better to have:
#define _O_RDONLY	0x0004	/*!< Read only. */
#define _O_WRONLY	0x0001	/*!< Write only. */
#define _O_RDWR	0x0002	/*!< Read and write. */
#define _O_APPEND 0x0008  	/*!< Start writing at the end. */
#define _O_CREAT	0x0100	/*!< Create file if it does not exist. */
#define _O_TRUNC	0x0200	/*!< Truncate file if it exists. */
#define _O_EXCL	0x0400	/*!< Open only if it does not exist. */
#define _O_TEXT	0x4000	/*!< EOL translation. */
#define _O_BINARY	0x8000	/*!< Raw mode. */
Which would simplify the checking of _O_RDONLY in code, and make it more
readable?
I noticed that in UART.c and USART.c they use a test like:
"if ((mode & 0x0003) != _O_RDONLY) {" 
And
"if ((mode & 0x0003) != _O_WRONLY) {"
Which means that you have to know the value of _O_RDONLY and _O_WRONLY in
order to understand the code (from a novices point of view).  Also if the
values of _O_aaaaa ever change, then the code in UART.c and USART.c will
break!
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?
These appear to be the only places affected in NutOS
Douglas
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.799 / Virus Database: 543 - Release Date: 19/11/2004
 
    
    
More information about the En-Nut-Discussion
mailing list