eh, make ’em volatile, this is not time-critical code anyway
[alioth/magicpoint.git] / ctlwords.sh
index a0a76c0..7fe68b2 100644 (file)
@@ -40,7 +40,18 @@ upper() {
        echo :"$@" | sed 's/^://' | tr $alll $allu
 }
 
-rm -f ctlwords.pl
+rm -f ctlwords.c ctlwords.h ctlwords.pl
+
+cat >ctlwords.c~ <<\EOF
+/* this was generated by ctlwords.sh, do not edit */
+#include "mgp.h"
+const struct ctl_words ctl_words[] = {
+EOF
+
+cat >ctlwords.h~ <<\EOF
+/* this was generated by ctlwords.sh, do not edit */
+EOF
+
 cat >ctlwords.pl~ <<\EOF
 
 # this keyword list was generated by ctlwords.sh, do not edit
@@ -55,8 +66,11 @@ while read control ctype clabel; do
                clabel=$control
        elif test x"$clabel" = x"*"; then
                clabel='*'$control'*'
+       else
+               :
        fi
-       clbsz=${#clabel}
+       clbsz=`expr "X$clabel" : '.*'`
+       clbsz=`expr $clbsz - 1` # the X
        cat >&4 <<EOF
        { "$clabel", $clbsz, $ctlup, $ctyup },
 EOF
@@ -67,7 +81,7 @@ EOF
 "$control",
 EOF
        lfd=`expr $lfd + 1`
-done 4>ctlwords.c 5>ctlwords.h 6>>ctlwords.pl~ <<\EOF
+done 4>>ctlwords.c~ 5>>ctlwords.h~ 6>>ctlwords.pl~ <<\EOF
 noop           void
 default                int
 tab            sp
@@ -127,10 +141,22 @@ setsup            int
 title          str
 EOF
 
-cat >ctlwords.pl~ <<\EOF
+cat >>ctlwords.pl~ <<\EOF
 );
 # end of generated keyword list
 
 EOF
 
+cat >>ctlwords.h~ <<\EOF
+/* end of generated file */
+EOF
+
+cat >>ctlwords.c~ <<\EOF
+       { NULL, 0, 0, 0 }
+};
+/* end of generated list */
+EOF
+
 mv ctlwords.pl~ ctlwords.pl
+mv ctlwords.h~ ctlwords.h
+mv ctlwords.c~ ctlwords.c