]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
add method get seconds from string
authorBastian Dehn <hhaalo@arcor.de>
Sat, 22 Jun 2024 10:08:09 +0000 (12:08 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 22 Jun 2024 10:08:09 +0000 (12:08 +0200)
src/time_format.c
src/time_format.h
tests/time_format_tests.c

index 1a6d060fcfcc25fe0cc7c263d4e11840e4d76d00..d2ae943c516b0ba11c8c37a9c1924a0308238d48 100644 (file)
@@ -1,4 +1,6 @@
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #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) {
index 8dcaa02f0d5ad35c74efc0fd48fc70b5a5835cb5..024ce70d87e061fca7c0aea5b10a9102628d062d 100644 (file)
@@ -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);
 
index 17ef5892f5d63f07594a2637020e175856d11bea..41e92c709674ba6581fe53d1ea170b6cd8534d9f 100644 (file)
@@ -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);