From: Bastian Dehn Date: Sat, 22 Jun 2024 10:08:09 +0000 (+0200) Subject: add method get seconds from string X-Git-Tag: 1.2.0^2~16^2~21 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=2fec01cb0a42d8e3414e615d8e3677c506ba7a27;p=feierabend.git add method get seconds from string --- diff --git a/src/time_format.c b/src/time_format.c index 1a6d060..d2ae943 100644 --- a/src/time_format.c +++ b/src/time_format.c @@ -1,4 +1,6 @@ #include +#include +#include #include "time_format.h" #define ONE_HOUR 3600 @@ -36,6 +38,18 @@ void get_time_str_overtime(time_t timediff, char* timestr) sprintf(timestr, "-%02d:%02d", hour, minutes); } +void get_seconds_from_string(const char* timestr, time_t* seconds) +{ + char* str = malloc(sizeof(char) * 7); + memset(str, 0, 7); + strncpy(str, timestr, 7); + + str = strtok(str, ":"); + *seconds = atol(str) * ONE_HOUR; + str = strtok(NULL, ":"); + *seconds += atol(str) * 60; +} + void get_weekday(int wday, char* weekday) { switch (wday) { diff --git a/src/time_format.h b/src/time_format.h index 8dcaa02..024ce70 100644 --- a/src/time_format.h +++ b/src/time_format.h @@ -4,6 +4,7 @@ void get_time_str(time_t timediff, char* timestr); void get_time_str_overtime(time_t timediff, char* timestr); +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); diff --git a/tests/time_format_tests.c b/tests/time_format_tests.c index 17ef589..41e92c7 100644 --- a/tests/time_format_tests.c +++ b/tests/time_format_tests.c @@ -266,6 +266,16 @@ void get_short_saturday() weekday = NULL; } +void get_seconds_from_str() +{ + const char* timestr = "04:15"; + time_t seconds = 0; + + get_seconds_from_string(timestr, &seconds); + + assert_int_equal(seconds, 15300); +} + int main() { const struct CMUnitTest tests[] = { @@ -288,7 +298,8 @@ int main() cmocka_unit_test(get_short_wednesday), cmocka_unit_test(get_short_thursday), cmocka_unit_test(get_short_friday), - cmocka_unit_test(get_short_saturday) + cmocka_unit_test(get_short_saturday), + cmocka_unit_test(get_seconds_from_str) }; return cmocka_run_group_tests(tests, NULL, NULL);