mirror of
https://github.com/webmin/webmin.git
synced 2026-02-12 10:02:06 +00:00
71 lines
1.3 KiB
Perl
Executable File
71 lines
1.3 KiB
Perl
Executable File
# Functions for getting and setting the timezone on Linux
|
|
|
|
$timezone_file = "/etc/TIMEZONE";
|
|
$timezones_dir = "/usr/share/lib/zoneinfo";
|
|
$rtc_config = "/etc/rtc_config";
|
|
|
|
# list_timezones()
|
|
sub list_timezones
|
|
{
|
|
local @rv;
|
|
local $file;
|
|
&open_execute_command(FIND, "find $timezones_dir -type f", 1);
|
|
while($file = <FIND>) {
|
|
chop($file);
|
|
local $buf;
|
|
&open_readfile(INFO, $file);
|
|
read(INFO, $buf, 2);
|
|
close(INFO);
|
|
if ($buf eq "TZ") {
|
|
# A timezone file we can use!
|
|
$file =~ s/^$timezones_dir\///;
|
|
push(@rv, [ $file, undef ]);
|
|
}
|
|
}
|
|
close(FIND);
|
|
return sort { $a->[0] cmp $b->[0] } @rv;
|
|
}
|
|
|
|
# get_current_timezone()
|
|
sub get_current_timezone
|
|
{
|
|
local %tz;
|
|
&read_env_file($timezone_file, \%tz);
|
|
$tz{'TZ'} =~ s/^://;
|
|
return $tz{'TZ'};
|
|
}
|
|
|
|
# set_current_timezone(zone)
|
|
sub set_current_timezone
|
|
{
|
|
local %tz;
|
|
&lock_file($timezone_file);
|
|
&read_env_file($timezone_file, \%tz);
|
|
$tz{'TZ'} = $_[0];
|
|
&write_env_file($timezone_file, \%tz);
|
|
&unlock_file($timezone_file);
|
|
|
|
if (-r $rtc_config) {
|
|
# Update x86 RTC timezone too
|
|
&lock_file($rtc_config);
|
|
local %rtc;
|
|
&read_env_file($rtc_config, \%rtc);
|
|
$rtc{'zone_info'} = $_[0];
|
|
&write_env_file($rtc_config, \%rtc);
|
|
&unlock_file($rtc_config);
|
|
}
|
|
}
|
|
|
|
sub os_has_timezones
|
|
{
|
|
return -r $timezone_file && -d $timezones_dir;
|
|
}
|
|
|
|
sub timezone_files
|
|
{
|
|
return ( $timezone_file );
|
|
}
|
|
|
|
1;
|
|
|