Defect Report concerning: IEEE Std. 1003.1-1996, ISO/IEC 9945-1:1996 - C API
Clause: 5.1.1
PASC Interpretation Ref: pasc-1003.1-14
Topic: format of directory entries, use of read/write


This is an unapproved interpretation of PASC 1003.1-1996, ISO/IEC 9945-1:1996 - C API.

Use of the information contained in this unapproved document is at your own risk.

Last update: 10 April,2001


                                                                1003.1-90 #14
 _____________________________________________________________________________


	Interpretation Number:	(to be assigned by the IEEE)
	Topic:			format of directory entries, use of read/write
	Relevant Sections:	5.1.1
	Classification: No change required.


Interpretation Request: (Defect Report)
-----------------------


Request (Paul Rabin #10)

    In 5.1.1 Format of Directory Entries, page 83, line 10:

	"The internal format of directories is unspecified."
 
    In 5.3.1.4 Errors [Open a File], page 90, lines 256-257:
 
	"[EISDIR]	The named file is a directory, and the oflag
			argument specifies write or read/write access."
 
    Traditional implementations permitted the use of the read()
    function on directory files, so no error condition is defined in
    POSIX.1 for this case.  May a conforming application open a 
    directory file and read it using the open() and read() functions?
 
Proposed IEEE Interpretation for 1003.1-1990 (9945-1:1990):
--------------------------------------------------



Yes, a conforming application can invoke read() on a directory,
however, the result of any such read() is unspecified, and may be
an error return, including [EISDIR].

Rationale for Interpretation:
-----------------------------

Nothing in the standard prevents an application from using the
open() and read() functions on a directory, but an
application which uses knowledge of a particular implementation's
format for directories is using a non-portable extension.

Implementations are free to return anything they want from a
read() to a directory.  For example, read() could always return
zero, or -1 with some appropriate errno.

 _____________________________________________________________________________