Release 2.1.3.
[u/mdw/catacomb] / genmodes
index 48175ce..76b82a6 100755 (executable)
--- a/genmodes
+++ b/genmodes
@@ -1,5 +1,6 @@
 #! /bin/sh
 
+set -e
 baselist=$1
 extlist=$2
 
@@ -7,8 +8,8 @@ for i in $baselist; do
   I=`echo "$i" | tr -d '\n' | tr a-z A-Z | tr -c a-zA-Z0-9 _`
   for j in $extlist; do
     J=`echo "$j" | tr -d '\n' | tr a-z A-Z | tr -c a-zA-Z0-9 _`
-    guard="${I}_${J}_H"
-    cat >$i-$j.h <<EOF
+    guard="CATACOMB_${I}_${J}_H"
+    cat >$i-$j.h.new <<EOF
 /* -*-c-*-
  *
  * $i-$j.h [generated]
@@ -21,11 +22,11 @@ for i in $baselist; do
   extern "C" {
 #endif
 
-#ifndef ${J}_H
+#ifndef CATACOMB_${J}_H
 #  include "$j.h"
 #endif
 
-#ifndef ${I}_H
+#ifndef CATACOMB_${I}_H
 #  include "$i.h"
 #endif
 
@@ -37,14 +38,27 @@ ${J}_DECL($I, $i)
 
 #endif
 EOF
-    cat >$i-$j.c <<EOF
+    if cmp "$i-$j.h" "$i-$j.h.new" >/dev/null 2>&1; then
+      rm "$i-$j.h.new"
+    else
+      mv "$i-$j.h.new" "$i-$j.h"
+      echo >&2 "Written new $i-$j.h."
+    fi
+    cat >$i-$j.c.new <<EOF
 /* -*-c-*-
  *
- * $i-$j.h [generated]
+ * $i-$j.c [generated]
  */
 
 #include "$i-$j.h"
+#include "$j-def.h"
 ${J}_DEF($I, $i)
 EOF
+    if cmp "$i-$j.c" "$i-$j.c.new" >/dev/null 2>&1; then
+      rm "$i-$j.c.new"
+    else
+      mv "$i-$j.c.new" "$i-$j.c"
+      echo >&2 "Written new $i-$j.c."
+    fi
   done
 done