Skip to content

Commit f717ab1

Browse files
authored
Update functions.c
1 parent 0ad8d9a commit f717ab1

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

c/functions.c

+80
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
#include <stdlib.h>
33

44
#ifdef _WIN32
5+
56
#include <windows.h>
7+
#define TIDY_MAX_PATH = MAX_PATH
8+
69
#else
10+
11+
#include <linux/limits.h>
712
#include <sys/stat.h>
813
#include <unistd.h>
14+
#define TIDY_MAX_PATH = PATH_MAX
15+
916
#endif
1017

1118
enum TidyBoolean{
@@ -20,6 +27,18 @@ struct TidyResult{
2027
};
2128
typedef struct TidyResult TidyResult;
2229

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+
2342
TidyBoolean tidyFML_exists(const char tidyPath[]){
2443
#ifdef _WIN32
2544
DWORD tidyAttributes = GetFileAttributes(tidyPath);
@@ -232,3 +251,64 @@ long tidyFML_fileSize(const char[] tidyPath){
232251
return (long)st.st_size;
233252
#endif
234253
}
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

Comments
 (0)