2
2
#include <stdlib.h>
3
3
4
4
#ifdef _WIN32
5
+
5
6
#include <windows.h>
7
+ #define TIDY_MAX_PATH = MAX_PATH
8
+
6
9
#else
10
+
11
+ #include <linux/limits.h>
7
12
#include <sys/stat.h>
8
13
#include <unistd.h>
14
+ #define TIDY_MAX_PATH = PATH_MAX
15
+
9
16
#endif
10
17
11
18
enum TidyBoolean {
@@ -20,6 +27,18 @@ struct TidyResult{
20
27
};
21
28
typedef struct TidyResult TidyResult ;
22
29
30
+ struct TidyListPath {
31
+ char * result [TIDY_MAX_PATH ];
32
+ TidyBoolean error ;
33
+ };
34
+ typedef struct TidyListPath TidyListPath ;
35
+
36
+ enum TidyOSType {
37
+ WINDOWS ,
38
+ UNIX
39
+ };
40
+ typedef enum TidyOSType TidyOSType ;
41
+
23
42
TidyBoolean tidyFML_exists (const char tidyPath []){
24
43
#ifdef _WIN32
25
44
DWORD tidyAttributes = GetFileAttributes (tidyPath );
@@ -232,3 +251,64 @@ long tidyFML_fileSize(const char[] tidyPath){
232
251
return (long )st .st_size ;
233
252
#endif
234
253
}
254
+
255
+ TidyListPath tidyFML_list (const char [] tidyPath ){
256
+ TidyListPath tidyListPath ;
257
+ tidyListPath .result = [];
258
+
259
+ WIN32_FIND_DATA tidyFind ;
260
+ HANDLE tidyDir = FindFirstFile (tidyPath , & tidyFind );
261
+ if (tidyDir == INVALID_HANDLE_VALUE ){
262
+ tidyListPath .error = TRUE;
263
+ return tidyListPath ;
264
+ }
265
+ do {
266
+ tidyListPath += tidyFind .cFileName ;
267
+ } while (FindNextFile (tidyDir , & tidyFind ) != 0 );
268
+ return tidyListPath ;
269
+ }
270
+
271
+ long tidyFML_folderSize (const char [] tidyPath ){
272
+ long tidyNum = 0 ;
273
+ WIN32_FIND_DATA tidyFind ;
274
+ HANDLE tidyDir = FindFirstFile (tidyPath , & tidyFind );
275
+ if (tidyDir == INVALID_HANDLE_VALUE ){
276
+ return -1 ;
277
+ }
278
+ do {
279
+ char tidyAbsolutePath [TIDY_MAX_PATH ];
280
+ snprintf (tidyAbsolutePath , TIDY_MAX_PATH , "%s//%s" , tidyPath , tidyFind .cFileName );
281
+ if (tidyFML_isFile (tidyAbsolutePath )){
282
+ tidyNum += tidyFML_fileSize (tidyAbsolutePath );
283
+ }
284
+ else {
285
+ tidyNum += tidyFML_folderSize (tidyAbsolutePath );
286
+ }
287
+ } while (FindNextFile (tidyDir , & tidyFind ) != 0 );
288
+ return tidyNum ;
289
+ }
290
+
291
+ long tidyFML_size (const char [] tidyPath ){
292
+ if (tidyFML_isFile (tidyPath )){
293
+ return tidyFML_fileSize (tidyPath );
294
+ }
295
+ else if (tidyFML_isFolder (tidyPath )){
296
+ return tidyFML_folderSize (tidyPath );
297
+ }
298
+ else {
299
+ return -1 ;
300
+ }
301
+ }
302
+
303
+ TidyOSType tidyFML_getOSType (){
304
+ #ifdef _WIN32
305
+ return WINDOWS ;
306
+ #else
307
+ return UNIX ;
308
+ }
309
+ static TidyOSType tidyOSType = tidyFML_getOSType ();
310
+
311
+ long tidyFML_getTidyMaxPath (){
312
+ return (long )TIDY_MAX_PATH ;
313
+ }
314
+ static long tidyMaxPath = tidyFML_getTidyMaxPath ();
0 commit comments