* add Michael Meskes patch to the timezone guessing.
authorWilfried Göesgens <willi@citadel.org>
Tue, 24 Feb 2009 23:07:06 +0000 (23:07 +0000)
committerWilfried Göesgens <willi@citadel.org>
Tue, 24 Feb 2009 23:07:06 +0000 (23:07 +0000)
citadel/guesstimezone.sh

index 90493fd170754c0830280290fc1399f78ed99a5b..0c86ffce2bf7e549d53198094f032a58ca631047 100755 (executable)
 # 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
@@ -30,4 +350,19 @@ 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