Listing 1: The Recls_GetNext(), Recls_GetDetails() and Recls_GetNextDetails() functions.

// from recls.h
struct recls_fileinfo_t;
typedef struct recls_fileinfo_t const *recls_info_t;
/* Search open/close */
recls_rc_t Recls_Search( char const     *searchRoot
                       , char const     *pattern
                       , recls_uint32_t flags
                       , hrecls_t       *phSrch);
void Recls_SearchClose(hrecls_t hSrch);

/* Enumeration */
recls_rc_t Recls_GetNext(hrecls_t hSrch);

recls_rc_t Recls_GetDetails( hrecls_t  hSrch, recls_info_t *pinfo);
recls_rc_t Recls_GetNextDetails( hrecls_t  hSrch , recls_info_t *pinfo);
void Recls_CloseDetails(recls_info_t fileInfo);

/* File-system entries */
recls_rc_t Recls_CopyDetails( recls_info_t fileInfo, recls_info_t *pinfo);
recls_rc_t Recls_OutstandingDetails( hrecls_t   hSrch, recls_uint32_t *count);

size_t Recls_GetPathProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
void Recls_GetDriveProperty( recls_info_t fileInfo
                                , char         *pchDrive);
size_t Recls_GetDirectoryProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
size_t Recls_GetFileProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
size_t Recls_GetShortFileProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
size_t Recls_GetFileNameProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
size_t Recls_GetFileExtProperty( recls_info_t fileInfo
                                , char         *buffer
                                , size_t       cchBuffer);
size_t Recls_GetDirectoryPartProperty( recls_info_t fileInfo
                                , int          part
                                , char         *buffer
                                , size_t       cchBuffer);
recls_bool_t Recls_IsFileReadOnly(recls_info_t fileInfo);
recls_bool_t Recls_IsFileDirectory(recls_info_t fileInfo);
recls_bool_t Recls_IsFileLink(recls_info_t fileInfo);