diff options
| -rw-r--r-- | main.c | 138 |
1 files changed, 86 insertions, 52 deletions
@@ -120,6 +120,8 @@ void store_database(const task_t* database, uint32_t number_of_entries, const ch fclose(file); } +// Loads data from binary file into database. +// Returns number of loaded entries. uint32_t load_database(task_t** database, const char* path_name) { assert(database != NULL); @@ -269,8 +271,20 @@ void prt(char* str, uint8_t size) { // TODO Debug function... to be removed. fprintf(stderr, "\n"); } -void prototype() { +enum TEST { + T_NONE = 0x00, + T_UTC = 0x01, + T_DAY = 0x02, + T_SBIN = 0x04, + T_LBIN = 0x08, + T_ECSV = 0x10, + T_ICSV = 0x20, + T_ALL = 0xFF, +}; + +void prototype(int level) { + /* uint8_t size = 20; char* test_string; // C3 A7 - C3 A9 - C2 BA - 2C - F0 92 90 AB @@ -307,29 +321,29 @@ void prototype() { // truncate_string(test_string, 8); // fprintf(stderr, "%s", (char*)test_string); return; - + */ const char* done = "# -- done -- -- -- /\n"; /////////////////////////////////////////////////////////////////////////// // Get current UTC time. - - fprintf(stderr, "# current UTC time --------------------------- \\\n"); - time_t x = time(NULL); - printf("%s", ctime(&x)); - fprintf(stderr, done); - + if (level & T_UTC) { + fprintf(stderr, "# current UTC time --------------------------- \\\n"); + time_t x = time(NULL); + printf("%s", ctime(&x)); + fprintf(stderr, done); + } /////////////////////////////////////////////////////////////////////////// // Get current day of the week. - - fprintf(stderr, "# current day of the week --------------------- \\\n"); - time_t now_ut = time(NULL); - uint8_t week_day = localtime(&now_ut)->tm_wday; - fprintf(stderr, "%d\n", week_day); - fprintf(stderr, done); - + if (level & T_DAY) { + fprintf(stderr, "# current day of the week --------------------- \\\n"); + time_t now_ut = time(NULL); + uint8_t week_day = localtime(&now_ut)->tm_wday; + fprintf(stderr, "%d\n", week_day); + fprintf(stderr, done); + } /////////////////////////////////////////////////////////////////////////// // Prepare some data for testing. @@ -356,49 +370,49 @@ void prototype() { /////////////////////////////////////////////////////////////////////////// // Store database from memory to binary file. - - fprintf(stderr, "# store database ------------------------------ \\\n"); - store_database(tasks, tasks_count, DB_BIN_PATH_NAME); - fprintf(stderr, done); - + if (level & T_SBIN) { + fprintf(stderr, "# store database ------------------------------ \\\n"); + store_database(tasks, tasks_count, DB_BIN_PATH_NAME); + fprintf(stderr, done); + } /////////////////////////////////////////////////////////////////////////// // Load database from binary file to memory. - - fprintf(stderr, "# load database ------------------------------- \\\n"); - task_t* task_load = NULL; - uint32_t number_of_entries_load = load_database(&task_load, DB_BIN_PATH_NAME); - - fprintf(stderr, "loaded %" PRIu32 " entries.\n", number_of_entries_load); - for (uint32_t idx = 0; idx < number_of_entries_load; idx++) { - print_task(&task_load[idx]); + if (level & T_LBIN) { + fprintf(stderr, "# load database ------------------------------- \\\n"); + task_t* task_load = NULL; + uint32_t number_of_entries_load = load_database(&task_load, DB_BIN_PATH_NAME); + + fprintf(stderr, "loaded %" PRIu32 " entries.\n", number_of_entries_load); + for (uint32_t idx = 0; idx < number_of_entries_load; idx++) { + print_task(&task_load[idx]); + } + free(task_load); + fprintf(stderr, done); } - free(task_load); - fprintf(stderr, done); - /////////////////////////////////////////////////////////////////////////// // Export database to CSV file. - - fprintf(stderr, "# export to CSV ------------------------------- \\\n"); - export_database(tasks, tasks_count, DB_CSV_PATH_NAME); - fprintf(stderr, done); - + if (level & T_ECSV) { + fprintf(stderr, "# export to CSV ------------------------------- \\\n"); + export_database(tasks, tasks_count, DB_CSV_PATH_NAME); + fprintf(stderr, done); + } /////////////////////////////////////////////////////////////////////////// // Import database from CSV file. - - fprintf(stderr, "# import from CSV ----------------------------- \\\n"); - task_t* task_import = NULL; - uint32_t number_of_entries_import = import_database(&task_import, DB_CSV_PATH_NAME); - - fprintf(stderr, "imported %" PRIu32 " entries.\n", number_of_entries_import); - for (uint32_t idx = 0; idx < number_of_entries_import; idx++) { - print_task(&task_import[idx]); - } - free(task_import); - fprintf(stderr, done); - + if (level & T_ICSV) { + fprintf(stderr, "# import from CSV ----------------------------- \\\n"); + task_t* task_import = NULL; + uint32_t number_of_entries_import = import_database(&task_import, DB_CSV_PATH_NAME); + + fprintf(stderr, "imported %" PRIu32 " entries.\n", number_of_entries_import); + for (uint32_t idx = 0; idx < number_of_entries_import; idx++) { + print_task(&task_import[idx]); + } + free(task_import); + fprintf(stderr, done); + } /////////////////////////////////////////////////////////////////////////// // Release memory and exit. @@ -594,11 +608,32 @@ int main(int argc, char *argv[]) { if (argc > 1) { // const char* command_version = { "--version", "-v" }; + char* action; + bool do_action = false; for (int idx = 1; idx < argc; idx++) { - if (strncmp(argv[idx], "-v", 2) == 0 || strncmp(argv[idx], "--version", 9) == 0) { + + action = "--version"; + do_action = strncmp(argv[idx], action, strlen(action)) == 0; + action = "-v"; + do_action |= strncmp(argv[idx], action, strlen(action)) == 0; + if (do_action) { fprintf(stdout, "Task Time Tracker v1.0\n"); return EXIT_SUCCESS; } + + action = "--fake_bin"; + do_action = strncmp(argv[idx], action, strlen(action)) == 0; + if (do_action) { + prototype(T_SBIN); + return EXIT_SUCCESS; + } + + action = "--test"; + do_action = strncmp(argv[idx], action, strlen(action)) == 0; + if (do_action) { + prototype(T_ALL); + return EXIT_SUCCESS; + } } @@ -606,10 +641,9 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + tasks_count = load_database(&tasks, DB_BIN_PATH_NAME); + tasks_capacity = tasks_count; - - prototype(); // TODO - return EXIT_FAILURE; initialize_layouts(); WINDOW *my_win; |
