[tz] [PATCH 1/2] * tzselect.ksh: Compute list of continents from the time zone table,

Paul Eggert eggert at cs.ucla.edu
Wed Aug 21 03:26:31 UTC 2013


so that 'tzselect -t time' doesn't create a blind alley for the Arctic.
---
 tzselect.ksh | 54 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 23 deletions(-)

diff --git a/tzselect.ksh b/tzselect.ksh
index da6adb2..b8f2bc6 100644
--- a/tzselect.ksh
+++ b/tzselect.ksh
@@ -200,31 +200,39 @@ while
 
 	echo >&2 'Please select a continent, ocean, "coord", or "TZ".'
 
-	select continent in \
-	    Africa \
-	    Americas \
-	    Antarctica \
-	    'Arctic Ocean' \
-	    Asia \
-	    'Atlantic Ocean' \
-	    Australia \
-	    Europe \
-	    'Indian Ocean' \
-	    'Pacific Ocean' \
-	    'coord - I want to use geographical coordinates.' \
-	    'TZ - I want to specify the time zone using the Posix TZ format.'
-	do
-	    case $continent in
-	    '')
-		echo >&2 'Please enter a number in range.';;
-	    ?*)
+        quoted_continents=$(
+	  $AWK -F'\t' '
+	    /^[^#]/ {
+              entry = substr($3, 1, index($3, "/") - 1)
+              if (entry == "America")
+		entry = entry "s"
+              if (entry ~ /^(Arctic|Atlantic|Indian|Pacific)$/)
+		entry = entry " Ocean"
+              printf "'\''%s'\''\n", entry
+            }
+          ' $TZ_ZONE_TABLE |
+	  sort -u |
+	  tr '\n' ' '
+	  echo ''
+	)
+
+	eval '
+	    select continent in '"$quoted_continents"' \
+		"coord - I want to use geographical coordinates." \
+		"TZ - I want to specify the time zone using the Posix TZ format."
+	    do
 		case $continent in
-		Americas) continent=America;;
-		*' '*) continent=$(expr "$continent" : '\([^ ]*\)')
+		"")
+		    echo >&2 "Please enter a number in range.";;
+		?*)
+		    case $continent in
+		    Americas) continent=America;;
+		    *" "*) continent=$(expr "$continent" : '\''\([^ ]*\)'\'')
+		    esac
+		    break
 		esac
-		break
-	    esac
-	done
+	    done
+	'
 	esac
 
 	case $continent in
-- 
1.8.1.2




More information about the tz mailing list