#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 [<salod_hour> <saldo_min>]\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 <dir>\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 <begin_hours> <begin_minutes> <end_hours> <end_minutes>\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 <yyyy-MM-dd> <begin_hours> <begin_minutes> <end_hours> <end_minutes>\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,
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 [<salod_hour> <saldo_min>]\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 <dir>\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 <begin_hours> <begin_minutes> <end_hours> <end_minutes>\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 <yyyy-MM-dd> <begin_hours> <begin_minutes> <end_hours> <end_minutes>\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