summaryrefslogtreecommitdiff
path: root/lib/timetostr.c
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-04 12:00:48 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-04 12:00:48 -0400
commitceef8e2d87ec60042827e6d6aaf73b6df774051c (patch)
tree16721f404e8aeeba05d8769ceabab8334ed4d176 /lib/timetostr.c
parentswitch to c11 (diff)
downloadcomus-ceef8e2d87ec60042827e6d6aaf73b6df774051c.tar.gz
comus-ceef8e2d87ec60042827e6d6aaf73b6df774051c.tar.bz2
comus-ceef8e2d87ec60042827e6d6aaf73b6df774051c.zip
fmt
Diffstat (limited to 'lib/timetostr.c')
-rw-r--r--lib/timetostr.c247
1 files changed, 123 insertions, 124 deletions
diff --git a/lib/timetostr.c b/lib/timetostr.c
index 0d4e9a5..fa77362 100644
--- a/lib/timetostr.c
+++ b/lib/timetostr.c
@@ -1,144 +1,143 @@
#include <lib.h>
#include <time.h>
-static char* ABB_WEEKDAY[7] = {
- "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+static char *ABB_WEEKDAY[7] = {
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
-static char* FULL_WEEKDAY[7] = {
- "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturady"
-};
+static char *FULL_WEEKDAY[7] = { "Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturady" };
-static char* ABB_MONTH[12] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-};
+static char *ABB_MONTH[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-static char* FULL_MONTH[12] = {
- "January", "Feburary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+static char *FULL_MONTH[12] = {
+ "January", "Feburary", "March", "April", "May", "June",
+ "July", "August", "September", "October", "November", "December"
};
-static char *write_num(unsigned int num, unsigned int pad, char *buf, size_t n) {
- size_t digits = 1;
- unsigned int x = num;
-
- while (x /= 10, x > 0) digits++;
- if (pad == 0) pad = digits;
-
- for (size_t i = 0; i < pad; i++) {
+static char *write_num(unsigned int num, unsigned int pad, char *buf, size_t n)
+{
+ size_t digits = 1;
+ unsigned int x = num;
- size_t digit;
- if (i >= digits) {
- digit = 0;
- } else {
- digit = num % 10;
- num /= 10;
- }
+ while (x /= 10, x > 0)
+ digits++;
+ if (pad == 0)
+ pad = digits;
- if (pad - i - 1 >= n) continue;
- buf[pad - i - 1] = '0' + digit;
+ for (size_t i = 0; i < pad; i++) {
+ size_t digit;
+ if (i >= digits) {
+ digit = 0;
+ } else {
+ digit = num % 10;
+ num /= 10;
+ }
- }
+ if (pad - i - 1 >= n)
+ continue;
+ buf[pad - i - 1] = '0' + digit;
+ }
- if (pad > n) pad = n;
+ if (pad > n)
+ pad = n;
- return buf + pad;
+ return buf + pad;
}
-void timetostr(time_t *time, char *format, char *buf, size_t n) {
- char *index = buf;
- char c;
- int space;
+void timetostr(time_t *time, char *format, char *buf, size_t n)
+{
+ char *index = buf;
+ char c;
+ int space;
- while (
- c = *format++,
- space = (buf + n) - index,
- c != '\0' && space > 0
- ) {
- if (c != '%') {
- *index++ = c;
- continue;
- } else {
- c = *format++;
- }
+ while (c = *format++, space = (buf + n) - index, c != '\0' && space > 0) {
+ if (c != '%') {
+ *index++ = c;
+ continue;
+ } else {
+ c = *format++;
+ }
- switch (c) {
- case '%':
- *index++ = '%';
- break;
- case 'a':
- index = strncpy(index, ABB_WEEKDAY[time->wday], space);
- break;
- case 'A':
- index = strncpy(index, FULL_WEEKDAY[time->wday], space);
- break;
- case 'b':
- case 'h':
- index = strncpy(index, ABB_MONTH[time->mon], space);
- break;
- case 'B':
- index = strncpy(index, FULL_MONTH[time->mon], space);
- break;
- case 'C':
- index = write_num(time->cen, 0, index, space);
- break;
- case 'd':
- index = write_num(time->mday, 2, index, space);
- break;
- case 'H':
- index = write_num(time->hour, 2, index, space);
- break;
- case 'I':
- index = write_num((time->hour + 12) % 12 + 1, 2, index, space);
- break;
- case 'j':
- index = write_num(time->yday, 3, index, space);
- break;
- case 'm':
- index = write_num(time->mon + 1, 2, index, space);
- break;
- case 'M':
- index = write_num(time->min, 2, index, space);
- break;
- case 'n':
- *index++ = '\n';
- break;
- case 'p':
- index = strncpy(index, time->hour > 11 ? "PM" : "AM", space);
- break;
- case 'P':
- index = strncpy(index, time->hour > 11 ? "pm" : "am", space);
- break;
- case 'q':
- index = write_num((time->mon + 3) / 3, 0, index, space);
- break;
- case 'S':
- index = write_num(time->sec, 2, index, space);
- break;
- case 't':
- *index++ = '\t';
- break;
- case 'u':
- index = write_num(((time->wday + 1 )% 7) + 1, 0, index, space);
- break;
- case 'w':
- index = write_num(time->wday, 0, index, space);
- break;
- case 'y':
- index = write_num(time->yn, 2, index, space);
- break;
- case 'Y':
- index = write_num(time->year + 1900, 0, index, space);
- break;
- default: {
- char b[3] = {'%', c, '\0'};
- index = strncpy(index, b, space);
- break;
- }
- }
- }
+ switch (c) {
+ case '%':
+ *index++ = '%';
+ break;
+ case 'a':
+ index = strncpy(index, ABB_WEEKDAY[time->wday], space);
+ break;
+ case 'A':
+ index = strncpy(index, FULL_WEEKDAY[time->wday], space);
+ break;
+ case 'b':
+ case 'h':
+ index = strncpy(index, ABB_MONTH[time->mon], space);
+ break;
+ case 'B':
+ index = strncpy(index, FULL_MONTH[time->mon], space);
+ break;
+ case 'C':
+ index = write_num(time->cen, 0, index, space);
+ break;
+ case 'd':
+ index = write_num(time->mday, 2, index, space);
+ break;
+ case 'H':
+ index = write_num(time->hour, 2, index, space);
+ break;
+ case 'I':
+ index = write_num((time->hour + 12) % 12 + 1, 2, index, space);
+ break;
+ case 'j':
+ index = write_num(time->yday, 3, index, space);
+ break;
+ case 'm':
+ index = write_num(time->mon + 1, 2, index, space);
+ break;
+ case 'M':
+ index = write_num(time->min, 2, index, space);
+ break;
+ case 'n':
+ *index++ = '\n';
+ break;
+ case 'p':
+ index = strncpy(index, time->hour > 11 ? "PM" : "AM", space);
+ break;
+ case 'P':
+ index = strncpy(index, time->hour > 11 ? "pm" : "am", space);
+ break;
+ case 'q':
+ index = write_num((time->mon + 3) / 3, 0, index, space);
+ break;
+ case 'S':
+ index = write_num(time->sec, 2, index, space);
+ break;
+ case 't':
+ *index++ = '\t';
+ break;
+ case 'u':
+ index = write_num(((time->wday + 1) % 7) + 1, 0, index, space);
+ break;
+ case 'w':
+ index = write_num(time->wday, 0, index, space);
+ break;
+ case 'y':
+ index = write_num(time->yn, 2, index, space);
+ break;
+ case 'Y':
+ index = write_num(time->year + 1900, 0, index, space);
+ break;
+ default: {
+ char b[3] = { '%', c, '\0' };
+ index = strncpy(index, b, space);
+ break;
+ }
+ }
+ }
- if (space < 1)
- buf[n - 1] = '\0';
- else
- *index = '\0';
+ if (space < 1)
+ buf[n - 1] = '\0';
+ else
+ *index = '\0';
}