##### /etc/config/timezone config timezone option posixtz '' option zoneinfo '' option etctz '/etc/TZ' ##### /etc/init.d/timezone #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=11 EXTRA_COMMANDS="list" EXTRA_HELP=" list Lists available time zones" TIMEZONE_TABLE=/usr/lib/timezones.csv get_posix_timezone () { awk -v timezoneinfo="$zoneinfo" 'BEGIN { FS = " " } /^(#.*)?$/ { next } { list_timezone = $4; if ( list_timezone == timezoneinfo ) { print $3 } } END { }' < $TIMEZONE_TABLE 2>/dev/null } list_available_timezones () { awk 'BEGIN { FS = " "; last_group="" } /^(#.*)?$/ { next } $1 != last_group { last_group=$1; print "\n" $1 } { list_timezone = $4; print " " list_timezone } END { }' < $TIMEZONE_TABLE 2>/dev/null } start_service () { local section="$1" config_get posixtz "$section" posixtz config_get zoneinfo "$section" zoneinfo config_get etctz "$section" etctz if [ ! -h "$etctz" ]; then ln -sf /tmp/TZ "$etctz" fi [ -n "$zoneinfo" ] && get_posix_timezone "$zoneinfo" > "$etctz" || echo "UTC+0" > "$etctz" # config_set # posixtz=get_posix_timezone "$zoneinfo" config_set "timezone" "posixtz" "foobar" } start () { config_load "timezone" config_foreach start_service timezone } restart () { start } list () { echo "Available time zones" echo "--------------------" list_available_timezones }