#!/bin/sh
# vim: ts=4 sw=4 et ft=sh
# Given the name of a C source file generated by the Mercury compiler,
# and a count of the number of the number of modules in it (say N),
# generate N+1 files named $filename.part.{0,1,...N}.
#
# $filename.part.N will contain the module initialization stuff from the
# of the source file; the other files will contain a module each. Any stuff
# before the first module will be in $filename.part.0.
#
# Since divide can take a long time, it prints messages saying which part
# it is up to.

if test $# != 2
then
    echo "Usage: divide filename module_count"
    exit 1
fi

TERMCAP=/etc/termcap; export TERMCAP
cp $1 tmp

i=0
while test $i -lt $2
do
    ed - tmp > /dev/null << END
    /^MR_END_MODULE/
    1,.w $1.part.$i
    1,.d
    w
    q
END
    echo done part $i
    i=`expr $i + 1`
done
mv tmp $1.part.$i
echo done final part $i
