diff options
| author | Enrique | 2025-01-06 16:40:25 +0100 |
|---|---|---|
| committer | Enrique | 2025-01-06 16:40:25 +0100 |
| commit | 7f3fab3aab6a4de059277330fa52049033f022fc (patch) | |
| tree | b918c9dc8314463fb67cfbd1d33338b814d03a7a /src/dir/dir.c | |
| download | soikk-server-7f3fab3aab6a4de059277330fa52049033f022fc.tar.xz soikk-server-7f3fab3aab6a4de059277330fa52049033f022fc.tar.zst | |
Initial commit
Diffstat (limited to 'src/dir/dir.c')
| -rwxr-xr-x | src/dir/dir.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/dir/dir.c b/src/dir/dir.c new file mode 100755 index 0000000..6c1f32d --- /dev/null +++ b/src/dir/dir.c @@ -0,0 +1,72 @@ +#include "dir.h" + + +uint64_t get_fd_size(int fd){ + struct stat st; + if(fstat(fd, &st) == 0){ + return st.st_size; + } + return 0; +} + +uint64_t get_fp_size(FILE *fp){ + if(fp != NULL){ + return get_fd_size(fileno(fp)); + } + return 0; +} + +uint64_t get_file_size(char *filename){ + struct stat st; + if(stat(filename, &st) == 0){ + return st.st_size; + } + return 0; +} + +struct str get_file_format(struct str filename){ + int i = 0; + while(filename.len-i > 0){ + if(filename.ptr[filename.len-i-1] == '.') break; + i++; + } + if(i == 0 || i == filename.len){ + return ((struct str){0}); + } + struct str fmt; + fmt.len = i; + fmt.ptr = calloc(fmt.len+1, sizeof(char)); + if(fmt.ptr == NULL) return ((struct str){0}); + memcpy(fmt.ptr, filename.ptr+filename.len-i, fmt.len); + return fmt; +} + +uint64_t getNEntries(const char *dir){ + uint64_t r = 0; + DIR *d = opendir(dir); + if(d){ + seekdir(d, (unsigned)-1); + r = telldir(d) - 2; // . and .. + closedir(d); + } + return r; +} + +char **getFiles(const char *dir){ + /*int i = 0, n = getNEntries(dir); + if(n > 0){ + char **r = calloc(n, sizeof(char*)); + DIR *d = opendir(dir); + readdir(d); readdir(d); // . and .. + struct dirent *t; + while((t = readdir(d)) != NULL){ + int l = len(t->d_name); + r[i] = calloc(l+1, sizeof(char)); + memmove(r[i++], t->d_name, l); + } + closedir(d); + return r; + }*/ + return NULL; +} + |
