summaryrefslogtreecommitdiff
path: root/use-region-to-instead-of-country-for-extract-timezon.patch
diff options
context:
space:
mode:
Diffstat (limited to 'use-region-to-instead-of-country-for-extract-timezon.patch')
-rw-r--r--use-region-to-instead-of-country-for-extract-timezon.patch152
1 files changed, 152 insertions, 0 deletions
diff --git a/use-region-to-instead-of-country-for-extract-timezon.patch b/use-region-to-instead-of-country-for-extract-timezon.patch
new file mode 100644
index 0000000..7e8eb07
--- /dev/null
+++ b/use-region-to-instead-of-country-for-extract-timezon.patch
@@ -0,0 +1,152 @@
+From 1c20cf491471a4a70f103a9d052fcca993eaa341 Mon Sep 17 00:00:00 2001
+From: Qingqing Li <liqingqing3@huawei.com>
+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 <liusirui@huawei.com>
+---
+ 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 <TZ_COUNTRY_TABLE) {
+- if ($0 !~ /^#/) cc_name[$1] = $2
+- }
+ for (i = 1; i <= ccs; i++) {
+- country = cc_list[i]
+- if (cc_name[country]) {
+- country = cc_name[country]
+- }
+- print country
++ print cc_list[i]
+ }
+ }
+ ' <"$TZ_ZONE_TABLE" | sort -f`
+
+-
+- # If there's more than one country, ask the user which one.
+- case $countries in
+- *"$newline"*)
+- echo >&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 <TZ_COUNTRY_TABLE) {
+- if ($0 !~ /^#/ && country == $2) {
+- cc = $1
+- break
+- }
+- }
+- }
+- /^#/ { next }
+- $1 ~ cc { print $4 }
+- ' <"$TZ_ZONE_TABLE"`
+-
+-
+- # If there's more than one region, ask the user which one.
+- case $regions in
+- *"$newline"*)
+- echo >&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 <TZ_COUNTRY_TABLE) {
+- if ($0 !~ /^#/ && country == $2) {
+- cc = $1
+- break
+- }
+- }
+- }
+- /^#/ { next }
+- $1 ~ cc && $4 == region { print $3 }
+- ' <"$TZ_ZONE_TABLE"`
++ TZ=$continent/$region
+ esac
+
+ # Make sure the corresponding zoneinfo file exists.
+@@ -523,11 +467,10 @@ Universal Time is now: $UTdate."
+ echo >&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
+