87 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Org Mode
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Org Mode
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| #
 | |
| # tzset-from-unicode.org
 | |
| #
 | |
| # Fetch XML file containing mapping of Windows timezone keynames and countries
 | |
| # per ISO 3166-1 to POSIX timezones from unicode.org.
 | |
| #
 | |
| # Create the table file as required by tzset.c.
 | |
| #
 | |
| 
 | |
| ZONES_FILE="http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml"
 | |
| 
 | |
| echo "/*"
 | |
| echo "   This file gets auto-generated by the script tzmap-from-unicode.org via"
 | |
| echo "   a Makefile rule.  To regenerate the file, just call 'make tzmap'.  It"
 | |
| echo "   fetches the file"
 | |
| echo ""
 | |
| echo "     ${ZONES_FILE}"
 | |
| echo ""
 | |
| echo "   using wget and converts it into the tzmap table required by tzget.c."
 | |
| echo "   Regenerating might be necessary on a regular basis..."
 | |
| echo ""
 | |
| echo "   This table maps Windows timezone keynames and countries per ISO 3166-1 to"
 | |
| echo "   POSIX-compatible timezone IDs."
 | |
| echo ""
 | |
| echo "   The mapping from unicode.org is just a bit incomplete.  It doesn't contain"
 | |
| echo "   a few timezones available on Windows XP, namely:"
 | |
| echo ""
 | |
| echo "    Armenian Standard Time"
 | |
| echo "    Mexico Standard Time"
 | |
| echo "    Mexico Standard Time 2"
 | |
| echo ""
 | |
| echo "  as well as the still (Windows 8.1) available"
 | |
| echo ""
 | |
| echo "    E. Europe Standard Time"
 | |
| echo "    Mid-Atlantic Standard Time"
 | |
| echo "    Kamchatka Standard Time"
 | |
| echo ""
 | |
| echo "  as well as a few combinations which got a new Windows timezone name"
 | |
| echo ""
 | |
| echo "    Eastern Standard Time/TC"
 | |
| echo "    Egypt Standard Time/PS"
 | |
| echo "    Greenwich Standard Time/EH"
 | |
| echo "    Hawaiian Standard Time/TK"
 | |
| echo "    Kaliningrad Standard Time/BY"
 | |
| echo "    SA Pacific Standard Time/HT "
 | |
| echo "    South Africa Standard Time/LY"
 | |
| echo ""
 | |
| echo "  It also doesn't contain some of the deprecated country codes used in older"
 | |
| echo "  OSes, namely:"
 | |
| echo ""
 | |
| echo "    SP (Serbian, proposed) used in XP"
 | |
| echo "    CS (Serbian and Montenegro, dissolved, now RS and ME) used in Vista"
 | |
| echo " "
 | |
| echo "  While these are apparently old, they are required here to get a complete"
 | |
| echo "  mapping on all supported OSes. */"
 | |
| echo "struct"
 | |
| echo "{"
 | |
| echo "  PCWSTR win_tzkey;"
 | |
| echo "  PCWSTR country;"
 | |
| echo "  PCWSTR posix_tzid;"
 | |
| echo "} const tzmap[] ="
 | |
| echo "{"
 | |
| wget -O - "${ZONES_FILE}" | \
 | |
| {
 | |
|   sed -n -e 's#territory="001"#territory=""#
 | |
| 	     s#Asia/Calcutta#Asia/Kolkata#
 | |
| 	     s#.*mapZone other=\("[^"]*"\) territory=\("[^"]*"\) type=\("[^"]*"\).*#  { L\1, L\2, L\3 },#p'
 | |
|   echo '  { L"Armenian Standard Time", L"AM", L"Asia/Yerevan" },'
 | |
|   echo '  { L"Central Europe Standard Time", L"CS", L"Europe/Belgrade" },'
 | |
|   echo '  { L"Central Europe Standard Time", L"SP", L"Europe/Belgrade" },'
 | |
|   echo '  { L"E. Europe Standard Time", L"", L"Asia/Nicosia" },'
 | |
|   echo '  { L"E. Europe Standard Time", L"CY", L"Asia/Nicosia" },'
 | |
|   echo '  { L"Eastern Standard Time", L"TC", L"America/Grand_Turk" },'
 | |
|   echo '  { L"Egypt Standard Time", L"PS", L"Asia/Gaza Asia/Hebron" },'
 | |
|   echo '  { L"Greenwich Standard Time", L"EH", L"Africa/El_Aaiun" },'
 | |
|   echo '  { L"Kaliningrad Standard Time", L"BY", L"Europe/Minsk" },'
 | |
|   echo '  { L"Kamchatka Standard Time", L"", L"Asia/Kamchatka" },'
 | |
|   echo '  { L"Hawaiian Standard Time", L"TK", L"Pacific/Fakaofo" },'
 | |
|   echo '  { L"Mexico Standard Time", L"", L"America/Mexico_City" },'
 | |
|   echo '  { L"Mexico Standard Time 2", L"", L"America/Mazatlan" },'
 | |
|   echo '  { L"Mid-Atlantic Standard Time", L"", L"Atlantic/South_Georgia" },'
 | |
|   echo '  { L"SA Pacific Standard Time", L"HT", L"America/Port-au-Prince" },'
 | |
|   echo '  { L"South Africa Standard Time", L"LY", L"Africa/Tripoli" },'
 | |
| } | sort -d
 | |
| echo "};"
 |