}
void writeEntryNode(xmlTextWriterPtr xmlWriter,
+ const char* date,
int begin_hour,
int begin_min,
int end_hour,
time(fabend->now);
fabend->now_tm = gmtime(fabend->now);
+ if (date != NULL) {
+ fabend->now_tm->tm_yday = get_year_from_str(date) - 1900;
+ fabend->now_tm->tm_mon = get_month_from_str(date) - 1;
+ fabend->now_tm->tm_mday = get_day_from_str(date);
+ }
fabend->now_tm->tm_hour = end_hour;
fabend->now_tm->tm_min = end_min;
*fabend->now = mktime(fabend->now_tm);
free(xmlElemContent);
xmlElemContent = NULL;
- writeEntryNode(xmlWriter, begin_hour, begin_min, end_hour, end_min, 0);
+ writeEntryNode(xmlWriter, NULL, begin_hour, begin_min, end_hour, end_min, 0);
xmlTextWriterEndElement(xmlWriter);
xmlTextWriterEndDocument(xmlWriter);
}
-void addEntry(int begin_hour,
+void addEntry(const char* date,
+ int begin_hour,
int begin_min,
int end_hour,
int end_min,
time_t* saldo = malloc(sizeof(time_t));
get_seconds_from_string(saldostr, saldo);
- writeEntryNode(xmlwriter, begin_hour, begin_min, end_hour, end_min, *saldo);
+ writeEntryNode(xmlwriter, date, begin_hour, begin_min, end_hour, end_min, *saldo);
xmlTextWriterEndElement(xmlwriter);
xmlTextWriterEndDocument(xmlwriter);
int main(int argc, char* argv[])
{
if (argc < 2) {
- printf("ERROR: %s <init|add|entry>\n", argv[0]);
+ printf("ERROR: %s <init|add|dateadd|entry>\n", argv[0]);
return 1;
}
printf("ERROR: %s add <begin_hours> <begin_minutes> <end_hours> <end_minutes> <inputfile>\n", argv[0]);
return 1;
}
- addEntry(atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), atoi(argv[5]), argv[6]);
+ addEntry(NULL, atoi(argv[2]), atoi(argv[3]), atoi(argv[4]), atoi(argv[5]), argv[6]);
+
+ return 0;
+ }
+
+ if (strcmp(argv[1], "dateadd") == 0) {
+ if (argc < 7) {
+ printf("ERROR: %s dateadd <yyyy-MM-dd> <begin_hours> <begin_minutes> <end_hours> <end_minutes> <inputfile>\n", argv[0]);
+ return 1;
+ }
+ addEntry(argv[2], atoi(argv[3]), atoi(argv[4]), atoi(argv[5]), atoi(argv[6]), argv[7]);
return 0;
}
sprintf(weekday, "%s", "--");
break;
}
+}
+
+int get_year_from_str(const char* date)
+{
+ int value = 0;
+ char* str = malloc(sizeof(char) * 11);
+ char* str_first_pos = NULL;
+ strncpy(str, date, 11);
+ str_first_pos = str;
+
+ str = strtok(str, "-");
+ value = atoi(str);
+
+ free(str_first_pos);
+ str_first_pos = NULL;
+ return value;
+}
+
+int get_month_from_str(const char* date)
+{
+ int value = 0;
+ char* str = malloc(sizeof(char) * 11);
+ char* str_first_pos = NULL;
+ strncpy(str, date, 11);
+ str_first_pos = str;
+
+ str = strtok(str, "-");
+ str = strtok(NULL, "-");
+ value = atoi(str);
+
+ free(str_first_pos);
+ str_first_pos = NULL;
+ return value;
+}
+
+int get_day_from_str(const char* date)
+{
+ int value = 0;
+ char* str = malloc(sizeof(char) * 11);
+ char* str_first_pos = NULL;
+ strncpy(str, date, 11);
+ str_first_pos = str;
+
+ str = strtok(str, "-");
+ str = strtok(NULL, "-");
+ str = strtok(NULL, "-");
+ value = atoi(str);
+
+ free(str_first_pos);
+ str_first_pos = NULL;
+ return value;
}
\ No newline at end of file
void get_seconds_from_string(const char* timestr, time_t* seconds);
void get_weekday(int wday, char* weekday);
void get_short_weekday(int wday, char* weekday);
+int get_year_from_str(const char* date);
+int get_month_from_str(const char* date);
+int get_day_from_str(const char* date);
#endif
\ No newline at end of file
assert_int_equal(seconds, -15300);
}
+void get_year_from_date()
+{
+ int result = get_year_from_str("2024-06-24");
+
+ assert_int_equal(result, 2024);
+}
+
+void get_month_from_date()
+{
+ int result = get_month_from_str("2024-06-24");
+
+ assert_int_equal(result, 6);
+}
+
+void get_dat_from_date()
+{
+ int result = get_day_from_str("2024-06-24");
+
+ assert_int_equal(result, 24);
+}
+
int main()
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(get_short_friday),
cmocka_unit_test(get_short_saturday),
cmocka_unit_test(get_seconds_from_str),
- cmocka_unit_test(get_seconds_from_str_minus)
+ cmocka_unit_test(get_seconds_from_str_minus),
+ cmocka_unit_test(get_year_from_date),
+ cmocka_unit_test(get_month_from_date),
+ cmocka_unit_test(get_dat_from_date)
};
return cmocka_run_group_tests(tests, NULL, NULL);