chiark / gitweb /
mkrules: Correct handling of multiple foundry mappings.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 11 Jan 2012 01:32:37 +0000 (01:32 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 11 Jan 2012 01:35:59 +0000 (01:35 +0000)
If multiple PCFs request the same mapping, only write it once; if
they induce inconsistent mappings, report an error.  Make sure
there's a newline between foundry mapping entries.

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
mkrules

diff --git a/mkrules b/mkrules
index b55b397..a0d08de 100755 (executable)
--- a/mkrules
+++ b/mkrules
@@ -25,6 +25,7 @@ chars () {
 }
 
 seenrules=/
+seenfoundries=/
 
 while read keyword rest; do
        case "$keyword" in
@@ -54,7 +55,19 @@ while read keyword rest; do
                        print or die $!;
                        exit;
                ' <$good`
-               printf "%s %s" "$oldfoundry" "$newfoundry" >>rules/foundries.new
+               case "$seenfoundries" in
+               */"$oldfoundry,$newfoundry"/*)
+                       ;;
+               */"$oldfoundry,"*)
+                       echo >&2 "inconsistent foundry mapping"
+                       exit 1
+                       ;;
+               *)
+                       seenfoundries=$seenfoundries$oldfoundry,$newfoundry/
+                       printf >>rules/foundries.new \
+                               "%s %s\n" "$oldfoundry" "$newfoundry"
+                       ;;
+               esac
                case "$seenrules" in
                */"$newfoundry,$key"/*)
                        exec 3>>rules/$newfoundry,$key.rules