From 8dc46c9a698401f43a315e49c84851ba94423d30 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Thu, 2 Sep 2021 11:08:05 +0300 Subject: (1) Implemented file (folder) creation and initialisation --- src/fileManager.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 9 ++++++--- 2 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 src/fileManager.c diff --git a/src/fileManager.c b/src/fileManager.c new file mode 100644 index 0000000..56e52cc --- /dev/null +++ b/src/fileManager.c @@ -0,0 +1,59 @@ +/* . + * L__ Procedures + * | L__ 1h_workout.you86 + * | L__ 15m_workout.you86 + * | L__ math_homework.you86 + * | L__ grocery_shopping.you86 + * | + * L__ DailyStack + * L__ 02.09.2021 + * L__ ParentProcedures.you86 + * L__ result-1h_workout.png + * L__ result-math_homework.docx + */ +#include +#include +#include +#include +#include +#include + +#define ROOT_DIR "/Documents/You86/" +#define PROCEDURES_DIR ROOT_DIR"Procedures/" +#define DAILY_STACK_DIR ROOT_DIR"DailyStack/" + +void createDir(char *); + +void initFiles() { + createDir(ROOT_DIR); + createDir(PROCEDURES_DIR); + createDir(DAILY_STACK_DIR); +} + +void createDir(char *p_path) { + char *p_tilde = getenv("HOME"); + int tildeLen = strlen(p_tilde), pathLen = strlen(p_path); + + char fullPath[tildeLen + pathLen]; + for (int i = 0; i < tildeLen + pathLen; i++) + fullPath[i] = (i < tildeLen) ? p_tilde[i] : p_path[i - tildeLen]; + + int ret = mkdir(fullPath, S_IRWXU); + if (ret == -1) { + switch (errno) { + case EEXIST: + return; + case EACCES : + printf("The parent directory does not allow write for %s", fullPath); + break; + case ENAMETOOLONG: + printf("Pathname \"%s\" is too long", fullPath); + break; + default: + perror("mkdir"); + printf("Path: \"%s\"\n", fullPath); + break; + } + exit(EXIT_FAILURE); + } +} diff --git a/src/main.c b/src/main.c index 3f2bba6..303efea 100644 --- a/src/main.c +++ b/src/main.c @@ -7,16 +7,19 @@ #define SHELL_STRING "> " +extern void initFiles(); extern void registerDefaultHandlers(); -void printDefault(); + extern bool route(char *command); +void printDefault(); int main() { + initFiles(); + registerDefaultHandlers(); + char buffer[LINE_MAX]; buffer[0] = 0; - registerDefaultHandlers(); - printf("Welcome!\n\n"); do { // Removes the Line Feed character at the "end", if it exists -- cgit v1.2.3