00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00043
00044
00045
00046
00047 #ifndef RECLS_DOCUMENTATION_SKIP_SECTION
00048 # define RECLS_VER_H_RECLS_MAJOR 2
00049 # define RECLS_VER_H_RECLS_MINOR 4
00050 # define RECLS_VER_H_RECLS_REVISION 1
00051 # define RECLS_VER_H_RECLS_EDIT 54
00052 #endif
00053
00068
00069 #define RECLS_VER_MAJOR 1
00070 #define RECLS_VER_MINOR 6
00071 #define RECLS_VER_REVISION 2
00072 #define RECLS_VER_1_0_1 0x01000100
00073 #define RECLS_VER_1_1_1 0x01010100
00074 #define RECLS_VER_1_2_1 0x01020100
00075 #define RECLS_VER_1_3_1 0x01030100
00076 #define RECLS_VER_1_4_1 0x01040100
00077 #define RECLS_VER_1_4_2 0x01040200
00078 #define RECLS_VER_1_5_1 0x01050100
00079 #define RECLS_VER_1_5_2 0x01050200
00080 #define RECLS_VER_1_5_3 0x01050300
00081 #define RECLS_VER_1_6_1 0x01060100
00082 #define RECLS_VER_1_6_2 0x01060200
00083 #define RECLS_VER RECLS_VER_1_6_2
00084
00085
00086
00087
00088
00089 #ifndef RECLS_NO_STRICT
00090 # define RECLS_STRICT
00091 #endif
00092
00093
00094
00095
00096
00097
00098 #include "recls_language.h"
00099
00100 #include "recls_platform.h"
00101
00102 #include "recls_compiler.h"
00103
00104 #include "recls_platform_types.h"
00105
00106
00107
00108
00109
00110 #if !defined(RECLS_NO_NAMESPACE)
00111 namespace recls
00112 {
00113 #endif
00114
00115 #if !defined(RECLS_NO_NAMESPACE)
00116 # define RECLS_QUAL(x) ::recls::x
00117 #else
00118 # define RECLS_QUAL(x) x
00119 #endif
00120
00121
00122
00123
00124
00125
00126 #if defined(RECLS_PLATFORM_IS_WIN32)
00127 # define RECLS_ROOT_NAME_LEN (3)
00128 #elif defined(RECLS_PLATFORM_IS_UNIX)
00129 # define RECLS_ROOT_NAME_LEN (1)
00130 #elif defined(RECLS_OVERRIDE_PLATFORM)
00131
00132 #else
00133 # error Platform not recognised
00134 #endif
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145 #define RECLS_FNDECL(rt) RECLS_LINKAGE_C rt RECLS_CALLCONV_DEFAULT
00146
00147
00148
00149
00150
00151
00152 #ifdef __cplusplus
00153
00155 typedef recls_sint32_t recls_rc_t;
00156
00158 const recls_rc_t RECLS_RC_OK(0);
00160 const recls_rc_t RECLS_RC_FAIL(-1);
00161
00163 inline bool RECLS_FAILED(recls_rc_t const &rc)
00164 {
00165 return rc < 0;
00166 }
00167
00169 inline bool RECLS_SUCCEEDED(recls_rc_t const &rc)
00170 {
00171 return !RECLS_FAILED(rc);
00172 }
00173
00174 #else
00175
00177 typedef recls_sint32_t recls_rc_t;
00178
00180 # define RECLS_RC_OK (0)
00181
00182 # define RECLS_RC_FAIL (-1)
00183
00185 # define RECLS_FAILED(rc) ((rc) < 0)
00186
00187 # define RECLS_SUCCEEDED(rc) (!RECLS_FAILED(rc))
00188
00189 #endif
00190
00191
00192
00193 #if !defined(RECLS_DOCUMENTATION_SKIP_SECTION) && \
00194 defined(RECLS_COMPILER_IS_BORLAND) && \
00195 __BORLANDC__ < 0x0560
00196 struct hrecls_t_
00197 {
00198 int dummy;
00199 };
00200 #else
00201 struct hrecls_t_;
00202 #endif
00203
00205 typedef struct hrecls_t_ const * hrecls_t;
00206
00207
00208
00209
00210
00211
00212 #if !defined(RECLS_NO_NAMESPACE)
00213 }
00214 #endif
00215
00216
00217
00218
00219
00220
00221 #include "recls_retcodes.h"
00222
00223
00224
00225
00226
00227 #if !defined(RECLS_NO_NAMESPACE)
00228 namespace recls
00229 {
00230 #endif
00231
00232
00233
00234
00235
00243 enum RECLS_FLAG
00244 {
00245 RECLS_F_FILES = 0x00000001
00246 , RECLS_F_DIRECTORIES = 0x00000002
00247 , RECLS_F_LINKS = 0x00000004
00248 , RECLS_F_DEVICES = 0x00000008
00249 , RECLS_F_TYPEMASK = 0x00000FFF
00250 #if 0
00251 , RECLS_F_DIR_PROGRESS = 0x00001000
00252 #endif
00253 , RECLS_F_RECURSIVE = 0x00010000
00254 , RECLS_F_NO_FOLLOW_LINKS = 0x00020000
00255 , RECLS_F_DIRECTORY_PARTS = 0x00040000
00256 , RECLS_F_DETAILS_LATER = 0x00080000
00257 , RECLS_F_PASSIVE_FTP = 0x00100000
00258 };
00259
00260 #if !defined(__cplusplus) && \
00261 !defined(RECLS_DOCUMENTATION_SKIP_SECTION)
00262 typedef enum RECLS_FLAG RECLS_FLAG;
00263 #endif
00264
00265
00266
00267
00268
00271
00272
00273
00274
00275 #ifndef RECLS_COMPILER_IS_CH
00276 typedef struct recls_root
00277 {
00279 recls_char_t name[1 + RECLS_ROOT_NAME_LEN];
00280 } recls_root_t;
00281 #endif
00282
00283 #ifndef RECLS_COMPILER_IS_CH
00284 struct recls_fileinfo_t;
00285 #endif
00286
00288 typedef struct recls_fileinfo_t const *recls_info_t;
00289
00291 typedef void *recls_process_fn_param_t;
00292
00301 typedef int (RECLS_CALLCONV_DEFAULT *hrecls_process_fn_t)(recls_info_t hEntry, recls_process_fn_param_t param);
00302
00303
00304
00305
00306
00307 #if !defined(RECLS_NO_NAMESPACE)
00308 typedef recls_info_t info_t;
00309 typedef recls_process_fn_param_t process_fn_param_t;
00310 #endif
00311
00312
00313
00314
00315
00316
00317
00318
00319
00349 #ifndef RECLS_COMPILER_IS_CH
00350 RECLS_FNDECL(size_t) Recls_GetRoots( recls_root_t *roots
00351 , size_t cRoots);
00352 #endif
00353
00366 RECLS_FNDECL(recls_char_t const*) Recls_GetPathNameSeparator(void);
00367
00380 RECLS_FNDECL(recls_char_t const*) Recls_GetPathSeparator(void);
00381
00394 RECLS_FNDECL(recls_char_t const*) Recls_GetWildcardsAll(void);
00395
00398
00399
00400
00401
00418 RECLS_FNDECL(recls_rc_t) Recls_Search( recls_char_t const *searchRoot
00419 , recls_char_t const *pattern
00420 , recls_uint32_t flags
00421 , hrecls_t *phSrch);
00422
00434 RECLS_FNDECL(recls_rc_t) Recls_SearchProcess( recls_char_t const *searchRoot
00435 , recls_char_t const *pattern
00436 , recls_uint32_t flags
00437 , hrecls_process_fn_t pfn
00438 , recls_process_fn_param_t param);
00439
00444 RECLS_FNDECL(void) Recls_SearchClose( hrecls_t hSrch);
00445
00446
00457 RECLS_FNDECL(recls_rc_t) Recls_Stat( recls_char_t const *path
00458 , recls_uint32_t flags
00459 , recls_info_t *phEntry);
00460
00463
00464
00465
00466
00481 RECLS_FNDECL(recls_rc_t) Recls_GetNext( hrecls_t hSrch);
00482
00492 RECLS_FNDECL(recls_rc_t) Recls_GetDetails( hrecls_t hSrch
00493 , recls_info_t *phEntry);
00494
00503 RECLS_FNDECL(recls_rc_t) Recls_GetNextDetails( hrecls_t hSrch
00504 , recls_info_t *phEntry);
00505
00508
00509
00510
00511
00522 RECLS_FNDECL(void) Recls_CloseDetails( recls_info_t hEntry);
00523
00532 RECLS_FNDECL(recls_rc_t) Recls_CopyDetails( recls_info_t hEntry
00533 , recls_info_t *phEntry);
00534
00543 RECLS_FNDECL(recls_rc_t) Recls_OutstandingDetails(hrecls_t hSrch
00544 , recls_uint32_t *count);
00545
00548
00549
00550
00551
00563 RECLS_FNDECL(recls_rc_t) Recls_GetLastError( hrecls_t hSrch);
00564
00572 RECLS_FNDECL(size_t) Recls_GetErrorString( recls_rc_t rc
00573 , recls_char_t *buffer
00574 , size_t cchBuffer);
00575
00583 RECLS_FNDECL(size_t) Recls_GetLastErrorString( hrecls_t hSrch
00584 , recls_char_t *buffer
00585 , size_t cchBuffer);
00586
00589
00590
00591
00592
00606 RECLS_FNDECL(size_t) Recls_GetPathProperty( recls_info_t hEntry
00607 , recls_char_t *buffer
00608 , size_t cchBuffer);
00609
00617 RECLS_FNDECL(size_t) Recls_GetDirectoryProperty(recls_info_t hEntry
00618 , recls_char_t *buffer
00619 , size_t cchBuffer);
00620
00629 RECLS_FNDECL(size_t) Recls_GetDirectoryPathProperty( recls_info_t hEntry
00630 , recls_char_t *buffer
00631 , size_t cchBuffer);
00632
00641 RECLS_FNDECL(size_t) Recls_GetUNCDriveProperty( recls_info_t hEntry
00642 , recls_char_t *buffer
00643 , size_t cchBuffer);
00644
00652 RECLS_FNDECL(size_t) Recls_GetFileProperty( recls_info_t hEntry
00653 , recls_char_t *buffer
00654 , size_t cchBuffer);
00655
00665 RECLS_FNDECL(size_t) Recls_GetShortFileProperty(recls_info_t hEntry
00666 , recls_char_t *buffer
00667 , size_t cchBuffer);
00668
00676 RECLS_FNDECL(size_t) Recls_GetFileNameProperty( recls_info_t hEntry
00677 , recls_char_t *buffer
00678 , size_t cchBuffer);
00679
00687 RECLS_FNDECL(size_t) Recls_GetFileExtProperty( recls_info_t hEntry
00688 , recls_char_t *buffer
00689 , size_t cchBuffer);
00690
00701 RECLS_FNDECL(size_t) Recls_GetDirectoryPartProperty(recls_info_t hEntry
00702 , int part
00703 , recls_char_t *buffer
00704 , size_t cchBuffer);
00705
00706
00715 RECLS_FNDECL(recls_bool_t) Recls_IsFileReadOnly(recls_info_t hEntry);
00716
00725 RECLS_FNDECL(recls_bool_t) Recls_IsFileDirectory(recls_info_t hEntry);
00726
00735 RECLS_FNDECL(recls_bool_t) Recls_IsFileLink( recls_info_t hEntry);
00736
00745 RECLS_FNDECL(recls_bool_t) Recls_IsFileUNC( recls_info_t hEntry);
00746
00754 RECLS_FNDECL(void) Recls_GetSizeProperty( recls_info_t hEntry
00755 , recls_filesize_t *size);
00756
00758 RECLS_FNDECL(recls_time_t) Recls_GetCreationTime(recls_info_t hEntry);
00759
00761 RECLS_FNDECL(recls_time_t) Recls_GetModificationTime(recls_info_t hEntry);
00762
00764 RECLS_FNDECL(recls_time_t) Recls_GetLastAccessTime(recls_info_t hEntry);
00765
00767 RECLS_FNDECL(recls_time_t) Recls_GetLastStatusChangeTime(recls_info_t hEntry);
00768
00771
00772
00773
00774
00781
00782
00783
00784
00785
00786 RECLS_FNDECL(recls_bool_t) Recls_IsDirectoryEmpty(recls_char_t const *dir);
00787
00788 RECLS_FNDECL(recls_bool_t) Recls_IsDirectoryEntryEmpty(recls_info_t hEntry);
00789
00790 RECLS_FNDECL(recls_filesize_t) Recls_CalcDirectorySize(recls_char_t const *dir);
00791
00792 RECLS_FNDECL(recls_filesize_t) Recls_CalcDirectoryEntrySize(recls_info_t hEntry);
00793
00796
00797
00798
00799
00800 #if !defined(RECLS_NO_NAMESPACE)
00801 }
00802 #endif
00803
00804 #ifdef __cplusplus
00805
00806 # ifndef _STLSOFT_NO_NAMESPACE
00807 namespace stlsoft
00808 {
00809 # endif
00810
00811 # if defined(RECLS_NO_NAMESPACE)
00812 inline recls_char_t const *c_str_ptr(recls_root_t const &root)
00813 # else
00814 inline ::recls::recls_char_t const *c_str_ptr(::recls::recls_root_t const &root)
00815 # endif
00816 {
00817 return root.name;
00818 }
00819
00820 # ifndef _STLSOFT_NO_NAMESPACE
00821 }
00822 # endif
00823
00824 #endif
00825
00826
00827
00828
00829
00830
00831
00832
00833 #ifdef RECLS_PLATFORM_API_WIN32
00834 # undef RECLS_PLATFORM_API_WIN32
00835 #endif
00836
00837 #ifdef RECLS_PLATFORM_API_UNIX
00838 # undef RECLS_PLATFORM_API_UNIX
00839 #endif
00840
00841 #if !defined(RECLS_PURE_API)
00842 # if defined(RECLS_PLATFORM_IS_WIN32)
00843 # include "recls_win32.h"
00844 # define RECLS_PLATFORM_API_WIN32
00845 # elif defined(RECLS_PLATFORM_IS_UNIX)
00846 # include "recls_unix.h"
00847 # define RECLS_PLATFORM_API_UNIX
00848 # else
00849 # error Platform not recognised
00850 # endif
00851 #endif
00852
00853
00854
00855
00856
00857