From e4af09acf3cf110a3ce1223d9ed71e5dd2206adb Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 16 Feb 2026 20:19:30 +0100 Subject: [PATCH] change xml command with sub methods --- src/feierabendxml.c | 178 +++++++++++++++++++++++++------------------- 1 file changed, 101 insertions(+), 77 deletions(-) diff --git a/src/feierabendxml.c b/src/feierabendxml.c index 6c9c8f8..b12c3d7 100644 --- a/src/feierabendxml.c +++ b/src/feierabendxml.c @@ -11,10 +11,98 @@ #define CMD_DATEADD "dateadd" #define CMD_MERGE "merge" +int _command_version() +{ + printf("Version: %s\n", PROJECT_VERSION); + return EXIT_SUCCESS; +} + +int _command_init(const int argc, const char* argv[]) +{ + if (argc > 2 && argc < 4) { + const char* program = argv[0]; + printf("ERROR: %s init [ ]\n", program); + return EXIT_FAILURE; + } + + if (argc >= 4) { + const uint8_t hour = atoi(argv[2]); + const uint8_t min = atoi(argv[3]); + init_time_acount(hour, min); + return EXIT_SUCCESS; + } + + init_time_acount(0, 0); + return EXIT_SUCCESS; +} + +int _command_merge(const int argc, const char* argv[]) +{ + if (argc < 3) { + const char* program = argv[0]; + printf("ERROR: %s merge \n", program); + return EXIT_FAILURE; + } + + const char* dir = argv[2]; + merge(dir); + return EXIT_SUCCESS; +} + +int _command_add(const int argc, const char* argv[]) +{ + if (argc < 6) { + const char* program = argv[0]; + printf("ERROR: %s add \n", program); + return EXIT_FAILURE; + } + + if (!validate_hourstring(argv[2]) + || !validate_minutestring(argv[3]) + || !validate_hourstring(argv[4]) + || !validate_minutestring(argv[5])) { + printf("ERROR: one or more invalid arguments\n"); + return EXIT_FAILURE; + } + + const uint8_t begin_hour = atoi(argv[2]); + const uint8_t begin_min = atoi(argv[3]); + const uint8_t end_hour = atoi(argv[4]); + const uint8_t end_min = atoi(argv[5]); + add_entry(NULL, begin_hour, begin_min, end_hour, end_min); + return EXIT_SUCCESS; +} + +int _command_dateadd(const int argc, const char* argv[]) +{ + if (argc < 7) { + const char* program = argv[0]; + printf("ERROR: %s dateadd \n", program); + return EXIT_FAILURE; + } + + if (!validate_datestring(argv[2]) + || !validate_hourstring(argv[3]) + || !validate_minutestring(argv[4]) + || !validate_hourstring(argv[5]) + || !validate_minutestring(argv[6])) { + printf("ERROR: one or more invalid arguments\n"); + return EXIT_FAILURE; + } + + const char* date = argv[2]; + const uint8_t begin_hour = atoi(argv[3]); + const uint8_t begin_min = atoi(argv[4]); + const uint8_t end_hour = atoi(argv[5]); + const uint8_t end_min = atoi(argv[6]); + add_entry(date, begin_hour, begin_min, end_hour, end_min); + return EXIT_SUCCESS; +} + int main(const int argc, const char* argv[]) { - const char* program = argv[0]; if (argc < 2) { + const char* program = argv[0]; printf("ERROR: %s <%s|%s|%s|%s|%s>\n", program, CMD_INIT, @@ -22,89 +110,25 @@ int main(const int argc, const char* argv[]) CMD_DATEADD, CMD_MERGE, CMD_VERSION); - return 1; + return EXIT_FAILURE; } const char* command = argv[1]; - if (strcmp(command, CMD_VERSION) == 0) { - printf("Version: %s\n", PROJECT_VERSION); - return 0; - } + if (strcmp(command, CMD_VERSION) == 0) + return _command_version(); - if (strcmp(command, CMD_INIT) == 0) { - if (argc > 2 && argc < 4) { - printf("ERROR: %s init [ ]\n", program); - return 1; - } - - if (argc >= 4) { - const uint8_t hour = atoi(argv[2]); - const uint8_t min = atoi(argv[3]); - init_time_acount(hour, min); - return 0; - } - - init_time_acount(0, 0); - return 0; - } + if (strcmp(command, CMD_INIT) == 0) + return _command_init(argc, argv); - if (strcmp(command, CMD_MERGE) == 0) { - if (argc < 3) { - printf("ERROR: %s merge \n", argv[0]); - return 1; - } + if (strcmp(command, CMD_MERGE) == 0) + return _command_merge(argc, argv); - const char* dir = argv[2]; - merge(dir); - return 0; - } + if (strcmp(command, CMD_ADD) == 0) + return _command_add(argc, argv); - if (strcmp(command, CMD_ADD) == 0) { - if (argc < 6) { - printf("ERROR: %s add \n", program); - return 1; - } - - if (!validate_hourstring(argv[2]) - || !validate_minutestring(argv[3]) - || !validate_hourstring(argv[4]) - || !validate_minutestring(argv[5])) { - printf("ERROR: one or more invalid arguments\n"); - return 1; - } - - const uint8_t begin_hour = atoi(argv[2]); - const uint8_t begin_min = atoi(argv[3]); - const uint8_t end_hour = atoi(argv[4]); - const uint8_t end_min = atoi(argv[5]); - add_entry(NULL, begin_hour, begin_min, end_hour, end_min); - return 0; - } - - if (strcmp(command, CMD_DATEADD) == 0) { - if (argc < 7) { - printf("ERROR: %s dateadd \n", program); - return 1; - } - - if (!validate_datestring(argv[2]) - || !validate_hourstring(argv[3]) - || !validate_minutestring(argv[4]) - || !validate_hourstring(argv[5]) - || !validate_minutestring(argv[6])) { - printf("ERROR: one or more invalid arguments\n"); - return 1; - } - - const char* date = argv[2]; - const uint8_t begin_hour = atoi(argv[3]); - const uint8_t begin_min = atoi(argv[4]); - const uint8_t end_hour = atoi(argv[5]); - const uint8_t end_min = atoi(argv[6]); - add_entry(date, begin_hour, begin_min, end_hour, end_min); - return 0; - } + if (strcmp(command, CMD_DATEADD) == 0) + return _command_dateadd(argc, argv); printf("ERROR: unknown command\n"); - return 0; + return EXIT_SUCCESS; } \ No newline at end of file -- 2.47.3