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.