mirror of
https://github.com/netfun2000/lcd4linux.git
synced 2026-02-27 09:44:34 +08:00
strftime_tz() plugin by Bernhard Walle
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@893 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user