struct dpns_direnstatg *dpns_readdir (dpns_DIR *dirp)
struct dpns_direnstatg {
u_signed64 fileid;
char guid[CA_MAXGUIDLEN+1];
mode_t filemode;
int nlink; /* number of files in a directory */
uid_t uid;
gid_t gid;
u_signed64 filesize;
time_t atime; /* last access to file */
time_t mtime; /* last file modification */
time_t ctime; /* last metadata modification */
short fileclass; /* not used */
char status; /* ' ' --> online, 'm' --> migrated */
char csumtype[3]; /* "CS", "AD" or "MD" */
char csumvalue[33];
unsigned short d_reclen; /* length of this entry */
char d_name[1]; /* basename in variable length */
};
dpns_readdir caches a variable number of such entries, depending on the filename size, to minimize the number of requests to the name server.
As dpns_readdir returns a null pointer both at the end of the directory and on error, an application wishing to check for error situations should set serrno to 0, then call dpns_readdir, then check serrno and if it is non-zero, assume an error has occurred.