#include "break.h"
#include "config.h"
-#define MAX_WEEKDAY_STR_LENGTH 11
#define MAX_TIME_STR_LENGTH 7
feierabend* feierabend_init()
fabend->now = malloc(sizeof(time_t));
fabend->begin = malloc(sizeof(time_t));
fabend->worktime = malloc(sizeof(time_t));
- fabend->weekday = malloc(sizeof(char) * MAX_WEEKDAY_STR_LENGTH);
fabend->timestr = malloc(sizeof(char) * MAX_TIME_STR_LENGTH);
return fabend;
fabend->begin = NULL;
free(fabend->worktime);
fabend->worktime = NULL;
- free(fabend->weekday);
- fabend->weekday = NULL;
free(fabend->timestr);
fabend->timestr = NULL;
}
+void print_german_long_date(struct tm* time_info)
+{
+ char* weekday = get_weekday_str(time_info->tm_wday);
+
+ printf("%s %02d.%02d.%04d %02d:%02d",
+ weekday,
+ time_info->tm_mday,
+ time_info->tm_mon + 1,
+ time_info->tm_year + 1900,
+ time_info->tm_hour,
+ time_info->tm_min);
+
+ free(weekday);
+ weekday = NULL;
+}
+
int main(int argc, char* argv[])
{
if (argc < 3 || (argc > 3 && argc < 5)) {
fabend->begin_tm->tm_hour = atoi(argv[1]);
fabend->begin_tm->tm_min = atoi(argv[2]);
*fabend->begin = mktime(fabend->begin_tm);
- get_weekday(fabend->begin_tm->tm_wday, fabend->weekday);
- printf("Arbeitsbeginn: %s %02d.%02d.%04d %02d:%02d\n",
- fabend->weekday,
- fabend->begin_tm->tm_mday,
- fabend->begin_tm->tm_mon + 1,
- fabend->begin_tm->tm_year + 1900,
- fabend->begin_tm->tm_hour,
- fabend->begin_tm->tm_min);
+ printf("Arbeitsbeginn: ");
+ print_german_long_date(fabend->begin_tm);
+ printf("\n");
time(fabend->now);
fabend->now_tm = localtime(fabend->now);
fabend->now_tm->tm_min = atoi(argv[4]);
*fabend->now = mktime(fabend->now_tm);
}
- get_weekday(fabend->now_tm->tm_wday, fabend->weekday);
- printf("Aktuelle Zeit: %s %02d.%02d.%04d %02d:%02d\n",
- fabend->weekday,
- fabend->now_tm->tm_mday,
- fabend->now_tm->tm_mon + 1,
- fabend->now_tm->tm_year + 1900,
- fabend->now_tm->tm_hour,
- fabend->now_tm->tm_min);
-
+ printf("Aktuelle Zeit: ");
+ print_german_long_date(fabend->now_tm);
+ printf("\n");
printf("\n");
*fabend->worktime = get_eight_hour_end_worktime(*fabend->begin);
fabend->work_end_tm = localtime(fabend->worktime);
- printf("Arbeitsende %02d:%02d Std: %s %02d.%02d.%04d %02d:%02d\n",
+ printf("Arbeitsende %02d:%02d Std: ",
SOLL_HOUR,
- SOLL_MINUTES,
- fabend->weekday,
- fabend->work_end_tm->tm_mday,
- fabend->work_end_tm->tm_mon + 1,
- fabend->work_end_tm->tm_year + 1900,
- fabend->work_end_tm->tm_hour,
- fabend->work_end_tm->tm_min);
+ SOLL_MINUTES);
+ print_german_long_date(fabend->work_end_tm);
+ printf("\n");
*fabend->worktime = get_ten_hour_end_worktime(*fabend->begin);
fabend->work_end_tm = localtime(fabend->worktime);
- printf("Arbeitsende 10:00 Std: %s %02d.%02d.%04d %02d:%02d\n",
- fabend->weekday,
- fabend->work_end_tm->tm_mday,
- fabend->work_end_tm->tm_mon + 1,
- fabend->work_end_tm->tm_year + 1900,
- fabend->work_end_tm->tm_hour,
- fabend->work_end_tm->tm_min);
-
+ printf("Arbeitsende 10:00 Std: ");
+ print_german_long_date(fabend->work_end_tm);
+ printf("\n");
printf("\n");
*fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now);
struct tm* now_tm;
struct tm* begin_tm;
struct tm* work_end_tm;
- char* weekday;
char* timestr;
} feierabend;
first_str_pos = NULL;
}
-void get_weekday(int wday, char* weekday)
+char* get_weekday_str(int wday)
{
switch (wday) {
case 0:
- sprintf(weekday, "%s", "Sonntag");
- break;
+ return strdup("Sonntag");
case 1:
- sprintf(weekday, "%s", "Montag");
- break;
+ return strdup("Montag");
case 2:
- sprintf(weekday, "%s", "Dienstag");
- break;
+ return strdup("Dienstag");
case 3:
- sprintf(weekday, "%s", "Mittwoch");
- break;
+ return strdup("Mittwoch");
case 4:
- sprintf(weekday, "%s", "Donnerstag");
- break;
+ return strdup("Donnerstag");
case 5:
- sprintf(weekday, "%s", "Freitag");
- break;
+ return strdup("Freitag");
case 6:
- sprintf(weekday, "%s", "Samstag");
- break;
+ return strdup("Samstag");
default:
- sprintf(weekday, "%s", "Unknown");
+ return strdup("Unknown");
break;
}
}
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);
+char* get_weekday_str(int wday);
+__attribute_deprecated__ 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);
fabend->now = malloc(sizeof(time_t));
fabend->begin = malloc(sizeof(time_t));
fabend->worktime = malloc(sizeof(time_t));
- fabend->weekday = malloc(sizeof(char) * 11);
fabend->timestr = malloc(sizeof(char) * 7);
}
free(fabend->now);
free(fabend->begin);
free(fabend->worktime);
- free(fabend->weekday);
free(fabend->timestr);
fabend->now = NULL;
fabend->begin = NULL;
- fabend->worktime = NULL;
- fabend->weekday = NULL;
fabend->timestr = NULL;
}
-#define UNIT_TESTING
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <setjmp.h>
#include <cmocka.h>
#include <string.h>
+#include <stdlib.h>
#include "../src/time_format.h"
void get_zero_hour_and_fifteen_minutes()
void get_thursday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(4, weekday);
+ char* weekday = get_weekday_str(4);
assert_string_equal(weekday, "Donnerstag");
void get_friday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(5, weekday);
+ char* weekday = get_weekday_str(5);
assert_string_equal(weekday, "Freitag");
void get_saturday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(6, weekday);
+ char* weekday = get_weekday_str(6);
assert_string_equal(weekday, "Samstag");
void get_sunday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(0, weekday);
+ char* weekday = get_weekday_str(0);
assert_string_equal(weekday, "Sonntag");
void get_monday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(1, weekday);
+ char* weekday = get_weekday_str(1);
assert_string_equal(weekday, "Montag");
void get_thuesday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(2, weekday);
+ char* weekday = get_weekday_str(2);
assert_string_equal(weekday, "Dienstag");
void get_wednesday()
{
- char* weekday = malloc(sizeof(char) * 11);
- memset(weekday, 0, 11);
-
- get_weekday(3, weekday);
+ char* weekday = get_weekday_str(3);
assert_string_equal(weekday, "Mittwoch");