Module Name: src Committed By: riz Date: Fri Oct 24 23:13:22 UTC 2014
Modified Files: src/distrib/sets [netbsd-7]: join.awk src/doc [netbsd-7]: CHANGES-7.0 Log Message: Back out #155, it was problematic on HEAD. Reapply when it's reworked and better tested. To generate a diff of this commit: cvs rdiff -u -r1.3.42.1 -r1.3.42.2 src/distrib/sets/join.awk cvs rdiff -u -r1.1.2.64 -r1.1.2.65 src/doc/CHANGES-7.0 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/join.awk diff -u src/distrib/sets/join.awk:1.3.42.1 src/distrib/sets/join.awk:1.3.42.2 --- src/distrib/sets/join.awk:1.3.42.1 Fri Oct 24 07:30:14 2014 +++ src/distrib/sets/join.awk Fri Oct 24 23:13:22 2014 @@ -1,4 +1,4 @@ -# $NetBSD: join.awk,v 1.3.42.1 2014/10/24 07:30:14 martin Exp $ +# $NetBSD: join.awk,v 1.3.42.2 2014/10/24 23:13:22 riz Exp $ # # Copyright (c) 2002 The NetBSD Foundation, Inc. # All rights reserved. @@ -30,102 +30,7 @@ # join.awk F1 F2 # Similar to join(1), this reads a list of words from F1 # and outputs lines in F2 with a first word that is in F1. -# The first word is canonicalised via vis(unvis(word))). -# Neither file needs to be sorted. - -function unvis(s) \ -{ - # XXX: We don't handle the complete range of vis encodings - unvis_result = "" - while (length(s) > 0) { - unvis_pos = match(s, "\\\\.") - if (unvis_pos == 0) { - unvis_result = unvis_result "" s - s = "" - break - } - # copy the part before the next backslash - unvis_result = unvis_result "" substr(s, 1, unvis_pos - 1) - s = substr(s, unvis_pos) - # process the backslash and next few chars - if (substr(s, 1, 2) == "\\\\") { - # double backslash -> single backslash - unvis_result = unvis_result "\\" - s = substr(s, 3) - } else if (match(s, "\\\\[0-7][0-7][0-7]") == 1) { - # \ooo with three octal digits. - # XXX: use strtonum() when that is available - unvis_result = unvis_result "" sprintf("%c", \ - 0+substr(s, 2, 1) * 64 + \ - 0+substr(s, 3, 1) * 8 + \ - 0+substr(s, 4, 1)) - s = substr(s, 5) - } else { - # unrecognised escape: keep the literal backslash - printf "%s: %s:%s: unrecognised escape %s\n", \ - ARGV[0], (FILENAME ? FILENAME : "stdin"), FNR, \ - substr(s, 1, 2) \ - >"/dev/stderr" - unvis_result = unvis_result "" substr(s, 1, 1) - s = substr(s, 2) - } - } - return unvis_result -} - -function vis(s) \ -{ - # We need to encode backslash, space, and tab, because they - # would interfere with scripts that attempt to manipulate - # the set files. - # - # We make no attempt to encode shell special characters - # such as " ' $ ( ) { } [ ] < > * ?, because nothing that - # parses set files would need that. - # - # We would like to handle other white space or non-graph - # characters, because they may be confusing for human readers, - # but they are too difficult to handle in awk without the ord() - # function, so we print an error message. - # - # As of October 2014, no files in the set lists contain - # characters that would need any kind of encoding. - # - vis_result = "" - while (length(s) > 0) { - vis_pos = match(s, "(\\\\|[[:space:]]|[^[:graph:]])") - if (vis_pos == 0) { - vis_result = vis_result "" s - s = "" - break - } - # copy the part before the next special char - vis_result = vis_result "" substr(s, 1, vis_pos - 1) - vis_char = substr(s, vis_pos, 1) - s = substr(s, vis_pos + 1) - # process the special char - if (vis_char == "\\") { - # backslash -> double backslash - vis_result = vis_result "\\\\" - } else if (vis_char == " ") { - # space -> \040 - vis_result = vis_result "\\040" - } else if (vis_char == "\t") { - # tab -> \011 - vis_result = vis_result "\\011" - } else { - # generalised \ooo with three octal digits. - # XXX: I don't know how to do this in awk without ord() - printf "%s: %s:%s: cannot perform vis encoding\n", \ - ARGV[0], (FILENAME ? FILENAME : "stdin"), FNR \ - >"/dev/stderr" - vis_result = vis_result "" vis_char - } - } - return vis_result -} - -// { $1 = vis(unvis($1)); print } +# Neither file needs to be sorted BEGIN \ { @@ -133,15 +38,11 @@ BEGIN \ printf("Usage: join file1 file2\n") >"/dev/stderr" exit 1 } - while ( (getline < ARGV[1]) > 0) { - $1 = vis(unvis($1)) + while ( (getline < ARGV[1]) > 0) words[$1] = $0 - } delete ARGV[1] } -// { $1 = vis(unvis($1)) } - $1 in words \ { f1=$1 Index: src/doc/CHANGES-7.0 diff -u src/doc/CHANGES-7.0:1.1.2.64 src/doc/CHANGES-7.0:1.1.2.65 --- src/doc/CHANGES-7.0:1.1.2.64 Fri Oct 24 07:32:25 2014 +++ src/doc/CHANGES-7.0 Fri Oct 24 23:13:22 2014 @@ -1,4 +1,4 @@ -# $NetBSD: CHANGES-7.0,v 1.1.2.64 2014/10/24 07:32:25 martin Exp $ +# $NetBSD: CHANGES-7.0,v 1.1.2.65 2014/10/24 23:13:22 riz Exp $ A complete list of changes from the initial NetBSD 7.0 branch on 11 Aug 2014 until the 7.0 release: @@ -1826,15 +1826,3 @@ sys/netinet/tcp_output.c 1.177 IPsec outbound policy will not be checked when ipsec_used is false. [hikaru, ticket #154] -distrib/sets/join.awk 1.4-1.5 - - Add an unvis function and use it on file names in mtree specs. - - This should correct the problem that ./bin/[ was missing from the - base.tgz set, despite being listed in src/distrib/sets/base/mi - and being present in METALOG. The corresponding entry in - METALOG.sanitised has ./bin/\133 instead of ./bin/[, and that made - join.awk omit it. - - Add vis() function, and canonicalise file names via vis(unvis($1)). - [apb, ticket #155]