void _print_brutto_worktime(const time_t begin, const time_t end)
{
- char* timestr = malloc(MAX_TIME_STR_LENGTH);
-
- if (timestr == NULL)
- return;
-
const time_t butto_worktime = get_brutto_worktime(begin, end);
- get_time_str(butto_worktime, timestr);
+ char* timestr = get_time_str(butto_worktime);
printf("%-26s%6s\n", "Brutto Arbeitzeit:", timestr);
free(timestr);
void _print_netto_worktime(const time_t begin, const time_t end)
{
- char* timestr = malloc(MAX_TIME_STR_LENGTH);
-
- if (timestr == NULL)
- return;
-
const time_t netto_worktime = get_current_worktime(begin, end);
- get_time_str(netto_worktime, timestr);
+ char* timestr = get_time_str(netto_worktime);
printf("%-26s%6s\n", "Netto Arbeitzeit:", timestr);
free(timestr);
void _print_current_breaktime(const time_t begin, const time_t end)
{
- char* timestr = malloc(MAX_TIME_STR_LENGTH);
-
- if (timestr == NULL)
- return;
-
const time_t brutto_worktime = get_brutto_worktime(begin, end);
const time_t break_time = get_break_time(brutto_worktime);
- get_time_str(break_time, timestr);
+ char* timestr = get_time_str(break_time);
printf("%-26s%6s\n", "Aktuelle Pausenzeit:", timestr);
free(timestr);
void _print_time_to_end_worktime(const time_t begin, const time_t end)
{
- char* timestr = malloc(MAX_TIME_STR_LENGTH);
-
- if (timestr == NULL)
- return;
-
const time_t diff_to_end = get_current_worktime_diff_to_end_eight_hour(begin, end);
- get_time_str(diff_to_end, timestr);
+ char* timestr = get_time_str(diff_to_end);
printf("Arbeitzeit bis %02d:%02d Std: %6s\n",
SOLL_HOUR,
SOLL_MINUTES,
void _print_time_to_max_end_worktime(const time_t begin, const time_t end)
{
- char* timestr = malloc(MAX_TIME_STR_LENGTH);
-
- if (timestr == NULL)
- return;
-
const time_t diff_to_end = get_current_worktime_diff_to_end_ten_hour(begin, end);
- get_time_str(diff_to_end, timestr);
+ char* timestr = get_time_str(diff_to_end);
printf("Arbeitzeit bis 10:00 Std: %6s\n", timestr);
free(timestr);
#define ONE_HOUR 3600
#define MINUTE 60
-
-#define MAX_TIME_STR_LENGTH 7
+#define MAX_TIME_STR_LENGTH 9
char* strdup(const char* str)
{
return new_str;
}
-void get_time_str(time_t timediff, char* timestr)
+char* get_time_str(time_t timediff)
{
- memset(timestr, 0, MAX_TIME_STR_LENGTH);
int8_t hour = timediff / ONE_HOUR;
int16_t rest_minutes = timediff % ONE_HOUR;
int8_t minutes = rest_minutes / MINUTE;
+ char* timestr = malloc(sizeof(char) * MAX_TIME_STR_LENGTH);
+ if (timestr == NULL)
+ return NULL;
+
+ memset(timestr, 0, MAX_TIME_STR_LENGTH);
+
if (timediff < 0) {
hour *= -1;
minutes *= -1;
sprintf(timestr, "-%02d:%02d", hour, minutes);
- return;
+ return timestr;
}
sprintf(timestr, "%02d:%02d", hour, minutes);
+ return timestr;
}
void get_time_str_overtime(time_t timediff, char* timestr)
#include <stdint.h>
#include <time.h>
-void get_time_str(time_t timediff, char* timestr);
+char* get_time_str(time_t timediff);
void get_time_str_overtime(time_t timediff, char* timestr);
time_t get_seconds_from_string(const char* timestr);
char* get_weekday_str(uint8_t wday);
free(xmlElemContent);
xmlElemContent = NULL;
- get_time_str(breaktime, value);
+ char* breaktimestr = get_time_str(breaktime);
xmlElemName = xmlCharStrdup("pause");
- xmlElemContent = xmlCharStrdup(value);
+ xmlElemContent = xmlCharStrdup(breaktimestr);
xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
- memset(value, 0, MAX_STRING_LENGTH);
+ free(breaktimestr);
+ breaktimestr = NULL;
free(xmlElemName);
xmlElemName = NULL;
free(xmlElemContent);
xmlElemContent = NULL;
- get_time_str(SOLL_WORKTIME, value);
+ char* solltimestr = get_time_str(SOLL_WORKTIME);
xmlElemName = xmlCharStrdup("sollarbeitszeit");
- xmlElemContent = xmlCharStrdup(value);
+ xmlElemContent = xmlCharStrdup(solltimestr);
xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
- memset(value, 0, MAX_STRING_LENGTH);
+ free(solltimestr);
+ solltimestr = NULL;
free(xmlElemName);
xmlElemName = NULL;
free(xmlElemContent);
xmlElemContent = NULL;
- get_time_str(netto_worktime, value);
+ char* netto_worktimestr = get_time_str(netto_worktime);
xmlElemName = xmlCharStrdup("arbeitszeit");
- xmlElemContent = xmlCharStrdup(value);
+ xmlElemContent = xmlCharStrdup(netto_worktimestr);
xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
- memset(value, 0, MAX_STRING_LENGTH);
+ free(netto_worktimestr);
+ netto_worktimestr = NULL;
free(xmlElemName);
xmlElemName = NULL;
free(xmlElemContent);
free(xmlElemContent);
xmlElemContent = NULL;
- get_time_str(updated_saldo, value);
+ char* updated_saldostr = get_time_str(updated_saldo);
xmlElemName = xmlCharStrdup("saldo");
- xmlElemContent = xmlCharStrdup(value);
+ xmlElemContent = xmlCharStrdup(updated_saldostr);
xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
- memset(value, 0, MAX_STRING_LENGTH);
+ free(updated_saldostr);
+ updated_saldostr = NULL;
free(xmlElemName);
xmlElemName = NULL;
free(xmlElemContent);
void get_zero_hour_and_fifteen_minutes()
{
time_t time = 900;
- char* timestring = malloc(sizeof(char) * 7);
-
- if (timestring == NULL)
- return;
-
- memset(timestring, 0, 7);
- get_time_str(time, timestring);
+ char* timestr = get_time_str(time);
- assert_string_equal(timestring, "00:15");
+ assert_string_equal(timestr, "00:15");
- free(timestring);
- timestring = NULL;
+ free(timestr);
+ timestr = NULL;
}
void get_five_hour_fourty_five()
{
time_t time = 20700;
- char* timestring = malloc(sizeof(char) * 7);
-
- if (timestring == NULL)
- return;
- memset(timestring, 0, 7);
-
- get_time_str(time, timestring);
+ char* timestr = get_time_str(time);
- assert_string_equal(timestring, "05:45");
+ assert_string_equal(timestr, "05:45");
- free(timestring);
- timestring = NULL;
+ free(timestr);
+ timestr = NULL;
}
void get_minus_five_minutes()
{
time_t time = -300;
- char* timestring = malloc(sizeof(char) * 7);
-
- if (timestring == NULL)
- return;
-
- memset(timestring, 0, 7);
- get_time_str(time, timestring);
+ char* timestr = get_time_str(time);
- assert_string_equal(timestring, "-00:05");
+ assert_string_equal(timestr, "-00:05");
- free(timestring);
- timestring = NULL;
+ free(timestr);
+ timestr = NULL;
}
void get_zero_hour_and_fifteen_minutes_overtime()