commit 7e738fc56ece1d36cecb46370535eca400b8d310
parent fa2a28b10a4353ee7cbab547bb468383d73d3b45
Author: Madison Lynch <madi@mxdi.xyz>
Date:   Fri, 14 Jun 2024 13:08:19 -0700
[slstatus][patch][kanji] Overhauled kanji patch:
Code is now far more legible and efficient. Patch file has also been updated
to follow standards.
Diffstat:
3 files changed, 93 insertions(+), 53 deletions(-)
diff --git a/tools.suckless.org/slstatus/patches/kanji/index.md b/tools.suckless.org/slstatus/patches/kanji/index.md
@@ -3,11 +3,12 @@ kanji
 
 Description
 -----------
-This patch implements functionality to display the Japanese Kanji character corresponding with the current day of the week.
+This patch implements a function that displays the Japanese Kanji for the
+current day of the week.
 
 Download
 --------
-* [slstatus-kanji.diff](slstatus-kanji.diff)
+* [slstatus-kanji-20240614-f68f492.diff](slstatus-kanji-20240614-f68f492.diff)
 
 Author
 ------
diff --git a/tools.suckless.org/slstatus/patches/kanji/slstatus-kanji-20240614-f68f492.diff b/tools.suckless.org/slstatus/patches/kanji/slstatus-kanji-20240614-f68f492.diff
@@ -0,0 +1,90 @@
+From 3baa458322f4cf9bd4c7257d1250db490a30e8d8 Mon Sep 17 00:00:00 2001
+From: Madison Lynch <madi@mxdi.xyz>
+Date: Fri, 14 Jun 2024 13:00:02 -0700
+Subject: [PATCH] Overhauled kanji patch: cleaner code, faster execution
+
+---
+ Makefile           |  1 +
+ components/kanji.c | 30 ++++++++++++++++++++++++++++++
+ config.def.h       |  1 +
+ slstatus.h         |  3 +++
+ 4 files changed, 35 insertions(+)
+ create mode 100644 components/kanji.c
+
+diff --git a/Makefile b/Makefile
+index 7a18274..305ab91 100644
+--- a/Makefile
++++ b/Makefile
+@@ -14,6 +14,7 @@ COM =\
+ 	components/entropy\
+ 	components/hostname\
+ 	components/ip\
++	components/kanji\
+ 	components/kernel_release\
+ 	components/keyboard_indicators\
+ 	components/keymap\
+diff --git a/components/kanji.c b/components/kanji.c
+new file mode 100644
+index 0000000..2dbcd9a
+--- /dev/null
++++ b/components/kanji.c
+@@ -0,0 +1,30 @@
++/* Written by Madison Lynch <madi@mxdi.xyz> */
++#include <time.h>
++
++static const char *symbols[] = {
++        "日", // Sunday
++        "月", // Monday
++        "火", // Tuesday
++        "水", // Wednesday
++        "木", // Thursday
++        "金", // Friday
++        "土"  // Saturday
++};
++
++/**
++* Returns the appropriate Japanese Kanji character correlating with the current
++* day of the week.
++*
++* @param  unused (NULL)
++* @return the appropriate Kanji character (char)
++* @author Madison Lynch
++*/
++const char *
++kanji(const char *unused) { 
++    const time_t current_time = time(NULL);
++    const unsigned int weekday = localtime(
++        ¤t_time
++    )->tm_wday;
++
++    return (weekday < sizeof(symbols) / sizeof(char *)) ? symbols[weekday] : "?";
++}
+diff --git a/config.def.h b/config.def.h
+index d805331..099ed79 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -31,6 +31,7 @@ static const char unknown_str[] = "n/a";
+  * hostname            hostname                        NULL
+  * ipv4                IPv4 address                    interface name (eth0)
+  * ipv6                IPv6 address                    interface name (eth0)
++ * kanji               current day of week kanji       NULL
+  * kernel_release      `uname -r`                      NULL
+  * keyboard_indicators caps/num lock indicators        format string (c?n?)
+  *                                                     see keyboard_indicators.c
+diff --git a/slstatus.h b/slstatus.h
+index 8ef5874..dc927eb 100644
+--- a/slstatus.h
++++ b/slstatus.h
+@@ -31,6 +31,9 @@ const char *hostname(const char *unused);
+ const char *ipv4(const char *interface);
+ const char *ipv6(const char *interface);
+ 
++/* kanji */
++const char *kanji(const char *unused);
++
+ /* kernel_release */
+ const char *kernel_release(const char *unused);
+ 
+-- 
+2.45.2
+
diff --git a/tools.suckless.org/slstatus/patches/kanji/slstatus-kanji.diff b/tools.suckless.org/slstatus/patches/kanji/slstatus-kanji.diff
@@ -1,51 +0,0 @@
---- a/components/kanji.c
-+++ b/components/kanji.c
-@@ -0,0 +1,14 @@
-+/* Written by Madison Lynch <madi@mxdi.xyz> */
-+#include <time.h>
-+
-+const char *
-+kanji(const char *unused) {
-+	char *kanji[] = {"日", "月", "火", "水", "木", "金", "土"};
-+	time_t t=time(NULL);
-+	struct tm tm=*localtime(&t);
-+	int map[]={0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4},
-+	    m=tm.tm_mon+1,
-+	    y=tm.tm_year+1900-(m<3),
-+	    wd=(y+y/4-y/100+y/400+map[m-1]+tm.tm_mday)%7;
-+	return kanji[wd];
-+}
-
---- a/config.def.h
-+++ b/config.def.h
-@@ -31,6 +31,7 @@
-  * hostname            hostname                        NULL
-  * ipv4                IPv4 address                    interface name (eth0)
-  * ipv6                IPv6 address                    interface name (eth0)
-+ * kanji               japanese day of week kanji      NULL
-  * kernel_release      `uname -r`                      NULL
-  * keyboard_indicators caps/num lock indicators        format string (c?n?)
-  *                                                     see keyboard_indicators.c
-
---- a/Makefile
-+++ b/Makefile
-@@ -14,6 +14,7 @@
- 	components/entropy\
- 	components/hostname\
- 	components/ip\
-+	components/kanji\
- 	components/kernel_release\
- 	components/keyboard_indicators\
- 	components/keymap\
-
---- a/slstatus.h
-+++ b/slstatus.h
-@@ -31,6 +31,9 @@
- const char *ipv4(const char *interface);
- const char *ipv6(const char *interface);
- 
-+/* kanji */
-+const char *kanji(const char *unused);
-+
- /* kernel_release */
- const char *kernel_release(const char *unused);