aboutsummaryrefslogtreecommitdiffstats
path: root/plugin_time.c
diff options
context:
space:
mode:
authormichael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2008-09-08 01:52:03 +0000
committermichael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2008-09-08 01:52:03 +0000
commita97c5c7ecd9800e86882af4476e2dc6098b78cfb (patch)
tree12ee6864a2f98d38e198a6532d4a0080c5788cac /plugin_time.c
parente6f31f6b7949440cd735d0184c846aa2a3330f23 (diff)
downloadlcd4linux-a97c5c7ecd9800e86882af4476e2dc6098b78cfb.tar.gz
strftime_tz() plugin by Bernhard Walle
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@893 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to 'plugin_time.c')
-rw-r--r--plugin_time.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/plugin_time.c b/plugin_time.c
index 07837b2..bae321c 100644
--- a/plugin_time.c
+++ b/plugin_time.c
@@ -36,6 +36,7 @@
#include "config.h"
#include <time.h>
+#include <stdlib.h>
#include "debug.h"
#include "plugin.h"
@@ -59,6 +60,29 @@ static void my_strftime(RESULT * result, RESULT * arg1, RESULT * arg2)
SetResult(&result, R_STRING, value);
}
+static void my_stftime_tz(RESULT * result, RESULT * arg1, RESULT * arg2, RESULT * arg3)
+{
+ char value[256] = "";
+ time_t t = R2N(arg2);
+ char *tz = R2S(arg3);
+ char *old_tz;
+
+ old_tz = getenv("TZ");
+ setenv("TZ", tz, 1);
+ tzset();
+
+ strftime(value, sizeof(value), R2S(arg1), localtime(&t));
+
+ if (old_tz) {
+ setenv("TZ", old_tz, 1);
+ } else {
+ unsetenv("TZ");
+ }
+ tzset();
+
+ SetResult(&result, R_STRING, value);
+}
+
int plugin_init_time(void)
{
@@ -66,6 +90,7 @@ int plugin_init_time(void)
/* register some basic time functions */
AddFunction("time", 0, my_time);
AddFunction("strftime", 2, my_strftime);
+ AddFunction("strftime_tz", 3, my_stftime_tz);
return 0;
}