chiark / gitweb /
mkrules: Correct handling of multiple foundry mappings.
[xfonts-traditional] / mkrules
diff --git a/mkrules b/mkrules
index b55b3976f65bf4b2ce88839c8edcda284cee920e..a0d08def625542ade32a5ebeb08c816ef4522316 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