C/C++ User's Journal STLSoft - ... Robust, Lightweight, Cross-platform, Template Software ... ATLSTL - where the Standard Template Library meets the Active Template Library COMSTL - where the Standard Template Library meets the Component Object Model
Synesis Software InetSTL - where the Standard Template Library meets the Internet UNIXSTL - Template Software for the UNIX Operating System WinSTL - where the Standard Template Library meets the Win32 API

recls/recls.h

Go to the documentation of this file.
00001 /* /////////////////////////////////////////////////////////////////////////////
00002  * File:        recls/recls.h
00003  *
00004  * Purpose:     Main header file for the recls API.
00005  *
00006  * Created:     15th August 2003
00007  * Updated:     7th October 2007
00008  *
00009  * Home:        http://recls.org/
00010  *
00011  * Copyright (c) 2003-2007, Matthew Wilson and Synesis Software
00012  * All rights reserved.
00013  *
00014  * Redistribution and use in source and binary forms, with or without
00015  * modification, are permitted provided that the following conditions are met:
00016  *
00017  * - Redistributions of source code must retain the above copyright notice, this
00018  *   list of conditions and the following disclaimer.
00019  * - Redistributions in binary form must reproduce the above copyright notice,
00020  *   this list of conditions and the following disclaimer in the documentation
00021  *   and/or other materials provided with the distribution.
00022  * - Neither the name(s) of Matthew Wilson and Synesis Software nor the names of
00023  *   any contributors may be used to endorse or promote products derived from
00024  *   this software without specific prior written permission.
00025  *
00026  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00027  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00029  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00030  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00031  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00032  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00033  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00034  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00035  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00036  * POSSIBILITY OF SUCH DAMAGE.
00037  *
00038  * ////////////////////////////////////////////////////////////////////////// */
00039 
00040 
00046 #ifndef RECLS_INCL_RECLS_H_RECLS
00047 #define RECLS_INCL_RECLS_H_RECLS
00048 
00049 /* File version */
00050 #ifndef RECLS_DOCUMENTATION_SKIP_SECTION
00051 # define RECLS_VER_RECLS_H_RECLS_MAJOR      3
00052 # define RECLS_VER_RECLS_H_RECLS_MINOR      8
00053 # define RECLS_VER_RECLS_H_RECLS_REVISION   8
00054 # define RECLS_VER_RECLS_H_RECLS_EDIT       83
00055 #endif /* !RECLS_DOCUMENTATION_SKIP_SECTION */
00056 
00078 /* recls version */
00079 #define RECLS_VER_MAJOR     1
00080 #define RECLS_VER_MINOR     8
00081 #define RECLS_VER_REVISION  11
00082 #define RECLS_VER_1_0_1     0x01000100
00083 #define RECLS_VER_1_1_1     0x01010100
00084 #define RECLS_VER_1_2_1     0x01020100
00085 #define RECLS_VER_1_3_1     0x01030100
00086 #define RECLS_VER_1_4_1     0x01040100
00087 #define RECLS_VER_1_4_2     0x01040200
00088 #define RECLS_VER_1_5_1     0x01050100
00089 #define RECLS_VER_1_5_2     0x01050200
00090 #define RECLS_VER_1_5_3     0x01050300
00091 #define RECLS_VER_1_6_1     0x01060100
00092 #define RECLS_VER_1_6_2     0x01060200
00093 #define RECLS_VER_1_6_3     0x01060300
00094 #define RECLS_VER_1_6_4     0x01060400
00095 #define RECLS_VER_1_6_5     0x01060500
00096 #define RECLS_VER_1_7_1     0x01070100
00097 #define RECLS_VER_1_7_2     0x01070200
00098 #define RECLS_VER_1_8_1     0x01080100
00099 #define RECLS_VER_1_8_2     0x01080200
00100 #define RECLS_VER_1_8_3     0x01080300
00101 #define RECLS_VER_1_8_4     0x01080400
00102 #define RECLS_VER_1_8_5     0x01080500
00103 #define RECLS_VER_1_8_6     0x01080600
00104 #define RECLS_VER_1_8_7     0x01080700
00105 #define RECLS_VER_1_8_8     0x01080800
00106 #define RECLS_VER_1_8_9     0x01080900
00107 #define RECLS_VER_1_8_10    0x01080a00
00108 #define RECLS_VER_1_8_11    0x01080b00
00109 #define RECLS_VER           RECLS_VER_1_8_11
00110 
00111 /* /////////////////////////////////////////////////////////////////////////////
00112  * Strictness
00113  */
00114 
00115 #ifndef RECLS_NO_STRICT
00116 # define RECLS_STRICT
00117 #endif /* !RECLS_NO_STRICT */
00118 
00119 /* /////////////////////////////////////////////////////////////////////////////
00120  * Includes
00121  */
00122 
00123 /* Detects C & C++ things, such as namespace support */
00124 #include <recls/internal/language.h>
00125 /* Includes platform-specific headers */
00126 #include <recls/internal/platform.h>
00127 /* Includes stddef.h / cstddef, and defines the recls types: recls_s/uint8/16/32/64_t */
00128 #include <recls/internal/compiler.h>
00129 /* Defines recls_filesize_t, recls_time_t */
00130 #include <recls/internal/platform_types.h>
00131 
00132 /* /////////////////////////////////////////////////////////////////////////////
00133  * Namespace
00134  */
00135 
00136 #if !defined(RECLS_NO_NAMESPACE)
00137 namespace recls
00138 {
00139 #endif /* !RECLS_NO_NAMESPACE */
00140 
00141 #if !defined(RECLS_NO_NAMESPACE)
00142 #  define RECLS_QUAL(x)                 ::recls::x
00143 #else
00144 # define RECLS_QUAL(x)                  x
00145 #endif /* !RECLS_NO_NAMESPACE */
00146 
00147 /* /////////////////////////////////////////////////////////////////////////////
00148  * Constants and definitions
00149  */
00150 
00157 #if defined(RECLS_DOCUMENTATION_SKIP_SECTION)
00158 # define RECLS_ROOT_NAME_LEN            (1) or (3)
00159 #elif defined(RECLS_PLATFORM_IS_WIN32)
00160 # define RECLS_ROOT_NAME_LEN            (3)
00161 #elif defined(RECLS_PLATFORM_IS_UNIX)
00162 # define RECLS_ROOT_NAME_LEN            (1)
00163 #elif defined(RECLS_OVERRIDE_PLATFORM)
00164   /* Assume that the appropriate inclusions are made */
00165 #else
00166 # error Platform not recognised
00167 #endif /* platform */
00168 
00169 /* /////////////////////////////////////////////////////////////////////////////
00170  * Function specifications
00171  */
00172 
00177 #define RECLS_FNDECL(rt)    RECLS_LINKAGE_C rt RECLS_CALLCONV_DEFAULT
00178 
00179 /* /////////////////////////////////////////////////////////////////////////////
00180  * Typedefs
00181  */
00182 
00183 /* recls_rc_t */
00184 #ifdef __cplusplus
00185 
00190 typedef recls_sint32_t                      recls_rc_t;
00191 
00196 const recls_rc_t                            RECLS_RC_OK(0);
00201 const recls_rc_t                            RECLS_RC_FAIL(-1);
00202 
00207 inline bool RECLS_FAILED(recls_rc_t const &rc)
00208 {
00209     return rc < 0;
00210 }
00211 
00216 inline bool RECLS_SUCCEEDED(recls_rc_t const &rc)
00217 {
00218     return !RECLS_FAILED(rc);
00219 }
00220 
00221 #else /* ? __cplusplus */
00222 
00227 typedef recls_sint32_t                      recls_rc_t;
00228 
00233 # define RECLS_RC_OK                        (0)
00234 
00238 # define RECLS_RC_FAIL                      (-1)
00239 
00244 # define RECLS_FAILED(rc)                   ((rc) < 0)
00245 
00249 # define RECLS_SUCCEEDED(rc)                (!RECLS_FAILED(rc))
00250 
00251 #endif /* __cplusplus */
00252 
00253 /* hrecls_t */
00254 #if !defined(RECLS_DOCUMENTATION_SKIP_SECTION) && \
00255     defined(RECLS_COMPILER_IS_BORLAND) && \
00256     __BORLANDC__ < 0x0560
00257 struct hrecls_t_
00258 {
00259     int dummy;
00260 };
00261 #else /* ? compiler */
00262 struct hrecls_t_;
00263 #endif /* compiler */
00264 
00269 typedef struct hrecls_t_ const *            hrecls_t;
00270 
00271 /* /////////////////////////////////////////////////////////////////////////////
00272  * Namespace
00273  */
00274 
00275 #if !defined(RECLS_NO_NAMESPACE)
00276 } /* namespace recls */
00277 #endif /* !RECLS_NO_NAMESPACE */
00278 
00279 /* /////////////////////////////////////////////////////////////////////////////
00280  * Includes
00281  */
00282 
00283 /* Defines result codes */
00284 #include <recls/internal/retcodes.h>
00285 
00286 /* /////////////////////////////////////////////////////////////////////////////
00287  * Namespace
00288  */
00289 
00290 #if !defined(RECLS_NO_NAMESPACE)
00291 namespace recls
00292 {
00293 #endif /* !RECLS_NO_NAMESPACE */
00294 
00295 /* /////////////////////////////////////////////////////////////////////////////
00296  * Enumerations
00297  */
00298 
00306 enum RECLS_FLAG
00307 {
00308         RECLS_F_FILES                       =   0x00000001  
00309     ,   RECLS_F_DIRECTORIES                 =   0x00000002  
00310     ,   RECLS_F_LINKS                       =   0x00000004  
00311     ,   RECLS_F_DEVICES                     =   0x00000008  
00312     ,   RECLS_F_TYPEMASK                    =   0x00000FFF
00313     ,   RECLS_F_DIR_PROGRESS                =   0x00001000  
00314     ,   RECLS_F_RECURSIVE                   =   0x00010000  
00315     ,   RECLS_F_NO_FOLLOW_LINKS             =   0x00020000  
00316     ,   RECLS_F_DIRECTORY_PARTS             =   0x00040000  
00317     ,   RECLS_F_DETAILS_LATER               =   0x00080000  
00318     ,   RECLS_F_PASSIVE_FTP                 =   0x00100000  
00319     ,   RECLS_F_MARK_DIRS                   =   0x00200000  
00320     ,   RECLS_F_ALLOW_REPARSE_DIRS          =   0x00400000  
00321 #if 0
00322     ,   RECLS_F_CALC_CHECKSUM               =   0x00800000
00323 #endif /* 0 */
00324     ,   RECLS_F_CALLBACKS_STDCALL_ON_WIN32  =   0x01000000  
00325     ,   RECLS_F_USE_TILDE_ON_NO_SEARCHROOT  =   0x04000000  
00326 #if 0
00327     ,   RECLS_F_DIR_SIZE_IS_NUM_FILES       =   0x02000000  
00328 #endif /* 0 */
00329     ,   RECLS_F_IGNORE_HIDDEN_ENTRIES_ON_WIN32   =   0x08000000  
00331 #if !defined(FILES)
00332     ,   FILES = RECLS_F_FILES 
00333 #endif /* !FILES */
00334 #if !defined(DIRECTORIES)
00335     ,   DIRECTORIES = RECLS_F_DIRECTORIES 
00336 #endif /* !DIRECTORIES */
00337 #if !defined(LINKS)
00338     ,   LINKS = RECLS_F_LINKS 
00339 #endif /* !LINKS */
00340 #if !defined(DEVICES)
00341     ,   DEVICES = RECLS_F_DEVICES 
00342 #endif /* !DEVICES */
00343 #if !defined(TYPEMASK)
00344     ,   TYPEMASK = RECLS_F_TYPEMASK 
00345 #endif /* !TYPEMASK */
00346 #if !defined(DIR_PROGRESS)
00347     ,   DIR_PROGRESS = RECLS_F_DIR_PROGRESS 
00348 #endif /* !DIR_PROGRESS */
00349 #if !defined(RECURSIVE)
00350     ,   RECURSIVE = RECLS_F_RECURSIVE 
00351 #endif /* !RECURSIVE */
00352 #if !defined(NO_FOLLOW_LINKS)
00353     ,   NO_FOLLOW_LINKS = RECLS_F_NO_FOLLOW_LINKS 
00354 #endif /* !NO_FOLLOW_LINKS */
00355 #if !defined(DIRECTORY_PARTS)
00356     ,   DIRECTORY_PARTS = RECLS_F_DIRECTORY_PARTS 
00357 #endif /* !DIRECTORY_PARTS */
00358 #if !defined(DETAILS_LATER)
00359     ,   DETAILS_LATER = RECLS_F_DETAILS_LATER 
00360 #endif /* !DETAILS_LATER */
00361 #if !defined(PASSIVE_FTP)
00362     ,   PASSIVE_FTP = RECLS_F_PASSIVE_FTP 
00363 #endif /* !PASSIVE_FTP */
00364 #if !defined(MARK_DIRS)
00365     ,   MARK_DIRS = RECLS_F_MARK_DIRS 
00366 #endif /* !MARK_DIRS */
00367 #if !defined(ALLOW_REPARSE_DIRS)
00368     ,   ALLOW_REPARSE_DIRS = RECLS_F_ALLOW_REPARSE_DIRS 
00369 #endif /* !ALLOW_REPARSE_DIRS */
00370 #if 0
00371 #if !defined(CALC_CHECKSUM)
00372     ,   CALC_CHECKSUM = RECLS_F_CALC_CHECKSUM 
00373 #endif /* !CALC_CHECKSUM */
00374 #endif /* 0 */
00375 #if !defined(CALLBACKS_STDCALL_ON_WIN32)
00376     ,   CALLBACKS_STDCALL_ON_WIN32 = RECLS_F_CALLBACKS_STDCALL_ON_WIN32 
00377 #endif /* !CALLBACKS_STDCALL_ON_WIN32 */
00378 /*  ,   DIR_SIZE_IS_NUM_CHILDREN    =   RECLS_F_DIR_SIZE_IS_NUM_CHILDREN    */
00379 #if !defined(F_USE_TILDE_ON_NO_SEARCHROOT)
00380     ,   USE_TILDE_ON_NO_SEARCHROOT = RECLS_F_USE_TILDE_ON_NO_SEARCHROOT 
00381 #endif /* !RECLS_F_USE_TILDE_ON_NO_SEARCHROOT */
00382     ,   IGNORE_HIDDEN_ENTRIES_ON_WIN32 = RECLS_F_IGNORE_HIDDEN_ENTRIES_ON_WIN32 
00383 #if !defined(IGNORE_HIDDEN_ENTRIES_ON_WIN32)
00384 #endif /* !IGNORE_HIDDEN_ENTRIES_ON_WIN32 */
00385 #if 0
00386 #if !defined(RECLS_F_DIR_SIZE_IS_NUM_FILES)
00387     ,   DIR_SIZE_IS_NUM_FILES = RECLS_F_DIR_SIZE_IS_NUM_FILES 
00388 #endif /* !RECLS_F_DIR_SIZE_IS_NUM_FILES */
00389 #endif /* 0 */
00390 };
00391 
00400 enum RECLS_ROOTS_FLAG
00401 {
00402         RECLS_ROOTS_F_FIXED_DRIVES      =   0x0001  
00403     ,   RECLS_ROOTS_F_NETWORK_DRIVES    =   0x0002  
00404     ,   RECLS_ROOTS_F_CDROM_DRIVES      =   0x0004  
00405     ,   RECLS_ROOTS_F_REMOVABLE_DRIVES  =   0x0008  
00406     ,   RECLS_ROOTS_F_RAM_DRIVES        =   0x0010  
00408 #ifdef __cplusplus
00409     ,   FixedDrives                     =   RECLS_ROOTS_F_FIXED_DRIVES      
00410     ,   NetworkDrives                   =   RECLS_ROOTS_F_NETWORK_DRIVES    
00411     ,   CDRomDrives                     =   RECLS_ROOTS_F_CDROM_DRIVES      
00412     ,   RemovableDrives                 =   RECLS_ROOTS_F_REMOVABLE_DRIVES  
00413     ,   RamDrives                       =   RECLS_ROOTS_F_RAM_DRIVES        
00414 #endif /* __cplusplus */
00415 
00416 #ifndef RECLS_DOCUMENTATION_SKIP_SECTION
00417     ,   RECLS_F_FIXED_DRIVES            =   RECLS_ROOTS_F_FIXED_DRIVES
00418     ,   RECLS_F_NETWORK_DRIVES          =   RECLS_ROOTS_F_NETWORK_DRIVES
00419     ,   RECLS_F_CDROM_DRIVES            =   RECLS_ROOTS_F_CDROM_DRIVES
00420     ,   RECLS_F_REMOVABLE_DRIVES        =   RECLS_ROOTS_F_REMOVABLE_DRIVES
00421     ,   RECLS_F_RAM_DRIVES              =   RECLS_ROOTS_F_RAM_DRIVES
00422 #endif /* !RECLS_DOCUMENTATION_SKIP_SECTION */
00423 };
00424 
00425 #if !defined(__cplusplus) && \
00426     !defined(RECLS_DOCUMENTATION_SKIP_SECTION)
00427 typedef enum RECLS_FLAG         RECLS_FLAG;
00428 typedef enum RECLS_ROOTS_FLAG   RECLS_ROOTS_FLAG;
00429 #endif /* !__cplusplus && !RECLS_DOCUMENTATION_SKIP_SECTION */
00430 
00431 /* /////////////////////////////////////////////////////////////////////////////
00432  * Typedefs
00433  */
00434 
00435 /* #if defined(RECLS_PLATFORM_IS_WIN32)
00436 # define RECLS_ROOT_NAME_LEN            (3)
00437 #elif defined(RECLS_PLATFORM_IS_UNIX)
00438  */
00439 #ifndef RECLS_COMPILER_IS_CH
00440 
00444 struct recls_root_t
00445 {
00453     recls_char_t    name[1 + RECLS_ROOT_NAME_LEN];
00454 };
00455 
00456 # ifdef __cplusplus
00457 typedef recls_root_t                    root_t;
00458 # else /* ? __cplusplus */
00459 typedef struct recls_root_t             recls_root_t;
00460 # endif /* __cplusplus */
00461 #endif /* !RECLS_COMPILER_IS_CH */
00462 
00463 #ifndef RECLS_COMPILER_IS_CH
00464 struct recls_fileinfo_t;
00465 #endif /* !RECLS_COMPILER_IS_CH */
00466 
00471 typedef struct recls_fileinfo_t const*  recls_info_t;
00472 
00477 typedef void*                           recls_process_fn_param_t;
00478 
00490 typedef int (RECLS_CALLCONV_DEFAULT *hrecls_process_fn_t)(  recls_info_t                hEntry
00491                                                         ,   recls_process_fn_param_t    param);
00492 
00506 typedef int (RECLS_CALLCONV_DEFAULT *hrecls_progress_fn_t)( recls_char_t const*         dir
00507                                                         ,   size_t                      dirLen
00508                                                         ,   recls_process_fn_param_t    param
00509                                                         ,   void*                       reserved0
00510                                                         ,   recls_uint32_t              reserved1);
00511 
00512 /* /////////////////////////////////////////////////////////////////////////////
00513  * Namespace typedefs
00514  */
00515 
00516 #if !defined(RECLS_NO_NAMESPACE)
00517 typedef recls_info_t                info_t;
00518 typedef recls_process_fn_param_t    process_fn_param_t;
00519 #endif /* !RECLS_NO_NAMESPACE */
00520 
00521 /* /////////////////////////////////////////////////////////////////////////////
00522  * Functions
00523  */
00524 
00525 /***************************************
00526  * File system
00527  */
00528 
00535 #ifndef RECLS_COMPILER_IS_CH
00536 
00562 RECLS_FNDECL(size_t)                Recls_GetRoots(     recls_root_t*   roots
00563                                                     ,   size_t          cRoots);
00564 
00577 RECLS_FNDECL(size_t)                Recls_GetSelectedRoots( recls_root_t*   roots
00578                                                         ,   size_t          cRoots
00579                                                         ,   recls_uint32_t  flags);
00580 
00581 #endif /* !RECLS_COMPILER_IS_CH */
00582 
00583 #if 0
00584 /* New Recls1 API. */
00585 RECLS_FNDECL(size_t)    Recls1_FileSystem_GetRoots( recls_root_t*   roots
00586                                                 ,   size_t          cRoots
00587                                                 ,   recls_uint32_t  flags);
00588 #endif /* 0 */
00589 
00590 
00605 RECLS_FNDECL(recls_char_t const*)   Recls_GetPathNameSeparator(void);
00606 
00607 #if 0
00608 /* New Recls1 API. */
00609 RECLS_FNDECL(recls_char_t const*)   Recls1_FileSystem_GetPathNameSeparator(void);
00610 #endif /* 0 */
00611 
00626 RECLS_FNDECL(recls_char_t const*)   Recls_GetPathSeparator(void);
00627 
00628 #if 0
00629 /* New Recls1 API. */
00630 RECLS_FNDECL(recls_char_t const*)   Recls1_FileSystem_GetPathSeparator(void);
00631 #endif /* 0 */
00632 
00647 RECLS_FNDECL(recls_char_t const*)   Recls_GetWildcardsAll(void);
00648 
00649 #if 0
00650 /* New Recls1 API. */
00651 RECLS_FNDECL(recls_char_t const*)   Recls1_FileSystem_GetWildcardsAll(void);
00652 #endif /* 0 */
00653 
00656 /***************************************
00657  * Search control
00658  */
00659 
00685 RECLS_FNDECL(recls_rc_t) Recls_Search(  recls_char_t const* searchRoot
00686                                     ,   recls_char_t const* pattern
00687                                     ,   recls_uint32_t      flags
00688                                     ,   hrecls_t*           phSrch);
00689 
00706 RECLS_FNDECL(recls_rc_t) Recls_SearchFeedback(  recls_char_t const*         searchRoot
00707                                             ,   recls_char_t const*         pattern
00708                                             ,   recls_uint32_t              flags
00709                                             ,   hrecls_progress_fn_t        pfn
00710                                             ,   recls_process_fn_param_t    param
00711                                             ,   hrecls_t*                   phSrch);
00712 
00713 
00714 #if 0
00715 /* New Recls1 API. */
00716 RECLS_FNDECL(recls_rc_t) Recls1_FileSystem_StartSearch( recls_char_t const*         searchRoot
00717                                                     ,   recls_char_t const*         pattern
00718                                                     ,   recls_uint32_t              flags
00719                                                     ,   Recls1_progress_fn_t        pfnProgress
00720                                                     ,   Recls1_process_fn_param_t   paramProgress
00721                                                     ,   Recls1_filter_fn_t          pfnFilter
00722                                                     ,   Recls1_filter_fn_param_t    paramFilter
00723                                                     ,   hrecls_t*                   phSrch);
00724 #endif /* 0 */
00725 
00741 RECLS_FNDECL(recls_rc_t) Recls_SearchProcess(   recls_char_t const*         searchRoot
00742                                             ,   recls_char_t const*         pattern
00743                                             ,   recls_uint32_t              flags
00744                                             ,   hrecls_process_fn_t         pfn
00745                                             ,   recls_process_fn_param_t    param);
00746 
00753 RECLS_FNDECL(void) Recls_SearchClose(hrecls_t hSrch);
00754 
00755 
00756 #if 0
00757 /* New Recls1 API. */
00758 RECLS_FNDECL(recls_rc_t) Recls1_FileSystem_CloseSearch(hrecls_t hSrch);
00759 #endif /* 0 */
00760 
00761 
00775 RECLS_FNDECL(recls_rc_t) Recls_Stat(recls_char_t const* path
00776                                 ,   recls_uint32_t      flags
00777                                 ,   recls_info_t*       phEntry);
00778 
00779 #if 0
00780 /* New Recls1 API. */
00781 RECLS_FNDECL(recls_rc_t) Recls1_FileSystem_Stat(Recls1_char_t const*    path
00782                                             ,   Recls1_uint32_t         flags
00783                                             ,   Recls1_entry_t*         pentry);
00784 #endif /* 0 */
00785 
00786 
00789 /***************************************
00790  * Search enumeration
00791  */
00792 
00810 RECLS_FNDECL(recls_rc_t) Recls_GetNext(hrecls_t hSrch);
00811 
00812 #if 0
00813 /* New Recls1 API. */
00814 RECLS_FNDECL(recls_rc_t) Recls1_Search_Next(hrecls_t hSrch);
00815 #endif /* 0 */
00816 
00817 
00830 RECLS_FNDECL(recls_rc_t) Recls_GetDetails(  hrecls_t        hSrch
00831                                         ,   recls_info_t*   phEntry);
00832 
00833 #if 0
00834 /* New Recls1 API. */
00835 #endif /* 0 */
00836 
00848 RECLS_FNDECL(recls_rc_t) Recls_GetNextDetails(  hrecls_t        hSrch
00849                                             ,   recls_info_t*   phEntry);
00850 
00853 /***************************************
00854  * File entry information
00855  */
00856 
00869 RECLS_FNDECL(void) Recls_CloseDetails(recls_info_t hEntry);
00870 
00882 RECLS_FNDECL(recls_rc_t) Recls_CopyDetails( recls_info_t    hEntry
00883                                         ,   recls_info_t*   phEntry);
00884 
00896 RECLS_FNDECL(recls_rc_t) Recls_OutstandingDetails(  hrecls_t        hSrch
00897                                                 ,   recls_uint32_t* count);
00898 
00901 /***************************************
00902  * Error handling
00903  */
00904 
00919 RECLS_FNDECL(recls_rc_t) Recls_GetLastError(hrecls_t hSrch);
00920 
00931 RECLS_FNDECL(size_t) Recls_GetErrorString(  /* [in] */ recls_rc_t       rc
00932                                     ,       /* [in] */ recls_char_t*    buffer
00933                                     ,       /* [in] */ size_t           cchBuffer);
00934 
00945 RECLS_FNDECL(size_t) Recls_GetLastErrorString(  /* [in] */ hrecls_t         hSrch
00946                                         ,       /* [in] */ recls_char_t*    buffer
00947                                         ,       /* [in] */ size_t           cchBuffer);
00948 
00951 /***************************************
00952  * Property elicitation
00953  */
00954 
00971 RECLS_FNDECL(size_t) Recls_GetPathProperty( recls_info_t    hEntry
00972                                         ,   recls_char_t*   buffer
00973                                         ,   size_t          cchBuffer);
00974 
00985 RECLS_FNDECL(size_t) Recls_GetSearchRelativePathProperty(   recls_info_t    hEntry
00986                                                         ,   recls_char_t*   buffer
00987                                                         ,   size_t          cchBuffer);
00988 
00999 RECLS_FNDECL(size_t) Recls_GetDirectoryProperty(recls_info_t    hEntry
01000                                             ,   recls_char_t*   buffer
01001                                             ,   size_t          cchBuffer);
01002 
01015 RECLS_FNDECL(size_t) Recls_GetDirectoryPathProperty(recls_info_t    hEntry
01016                                                 ,   recls_char_t*   buffer
01017                                                 ,   size_t          cchBuffer);
01018 
01029 RECLS_FNDECL(size_t) Recls_GetSearchDirectoryProperty(  recls_info_t    hEntry
01030                                                     ,   recls_char_t*   buffer
01031                                                     ,   size_t          cchBuffer);
01032 
01045 RECLS_FNDECL(size_t) Recls_GetUNCDriveProperty( recls_info_t    hEntry
01046                                             ,   recls_char_t*   buffer
01047                                             ,   size_t          cchBuffer);
01048 
01059 RECLS_FNDECL(size_t) Recls_GetFileProperty( recls_info_t    hEntry
01060                                         ,   recls_char_t*   buffer
01061                                         ,   size_t          cchBuffer);
01062 
01075 RECLS_FNDECL(size_t) Recls_GetShortFileProperty(recls_info_t    hEntry
01076                                             ,   recls_char_t*   buffer
01077                                             ,   size_t          cchBuffer);
01078 
01089 RECLS_FNDECL(size_t) Recls_GetFileNameProperty( recls_info_t    hEntry
01090                                             ,   recls_char_t*   buffer
01091                                             ,   size_t          cchBuffer);
01092 
01103 RECLS_FNDECL(size_t) Recls_GetFileExtProperty(  recls_info_t    hEntry
01104                                             ,   recls_char_t*   buffer
01105                                             ,   size_t          cchBuffer);
01106 
01120 RECLS_FNDECL(size_t) Recls_GetDirectoryPartProperty(recls_info_t    hEntry
01121                                             ,   int                 part
01122                                             ,   recls_char_t*       buffer
01123                                             ,   size_t              cchBuffer);
01124 
01125 
01136 RECLS_FNDECL(recls_bool_t) Recls_IsFileReadOnly(recls_info_t hEntry);
01137 
01148 RECLS_FNDECL(recls_bool_t) Recls_IsFileDirectory(recls_info_t hEntry);
01149 
01160 RECLS_FNDECL(recls_bool_t) Recls_IsFileLink(recls_info_t hEntry);
01161 
01172 RECLS_FNDECL(recls_bool_t) Recls_DoesEntryExist(recls_info_t hEntry);
01173 
01184 RECLS_FNDECL(recls_bool_t) Recls_IsFileUNC(recls_info_t hEntry);
01185 
01195 RECLS_FNDECL(void)         Recls_GetSizeProperty(   recls_info_t        hEntry
01196                                                 ,   recls_filesize_t*   size);
01197 
01202 RECLS_FNDECL(recls_time_t) Recls_GetCreationTime(recls_info_t hEntry);
01203 
01208 RECLS_FNDECL(recls_time_t) Recls_GetModificationTime(recls_info_t hEntry);
01209 
01214 RECLS_FNDECL(recls_time_t) Recls_GetLastAccessTime(recls_info_t hEntry);
01215 
01220 RECLS_FNDECL(recls_time_t) Recls_GetLastStatusChangeTime(recls_info_t hEntry);
01221 
01222 #if 0
01223 
01230 RECLS_FNDECL(recls_uint32_t) Recls_GetChecksum(recls_info_t hEntry);
01231 #endif /* 0 */
01232 
01235 /***************************************
01236  * Extended API functions
01237  */
01238 
01251 RECLS_FNDECL(recls_bool_t) Recls_IsDirectoryEmpty(recls_char_t const* dir);
01252 
01259 RECLS_FNDECL(recls_bool_t) Recls_IsDirectoryEntryEmpty(recls_info_t hEntry);
01260 
01268 RECLS_FNDECL(recls_filesize_t) Recls_CalcDirectorySize(recls_char_t const* dir);
01269 
01277 RECLS_FNDECL(recls_filesize_t) Recls_CalcDirectoryEntrySize(recls_info_t hEntry);
01278 
01279 
01292 RECLS_FNDECL(recls_filesize_t) Recls_CalcDirectorySizeFeedback( recls_char_t const*         dir
01293                                                             ,   recls_uint32_t              flags
01294                                                             ,   hrecls_progress_fn_t        pfn
01295                                                             ,   recls_process_fn_param_t    param);
01296 
01299 /***************************************
01300  * Path functions
01301  */
01302 
01324 RECLS_FNDECL(size_t) Recls_CombinePaths(recls_char_t const* path1
01325                                     ,   recls_char_t const* path2
01326                                     ,   recls_char_t*       result
01327                                     ,   size_t              cchResult);
01328 
01340 RECLS_FNDECL(size_t) Recls_DeriveRelativePath(  recls_char_t const* origin
01341                                             ,   recls_char_t const* target
01342                                             ,   recls_char_t*       result
01343                                             ,   size_t              cchResult);
01344 
01355 RECLS_FNDECL(size_t) Recls_SqueezePath( recls_char_t const* path
01356                                     ,   recls_char_t*       result
01357                                     ,   size_t              cchResult);
01358 
01361 /* /////////////////////////////////////////////////////////////////////////////
01362  * Namespace
01363  */
01364 
01365 #if !defined(RECLS_NO_NAMESPACE)
01366 } /* namespace recls */
01367 #endif /* !RECLS_NO_NAMESPACE */
01368 
01369 #ifdef __cplusplus
01370 
01371 # ifndef _STLSOFT_NO_NAMESPACE
01372 namespace stlsoft
01373 {
01374 # endif /* !_STLSOFT_NO_NAMESPACE */
01375 
01376 # if defined(RECLS_NO_NAMESPACE)
01377 inline recls_char_t const* c_str_ptr(recls_root_t const &root)
01378 # else /* ? RECLS_NO_NAMESPACE */
01379 inline ::recls::recls_char_t const* c_str_ptr(::recls::recls_root_t const &root)
01380 # endif /* RECLS_NO_NAMESPACE */
01381 {
01382     return root.name;
01383 }
01384 
01385 #ifdef RECLS_CHAR_TYPE_IS_CHAR
01386 inline ::recls::recls_char_t const* c_str_ptr_a(::recls::recls_root_t const &root)
01387 {
01388     return c_str_ptr(root);
01389 }
01390 #endif /* RECLS_CHAR_TYPE_IS_CHAR */
01391 
01392 #ifdef RECLS_CHAR_TYPE_IS_WCHAR
01393 inline ::recls::recls_char_t const* c_str_ptr_w(::recls::recls_root_t const &root)
01394 {
01395     return c_str_ptr(root);
01396 }
01397 #endif /* RECLS_CHAR_TYPE_IS_WCHAR */
01398 
01399 
01400 # ifndef _STLSOFT_NO_NAMESPACE
01401 } /* namespace stlsoft */
01402 # endif /* !_STLSOFT_NO_NAMESPACE */
01403 
01404 #endif /* __cplusplus */
01405 
01406 /* /////////////////////////////////////////////////////////////////////////////
01407  * Platform-specific includes
01408  */
01409 
01419 #ifdef RECLS_PLATFORM_API_WIN32
01420 # undef RECLS_PLATFORM_API_WIN32
01421 #endif /* RECLS_PLATFORM_API_WIN32 */
01422 
01423 #ifdef RECLS_PLATFORM_API_UNIX
01424 # undef RECLS_PLATFORM_API_UNIX
01425 #endif /* RECLS_PLATFORM_API_UNIX */
01426 
01427 #if !defined(RECLS_PURE_API)
01428 # if defined(RECLS_PLATFORM_IS_WIN32)
01429 #  include <recls/win32.h>
01430 #  define RECLS_PLATFORM_API_WIN32
01431 # elif defined(RECLS_PLATFORM_IS_UNIX)
01432 #  include <recls/unix.h>
01433 #  define RECLS_PLATFORM_API_UNIX
01434 # else
01435 #  error Platform not recognised
01436 # endif /* platform */
01437 #endif /* !RECLS_PURE_API */
01438 
01439 /* /////////////////////////////////////////////////////////////////////////////
01440  * Inclusion
01441  */
01442 
01443 #ifdef RECLS_CF_PRAGMA_ONCE_SUPPORT
01444 # pragma once
01445 #endif /* RECLS_CF_PRAGMA_ONCE_SUPPORT */
01446 
01447 /* /////////////////////////////////////////////////////////////////////////////
01448  * Documentation
01449  */
01450 
01451 #ifdef RECLS_DOCUMENTATION_SKIP_SECTION
01452 # include <recls/internal/doc/includes.h>
01453 #endif /* RECLS_DOCUMENTATION_SKIP_SECTION */
01454 
01455 /* ////////////////////////////////////////////////////////////////////////// */
01456 
01457 #endif /* !RECLS_INCL_RECLS_H_RECLS */
01458 
01459 /* ////////////////////////////////////////////////////////////////////////// */

recls Library documentation © Synesis Software Pty Ltd, 2001-2006