actually set timezone in the kernel, and in the settings

should help on bug #583, and even fix it
minor change in localtime


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17441 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2006-05-13 15:52:32 +00:00
parent 0f22d7cfa8
commit ad34885a2b
2 changed files with 27 additions and 2 deletions
+26 -1
View File
@@ -4,8 +4,10 @@
*/
#include <FindDirectory.h>
#include <OS.h>
#include <stdio.h>
#include <string.h>
#include <syslog.h>
@@ -62,10 +64,33 @@ set_real_time_clock(uint32 secs)
status_t
set_timezone(char *timezone)
{
// ToDo: set_timezone()
char path[B_PATH_NAME_LENGTH];
char tzfilename[B_PATH_NAME_LENGTH];
bool isGMT;
status_t err;
struct tm *tm;
time_t t;
if ((err = find_directory(B_USER_SETTINGS_DIRECTORY, -1, true, path, B_PATH_NAME_LENGTH)) != B_OK) {
fprintf(stderr, "can't find settings directory: %s\n", strerror(err));
return err;
}
strcat(path, "/timezone");
err = unlink(path);
if (err != B_OK) {
fprintf(stderr, "can't unlink: %s\n", strerror(err));
return err;
}
err = symlink(timezone, path);
if (err != B_OK) {
fprintf(stderr, "can't symlink: %s\n", strerror(err));
return err;
}
_kern_get_tzfilename(tzfilename, sizeof(tzfilename), &isGMT);
_kern_set_tzfilename(timezone, strlen(timezone), isGMT);
tzset();
time(&t);
tm = localtime(&t);
+1 -1
View File
@@ -1057,7 +1057,7 @@ tzset P((void))
name = getenv("TZ");
if (name == NULL) {
_kern_get_tzfilename(tzfilename, B_PATH_NAME_LENGTH, &is_gmt);
_kern_get_tzfilename(tzfilename, sizeof(tzfilename), &is_gmt);
if (tzfilename[0] == '\0') {
tzsetwall();
return;