printf("St. Tib's Day");
} else {
/* ...or parse the substring between %{ and %} ... */
- *i = '\0';
+ *tibs_end = '\0';
if (!format_output(i + 2, dt)) return 0;
- *i = '%';
+ *tibs_end = '%';
}
/* ...and continue with the rest */
- i = tibs_end + 2;
+ i = tibs_end;
break;
case '}':
i++;
}
/* Get the current date and convert it to discordian */
-struct disc_time *get_ddate() {
- time_t current_time;
- struct tm *current_tm;
+struct disc_time *get_ddate(struct tm *current_tm) {
static struct disc_time dt;
- if ((current_time = time(NULL)) == (time_t)-1)
- return NULL;
-
- if ((current_tm = localtime(¤t_time)) == NULL)
+ if (current_tm == NULL)
return NULL;
/* We have to know, whether we have to insert St. Tib's Day, so whether it's a leap
return &dt;
}
-void print_ddate(const char *format) {
+void print_ddate(const char *format, struct tm *current_tm) {
static char *form = NULL;
struct disc_time *dt;
- if ((dt = get_ddate()) == NULL)
+ if ((dt = get_ddate(current_tm)) == NULL)
return;
if (form == NULL)
if ((form = malloc(strlen(format) + 1)) == NULL)