/* -*- C++ -*- */ // $Id$ // ============================================================================ // // = LIBRARY // ace // // = FILENAME // Dirent.h // // = DESCRIPTION // Define a portable directory-entry manipulation interface. // // = AUTHOR // Douglas C. Schmidt // // ============================================================================ #ifndef ACE_DIRENT_H #define ACE_DIRENT_H #include "ace/OS.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ class ACE_Dirent { // = TITLE // Define a portable UNIX directory-entry iterator. public: // = Initialization and termination methods. ACE_Dirent (void); // Default constructor. ACE_Dirent (const char *dirname); // Constructor calls int open (const char *filename); // Opens the directory named by filename and associates a directory // stream with it. ~ACE_Dirent (void); // Destructor calls . void close (void); // Closes the directory stream and frees the DIR structure. // = Iterator methods. dirent *read (void); // Returns a pointer to a structure representing the directory entry // at the current position in the directory stream to which dirp // refers, and positions the directory stream at the next entry, // except on read-only filesystems. It returns a NULL pointer upon // reaching the end of the directory stream, or upon detecting an // invalid location in the directory. shall not return // directory entries containing empty names. It is unspecified // whether entries are returned for dot or dot-dot. The pointer // returned by points to data that may be overwritten by // another call to on the same directory stream. This // data shall not be overwritten by another call to on a // different directory stream. may buffer several // directory entries per actual read operation; marks for // update the st_atime field of the directory each time the // directory is actually read. int read (struct dirent *entry, struct dirent **result); // Has the equivalent functionality as except that an // and buffer must be supplied by the caller to // store the result. // = Manipulators. long tell (void); // Returns the current location associated with the directory // stream. void seek (long loc); // Sets the position of the next operation on the // directory stream. The new position reverts to the position // associated with the directory stream at the time the // operation that provides loc was performed. Values returned by // are good only for the lifetime of the DIR pointer from // which they are derived. If the directory is closed and then // reopened, the value may be invalidated due to // undetected directory compaction. It is safe to use a previous // value immediately after a call to and before // any calls to readdir. void rewind (void); // Resets the position of the directory stream to the beginning of // the directory. It also causes the directory stream to refer to // the current state of the corresponding directory, as a call to // would. private: DIR *dirp_; // Pointer to the directory stream. }; #if !defined (ACE_LACKS_INLINE_FUNCTIONS) #include "ace/Dirent.i" #endif /* ACE_LACKS_INLINE_FUNCTIONS */ #endif /* ACE_DIRENT_H */