From 1c20cf491471a4a70f103a9d052fcca993eaa341 Mon Sep 17 00:00:00 2001 From: Qingqing Li Date: Tue, 22 Feb 2022 15:00:55 +0800 Subject: [PATCH] use region to instead of country for extract timezone selection. Co-authored-by: liusirui --- timezone/tzselect.ksh | 97 +++++++++---------------------------------- 1 file changed, 20 insertions(+), 77 deletions(-) diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh index 18fce27e..414bfa2a 100755 --- a/timezone/tzselect.ksh +++ b/timezone/tzselect.ksh @@ -51,7 +51,7 @@ say() { coord= location_limit=10 -zonetabtype=zone1970 +zonetabtype=zone usage="Usage: tzselect [--version] [--help] [-c COORD] [-n LIMIT] Select a timezone interactively. @@ -398,94 +398,38 @@ while '` ;; *) - # Get list of names of countries in the continent or ocean. - countries=`$AWK \ + # Get list of regions in the continent or ocean. + timezones=`$AWK \ -v continent="$continent" \ -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ ' BEGIN { FS = "\t" } /^#/ { next } $3 ~ ("^" continent "/") { - ncc = split($1, cc, /,/) + ncc = split($3, cc, /,/) for (i = 1; i <= ncc; i++) if (!cc_seen[cc[i]]++) cc_list[++ccs] = cc[i] } END { - while (getline &2 'Please select a country' \ - 'whose clocks agree with yours.' - doselect $countries - country=$select_result;; - *) - country=$countries - esac - - - # Get list of timezones in the country. - regions=`$AWK \ - -v country="$country" \ - -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ - ' - BEGIN { - FS = "\t" - cc = country - while (getline &2 'Please select one of the following timezones.' - doselect $regions - region=$select_result;; - *) - region=$regions - esac + regions=[] + index=0 + for item in $timezones; do + regions[$index]=`echo $item | awk -F '/' '{print $2}'` + index=$(($index+1)) + done + echo >&2 'Please select a timezone' \ + 'whose clocks agree with yours.' + doselect ${regions[@]} + region=$select_result # Determine TZ from country and region. - TZ=`$AWK \ - -v country="$country" \ - -v region="$region" \ - -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ - ' - BEGIN { - FS = "\t" - cc = country - while (getline &2 "" echo >&2 "The following information has been given:" echo >&2 "" - case $country%$region%$coord in - ?*%?*%) say >&2 " $country$newline $region";; - ?*%%) say >&2 " $country";; - %?*%?*) say >&2 " coord $coord$newline $region";; - %%?*) say >&2 " coord $coord";; + case $region%$coord in + ?*%) say >&2 " $region";; + ?*%?*) say >&2 " coord $coord$newline $region";; + %?*) say >&2 " coord $coord";; *) say >&2 " TZ='$TZ'" esac say >&2 "" -- 2.27.0