#!/bin/sh
# replace tokens defined in file(s)
# Usage: mkman infile outfile file(s)
# Example: mkman isodump.man isodump.1 isodump.c
# Hint: A white space within the value of a definitions is understood as ending
#       delimiter - only exception is a value braced by two "'s. For instance
#define		bla	( A )
# bla is replaced by "(" and not by "( A )" BUT
#define		bla	" Hello user!  "
# bla is replaced by " Hello user!  " (spaces included).
# "s are deleted from values.

SFILE=sedfile
INFILE=$1
shift
OUTFILE=$1
shift

# set up sed file

grep "^#define" $* | (
while [ 1 = 1 ]; do
  read a tok val rest || exit 0;
  echo $val | grep -q "^\"";
  if [ $? -eq 0 ]; then
    val=`echo "$val $rest" | sed -e "s/^\"//" -e "s/\".*//"`;
  fi;
  echo s/$tok/`echo $val | sed -e "s/\//\\\\\&/g" -e "s/&/\\\\\&/g"`/g;
done
) > $SFILE

# do the replacements

sed -f $SFILE $INFILE > $OUTFILE
rm -f $SFILE

# prepare for possible next run

cp $OUTFILE $INFILE

exit 0
