summaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
authorSoikk2025-06-13 15:24:41 +0200
committerSoikk2025-06-13 15:24:41 +0200
commit2435603717c23074edb156249f7b736a42fa20a4 (patch)
treecca83333cda42a30363ee6d8f7cdfb5b8c9a6f8f /files
parentdd02677ad827ab4362e43374658dfa21584a3256 (diff)
downloadsoikk-libs-2435603717c23074edb156249f7b736a42fa20a4.tar.xz
soikk-libs-2435603717c23074edb156249f7b736a42fa20a4.tar.zst
Added files.h and files.c
Diffstat (limited to 'files')
-rw-r--r--files/files.c59
-rw-r--r--files/files.h19
2 files changed, 78 insertions, 0 deletions
diff --git a/files/files.c b/files/files.c
new file mode 100644
index 0000000..badd542
--- /dev/null
+++ b/files/files.c
@@ -0,0 +1,59 @@
+#include "files.h"
+
+
+int dir_exists(char *dirpath){
+ struct stat st;
+ if(stat(dirpath, &st) == 0){
+ return S_ISDIR(st.st_mode);
+ }
+ return 0;
+}
+
+int file_exists(char *filepath){
+ struct stat st;
+ if(stat(filepath, &st) == 0){
+ return S_ISREG(st.st_mode);
+ }
+ return 0;
+}
+
+int path_exists(char *path){
+ return dir_exists(path) || file_exists(path);
+}
+
+u64 get_fd_size(int fd){
+ struct stat st;
+ if(fstat(fd, &st) == 0){
+ return st.st_size;
+ }
+ return 0;
+}
+
+u64 get_fp_size(FILE *fp){
+ if(fp != NULL){
+ return get_fd_size(fileno(fp));
+ }
+ return 0;
+}
+
+u64 get_file_size(char *filename){
+ struct stat st;
+ if(stat(filename, &st) == 0){
+ return st.st_size;
+ }
+ return 0;
+}
+
+char *get_extension(char *filename){
+ int len = 0, i = 0;
+ while(filename[len] != '\0') len++;
+ while(len-i > 0){
+ if(filename[len-i-1] == '.') break;
+ i++;
+ }
+ if(i == 0 || i == len){
+ return NULL;
+ }
+ return filename + len - i;
+}
+
diff --git a/files/files.h b/files/files.h
new file mode 100644
index 0000000..33fba80
--- /dev/null
+++ b/files/files.h
@@ -0,0 +1,19 @@
+#ifndef FILES_H
+#define FILES_H
+
+#include <stdio.h>
+#include <sys/stat.h>
+#include "types/types.h"
+
+
+int dir_exists(char *dirpath);
+int file_exists(char *filepath);
+int path_exists(char *path);
+
+u64 get_fd_size(int fd);
+u64 get_fp_size(FILE *fp);
+u64 get_file_size(char *filename);
+
+char *get_extension(char *filename);
+
+#endif