Before version 1.21.0, BusyBox awk didn't unescape the argument to the -F option. As a result, tzselect couldn't parse tables with such versions of BusyBox awk. See <https://bugs.busybox.net/show_bug.cgi?id=5126> and <http://git.busybox.net/busybox/commit?id=ea664dd>. * tzselect.sh: Replace "\t" in awk -F arguments with the tab character. --- tzselect.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tzselect.sh b/tzselect.sh index 72e7504..829a808 100644 --- a/tzselect.sh +++ b/tzselect.sh @@ -219,7 +219,8 @@ while echo >&2 'Please select a continent, ocean, "coord", or "TZ".' quoted_continents=$( - $AWK -F'\t' ' + $AWK ' + BEGIN { FS = "\t" } /^[^#]/ { entry = substr($3, 1, index($3, "/") - 1) if (entry == "America") @@ -312,10 +313,11 @@ while ;; *) # Get list of names of countries in the continent or ocean. - countries=$($AWK -F'\t' \ + countries=$($AWK \ -v continent="$continent" \ -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ ' + BEGIN { FS = "\t" } /^#/ { next } $3 ~ ("^" continent "/") { if (!cc_seen[$1]++) cc_list[++ccs] = $1 @@ -350,11 +352,12 @@ while # Get list of names of time zone rule regions in the country. - regions=$($AWK -F'\t' \ + 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) { @@ -381,12 +384,13 @@ while esac # Determine TZ from country and region. - TZ=$($AWK -F'\t' \ + 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) { -- Patrick "P. J." McDermott http://www.pehjota.net/ Lead Developer, ProteanOS http://www.proteanos.com/