slstatus-kanji-20240614-f68f492.diff (2700B)
1 From 3baa458322f4cf9bd4c7257d1250db490a30e8d8 Mon Sep 17 00:00:00 2001 2 From: Madison Lynch <madi@mxdi.xyz> 3 Date: Fri, 14 Jun 2024 13:00:02 -0700 4 Subject: [PATCH] Overhauled kanji patch: cleaner code, faster execution 5 6 --- 7 Makefile | 1 + 8 components/kanji.c | 30 ++++++++++++++++++++++++++++++ 9 config.def.h | 1 + 10 slstatus.h | 3 +++ 11 4 files changed, 35 insertions(+) 12 create mode 100644 components/kanji.c 13 14 diff --git a/Makefile b/Makefile 15 index 7a18274..305ab91 100644 16 --- a/Makefile 17 +++ b/Makefile 18 @@ -14,6 +14,7 @@ COM =\ 19 components/entropy\ 20 components/hostname\ 21 components/ip\ 22 + components/kanji\ 23 components/kernel_release\ 24 components/keyboard_indicators\ 25 components/keymap\ 26 diff --git a/components/kanji.c b/components/kanji.c 27 new file mode 100644 28 index 0000000..2dbcd9a 29 --- /dev/null 30 +++ b/components/kanji.c 31 @@ -0,0 +1,30 @@ 32 +/* Written by Madison Lynch <madi@mxdi.xyz> */ 33 +#include <time.h> 34 + 35 +static const char *symbols[] = { 36 + "日", // Sunday 37 + "月", // Monday 38 + "火", // Tuesday 39 + "水", // Wednesday 40 + "木", // Thursday 41 + "金", // Friday 42 + "土" // Saturday 43 +}; 44 + 45 +/** 46 +* Returns the appropriate Japanese Kanji character correlating with the current 47 +* day of the week. 48 +* 49 +* @param unused (NULL) 50 +* @return the appropriate Kanji character (char) 51 +* @author Madison Lynch 52 +*/ 53 +const char * 54 +kanji(const char *unused) { 55 + const time_t current_time = time(NULL); 56 + const unsigned int weekday = localtime( 57 + ¤t_time 58 + )->tm_wday; 59 + 60 + return (weekday < sizeof(symbols) / sizeof(char *)) ? symbols[weekday] : "?"; 61 +} 62 diff --git a/config.def.h b/config.def.h 63 index d805331..099ed79 100644 64 --- a/config.def.h 65 +++ b/config.def.h 66 @@ -31,6 +31,7 @@ static const char unknown_str[] = "n/a"; 67 * hostname hostname NULL 68 * ipv4 IPv4 address interface name (eth0) 69 * ipv6 IPv6 address interface name (eth0) 70 + * kanji current day of week kanji NULL 71 * kernel_release `uname -r` NULL 72 * keyboard_indicators caps/num lock indicators format string (c?n?) 73 * see keyboard_indicators.c 74 diff --git a/slstatus.h b/slstatus.h 75 index 8ef5874..dc927eb 100644 76 --- a/slstatus.h 77 +++ b/slstatus.h 78 @@ -31,6 +31,9 @@ const char *hostname(const char *unused); 79 const char *ipv4(const char *interface); 80 const char *ipv6(const char *interface); 81 82 +/* kanji */ 83 +const char *kanji(const char *unused); 84 + 85 /* kernel_release */ 86 const char *kernel_release(const char *unused); 87 88 -- 89 2.45.2 90