diff options
Diffstat (limited to 'src/easydir.c')
-rw-r--r-- | src/easydir.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/easydir.c b/src/easydir.c new file mode 100644 index 0000000..162bae7 --- /dev/null +++ b/src/easydir.c @@ -0,0 +1,79 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/wait.h> +#include <errno.h> + +#include "handerror.h" + +int deleteFile(char *file_path) +{ + char *arguments[] = {"rm", file_path, NULL}; + easyFork("rm", arguments); + + return 1; +} + +int deleteEmptyDir(char *dir_path) +{ + #if defined(DEBUG) + char *arguments[] = {"rmdir", "-p", dir_path, NULL}; + #else + char *arguments[] = {"rmdir", "-p", "--ignore-fail-on-non-empty", dir_path, NULL}; + #endif + easyFork("rmdir", arguments); + + return 1; +} + +int checkFileExist(char *path_to_file) +{ + FILE *pFile; + + pFile = fopen(path_to_file, "r+"); // r+ so that errno can equal EISDIR + if(pFile == NULL) { + if(errno == ENOENT) // file doesn't exist + return 0; + if(errno == EISDIR) // it's directory + return 2; + else callError(120); + } + fclose(pFile); + + return 1; +} + +char *fileCropLineFeed(char *path, char *text, int maxlen) +{ + FILE *file = fopen(path, "r+"); + if(file == NULL) callError(130); + + int symbol; + int pos = 0; + char *str = (char *) malloc(sizeof(char) * maxlen); + while((symbol = fgetc(file))) + { + switch(symbol) + { + case '\n': + case EOF: { + str[pos] = '\0'; + pos = -1; // for break while + break; + } + default: { + str[pos] = symbol; + pos++; + break; + } + } + if(pos == -1) break; + if(pos > maxlen-1) { str[pos-1] = '\0'; break; } + } + fclose(file); + + strcpy(text, str); + free(str); + return text; +} |