From 8c4ead0c0f3220ef6e62db20d2afd84901fa8ac3 Mon Sep 17 00:00:00 2001 From: apio Date: Fri, 14 Apr 2023 21:08:50 +0200 Subject: [PATCH] libc: Add more conversion specifiers to strftime --- libc/src/strftime.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libc/src/strftime.cpp b/libc/src/strftime.cpp index b0a8c0e7..4db7b4c7 100644 --- a/libc/src/strftime.cpp +++ b/libc/src/strftime.cpp @@ -84,7 +84,12 @@ extern "C" case 'B': if (!try_put_string(state, mon_names[tm->tm_mon])) return 0; break; - case 'c': todo(); + case 'c': + if (!try_format(state, "%s %s %.2d %.2d:%.2d:%.2d %d", abday_names[tm->tm_wday], + abmon_names[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, + tm->tm_year + 1900)) + return 0; + break; case 'd': if (!try_format(state, "%.2d", tm->tm_mday)) return 0; break; @@ -117,8 +122,13 @@ extern "C" case 'S': if (!try_format(state, "%.2d", tm->tm_sec)) return 0; break; - case 'x': todo(); - case 'X': todo(); + case 'x': + // Sorry, Americans, but I ain't doing m/d/y. + if (!try_format(state, "%.2d/%.2d/%.2d", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900)) return 0; + break; + case 'X': + if (!try_format(state, "%.2d:%.2d:%.2d", tm->tm_hour, tm->tm_min, tm->tm_sec)) return 0; + break; case 'y': if (!try_format(state, "%.2d", (tm->tm_year + 1900) % 100)) return 0; break;