mud/lib/daemon/time.c
2020-09-06 05:43:07 -07:00

54 lines
1.3 KiB
C

/* /daemon/time.c
* from the Dead Souls LPC Library
* a time management daemon
* created by Descartes of Borg 950507
*/
#include <lib.h>
#include <cfg.h>
#include <localtime.h>
#include "include/time.h"
inherit LIB_DAEMON;
private static string LocalZone;
private static mapping Zones;
static void create() {
string *lines;
mixed *tmp;
int i, x;
daemon::create();
Zones = ([]);
tmp = localtime(time());
//LocalZone = tmp[LT_ZONE];
if(LOCAL_TIME) x = -(tmp[LT_GMTOFF] / 3600);
else x = 0;
if( file_size(CFG_TIME) < 1 ) return;
i = sizeof(lines = filter(explode(read_file(CFG_TIME), "\n"),
(: $1 && $1 != "" && $1[0] != '#' :)));
foreach(string line in lines) {
string *words;
if( sizeof(words = explode(line, ":")) != 3 ) continue;
Zones[words[0]] = ([]);
Zones[words[0]]["offset"] = to_int(words[1]) - x;
Zones[words[0]]["name"] = words[2];
}
}
int GetOffset(string tzone) {
if(LOCAL_TIME) return 0;
if(!tzone) tzone = query_tz();
if( !Zones[tzone] ) return 0;
else return Zones[tzone]["offset"];
}
string GetName(string tzone) {
if(!tzone) tzone = query_tz();
if( !Zones[tzone] ) return 0;
else return Zones[tzone]["name"];
}
string *GetTimeZones() { return keys(Zones); }