# with this program; if not, write to the Free Software Foundation, Inc.,
# 675 Mass Ave, Cambridge, MA 02139, USA.
+convert_timezone()
+{
+ case "$1" in
+ (right/*|posix/*)
+ convert_timezone "${1#*/}"
+ ;;
+ ("Africa/Asmera")
+ echo "Africa/Asmara"
+ ;;
+ ("America/Argentina/ComodRivadavia"|"America/Catamarca")
+ echo "America/Argentina/Catamarca"
+ ;;
+ ("America/Buenos_Aires")
+ echo "America/Argentina/Buenos_Aires"
+ ;;
+ ("America/Cordoba"|"America/Rosario")
+ echo "America/Argentina/Cordoba"
+ ;;
+ ("America/Jujuy")
+ echo "America/Argentina/Jujuy"
+ ;;
+ ("America/Mendoza")
+ echo "America/Argentina/Mendoza"
+ ;;
+ ("Antarctica/South_Pole")
+ echo "Antarctica/McMurdo"
+ ;;
+ "Asia/Ashkhabad")
+ echo "Asia/Ashgabat"
+ ;;
+ ("Asia/Calcutta")
+ echo "Asia/Kolkata"
+ ;;
+ "Asia/Chungking")
+ echo "Asia/Chongqing"
+ ;;
+ "Asia/Dacca")
+ echo "Asia/Dhaka"
+ ;;
+ ("Asia/Katmandu")
+ echo "Asia/Kathmandu"
+ ;;
+ "Asia/Macao")
+ echo "Asia/Macau"
+ ;;
+ ("Asia/Saigon")
+ echo "Asia/Ho_Chi_Minh"
+ ;;
+ "Asia/Thimbu")
+ echo "Asia/Thimphu"
+ ;;
+ "Asia/Ulan_Bator")
+ echo "Asia/Ulaanbaatar"
+ ;;
+ "Atlantic/Faeroe")
+ echo "Atlantic/Faroe"
+ ;;
+ "Australia/ACT" | "Australia/NSW")
+ echo "Australia/Sydney"
+ ;;
+ "Australia/LHI")
+ echo "Australia/Lord_Howe"
+ ;;
+ "Australia/North")
+ echo "Australia/Darwin"
+ ;;
+ "Australia/Queensland")
+ echo "Australia/Brisbane"
+ ;;
+ "Australia/South")
+ echo "Australia/Adelaide"
+ ;;
+ "Australia/Tasmania")
+ echo "Australia/Hobart"
+ ;;
+ "Australia/Victoria")
+ echo "Australia/Melbourne"
+ ;;
+ "Australia/West")
+ echo "Australia/Perth"
+ ;;
+ "Brazil/Acre")
+ echo "America/Rio_Branco"
+ ;;
+ "Brazil/DeNoronha")
+ echo "America/Noronha"
+ ;;
+ "Brazil/East")
+ echo "America/Sao_Paulo"
+ ;;
+ "Brazil/West")
+ echo "America/Manaus"
+ ;;
+ "Canada/Atlantic")
+ echo "America/Halifax"
+ ;;
+ "Canada/Central")
+ echo "America/Winnipeg"
+ ;;
+ "Canada/East-Saskatchewan")
+ echo "America/Regina"
+ ;;
+ "Canada/Eastern")
+ echo "America/Toronto"
+ ;;
+ "Canada/Mountain")
+ echo "America/Edmonton"
+ ;;
+ "Canada/Newfoundland")
+ echo "America/St_Johns"
+ ;;
+ "Canada/Pacific")
+ echo "America/Vancouver"
+ ;;
+ "Canada/Saskatchewan")
+ echo "America/Regina"
+ ;;
+ "Canada/Yukon")
+ echo "America/Whitehorse"
+ ;;
+ "CET")
+ echo "Europe/Paris"
+ ;;
+ "Chile/Continental")
+ echo "America/Santiago"
+ ;;
+ "Chile/EasterIsland")
+ echo "Pacific/Easter"
+ ;;
+ "CST6CDT")
+ echo "SystemV/CST6CDT"
+ ;;
+ "Cuba")
+ echo "America/Havana"
+ ;;
+ "EET")
+ echo "Europe/Helsinki"
+ ;;
+ "Egypt")
+ echo "Africa/Cairo"
+ ;;
+ "Eire")
+ echo "Europe/Dublin"
+ ;;
+ "EST")
+ echo "SystemV/EST5"
+ ;;
+ "EST5EDT")
+ echo "SystemV/EST5EDT"
+ ;;
+ "GB")
+ echo "Europe/London"
+ ;;
+ "GB-Eire")
+ echo "Europe/London"
+ ;;
+ "GMT")
+ echo "Etc/GMT"
+ ;;
+ "GMT0")
+ echo "Etc/GMT0"
+ ;;
+ "GMT-0")
+ echo "Etc/GMT-0"
+ ;;
+ "GMT+0")
+ echo "Etc/GMT+0"
+ ;;
+ "Greenwich")
+ echo "Etc/Greenwich"
+ ;;
+ "Hongkong")
+ echo "Asia/Hong_Kong"
+ ;;
+ "HST")
+ echo "Pacific/Honolulu"
+ ;;
+ "Iceland")
+ echo "Atlantic/Reykjavik"
+ ;;
+ "Iran")
+ echo "Asia/Tehran"
+ ;;
+ "Israel")
+ echo "Asia/Tel_Aviv"
+ ;;
+ "Jamaica")
+ echo "America/Jamaica"
+ ;;
+ "Japan")
+ echo "Asia/Tokyo"
+ ;;
+ "Kwajalein")
+ echo "Pacific/Kwajalein"
+ ;;
+ "Libya")
+ echo "Africa/Tripoli"
+ ;;
+ "MET")
+ echo "Europe/Paris"
+ ;;
+ "Mexico/BajaNorte")
+ echo "America/Tijuana"
+ ;;
+ "Mexico/BajaSur")
+ echo "America/Mazatlan"
+ ;;
+ "Mexico/General")
+ echo "America/Mexico_City"
+ ;;
+ "Mideast/Riyadh87")
+ echo "Asia/Riyadh87"
+ ;;
+ "Mideast/Riyadh88")
+ echo "Asia/Riyadh88"
+ ;;
+ "Mideast/Riyadh89")
+ echo "Asia/Riyadh89"
+ ;;
+ "MST")
+ echo "SystemV/MST7"
+ ;;
+ "MST7MDT")
+ echo "SystemV/MST7MDT"
+ ;;
+ "Navajo")
+ echo "America/Denver"
+ ;;
+ "NZ")
+ echo "Pacific/Auckland"
+ ;;
+ "NZ-CHAT")
+ echo "Pacific/Chatham"
+ ;;
+ "Poland")
+ echo "Europe/Warsaw"
+ ;;
+ "Portugal")
+ echo "Europe/Lisbon"
+ ;;
+ "PRC")
+ echo "Asia/Shanghai"
+ ;;
+ "PST8PDT")
+ echo "SystemV/PST8PDT"
+ ;;
+ "ROC")
+ echo "Asia/Taipei"
+ ;;
+ "ROK")
+ echo "Asia/Seoul"
+ ;;
+ "Singapore")
+ echo "Asia/Singapore"
+ ;;
+ "Turkey")
+ echo "Europe/Istanbul"
+ ;;
+ "UCT")
+ echo "Etc/UCT"
+ ;;
+ "Universal")
+ echo "Etc/UTC"
+ ;;
+ "US/Alaska")
+ echo "America/Anchorage"
+ ;;
+ "US/Aleutian")
+ echo "America/Adak"
+ ;;
+ "US/Arizona")
+ echo "America/Phoenix"
+ ;;
+ "US/Central")
+ echo "America/Chicago"
+ ;;
+ "US/East-Indiana")
+ echo "America/Indianapolis"
+ ;;
+ "US/Eastern")
+ echo "America/New_York"
+ ;;
+ "US/Hawaii")
+ echo "Pacific/Honolulu"
+ ;;
+ "US/Indiana-Starke")
+ echo "America/Indianapolis"
+ ;;
+ "US/Michigan")
+ echo "America/Detroit"
+ ;;
+ "US/Mountain")
+ echo "America/Denver"
+ ;;
+ "US/Pacific")
+ echo "America/Los_Angeles"
+ ;;
+ "US/Samoa")
+ echo "Pacific/Pago_Pago"
+ ;;
+ "UTC")
+ echo "Etc/UTC"
+ ;;
+ "WET")
+ echo "Europe/Lisbon"
+ ;;
+ "W-SU")
+ echo "Europe/Moscow"
+ ;;
+ "Zulu")
+ echo "Etc/UTC"
+ ;;
+ *)
+ echo "$1"
+ ;;
+ esac
+}
+
md5sum </dev/null >/dev/null 2>/dev/null || exit 1
-
+
+# this check will find the timezone if /etc/localtime is a link to the right timezone file
+# or that file has been copied to /etc/localtime and not changed afterwards
LOCALTIMESUM=`md5sum /etc/localtime | awk ' { print $1 } ' 2>/dev/null`
find /usr/share/zoneinfo -type f -print | while read filename
do
exit 0
fi
done 2>/dev/null
+
+# seems we haven't found the timezone yet, let's see whether /etc/timezone has some info
+
+if [ -e /etc/timezone ]; then
+ TIMEZONE="$(head -n 1 /etc/timezone)"
+ TIMEZONE="${TIMEZONE%% *}"
+ TIMEZONE="${TIMEZONE##/}"
+ TIMEZONE="${TIMEZONE%%/}"
+ TIMEZONE="$(convert_timezone $TIMEZONE)"
+ if [ -f "/usr/share/zoneinfo/$TIMEZONE" ] ; then
+ echo $TIMEZONE
+ exit 0
+ fi
+fi
+
exit 2