加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
use-region-to-instead-of-country-for-extract-timezon.patch 3.89 KB
一键复制 编辑 原始数据 按行查看 历史
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化