[tz] winnow patches

Alan Barrett apb at cequrux.com
Sat Sep 7 14:57:01 UTC 2013

On Sun, 01 Sep 2013, Zefram wrote:
> OK, patches.  You can pull the changes from my git repo, 
> <git://git.fysh.org/zefram/tz.git> branch zefram/winnow.  It's 
> based on Eggert's current master branch.  Unfortunately the 
> first patch, which adds the population data, is a bit big for 
> the mailing list:

While trying to test this code, I encountered two problems in the
awk programs.

1. The standard awk split() function does not accept regular 
expressions delimited by slashes.  For example, you should use the 

         split(region_data, rd, "\\n")

instead of the non-standard

         split(region_data, rd, /\n/)

2. In standard awk, the command line option "-v variable=value" 
requires the "value" part to be expressed in the same notation 
as is used for double-quoted strings in awk source code.  By my 
reading of the POSIX specification for awk 
this implies that raw newlines are not allowed there, although 
newlines encoded as \n are allowed.  You can deal with this using 
environment variables, like this:

                         d="$region_data" \
                         $AWK '
                         BEGIN {
                                 d = ENVIRON["d"]
                                 gsub(/\t[^\t\n]*/, "", d)
                                 print d
                 ' </dev/null | [...]

Alternatively, you could pass positional arguments instead of options,
like this:

                         $AWK '
                         BEGIN {
                                 d = ARGV[1]
                                 gsub(/\t[^\t\n]*/, "", d)
                                 print d
                 ' \
                 "$region_data" \
                 </dev/null | [...]

--apb (Alan Barrett)

More information about the tz mailing list