|
Packit Service |
2781ba |
#!/bin/bash
|
|
Packit Service |
2781ba |
#
|
|
Packit Service |
2781ba |
# Utility script to merge an xml snippet from one file into a document.
|
|
Packit Service |
2781ba |
#
|
|
Packit Service |
2781ba |
# To insert the file foo.inc into bar.xml,
|
|
Packit Service |
2781ba |
# after the first line containing the marker enter
|
|
Packit Service |
2781ba |
#
|
|
Packit Service |
2781ba |
# xml_insert.sh bar.xml foo foo.inc
|
|
Packit Service |
2781ba |
#
|
|
Packit Service |
2781ba |
# 2005 © Øyvind Kolås
|
|
Packit Service |
2781ba |
#
|
|
Packit Service |
2781ba |
# FIXME: add argument checking / error handling
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
: ${AWK="awk"}
|
|
Packit Service |
2781ba |
: ${ECHO="echo"}
|
|
Packit Service |
2781ba |
: ${MKDIR="mkdir"}
|
|
Packit Service |
2781ba |
: ${SED="sed"}
|
|
Packit Service |
2781ba |
: ${Xsed="$SED -e 1s/^X//"}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# Global variables:
|
|
Packit Service |
2781ba |
EXIT_SUCCESS=0
|
|
Packit Service |
2781ba |
EXIT_FAILURE=1
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
dirname="s,/[[^/]]*$,,"
|
|
Packit Service |
2781ba |
basename="s,^.*/,,"
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
|
|
Packit Service |
2781ba |
# is ksh but when the shell is invoked as "sh" and the current value of
|
|
Packit Service |
2781ba |
# the _XPG environment variable is not equal to 1 (one), the special
|
|
Packit Service |
2781ba |
# positional parameter $0, within a function call, is the name of the
|
|
Packit Service |
2781ba |
# function.
|
|
Packit Service |
2781ba |
progpath="$0"
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# The name of this program:
|
|
Packit Service |
2781ba |
# In the unlikely event $progname began with a '-', it would play havoc with
|
|
Packit Service |
2781ba |
# func_echo (imagine progname=-n), so we prepend ./ in that case:
|
|
Packit Service |
2781ba |
progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# func_error arg...
|
|
Packit Service |
2781ba |
# Echo program name prefixed message to standard error.
|
|
Packit Service |
2781ba |
func_error ()
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
$ECHO "$progname: "${1+"$@"} 1>&2
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# func_fatal_error arg...
|
|
Packit Service |
2781ba |
# Echo program name prefixed message to standard error, and exit.
|
|
Packit Service |
2781ba |
func_fatal_error ()
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
func_error ${1+"$@"}
|
|
Packit Service |
2781ba |
exit $EXIT_FAILURE
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# func_mktempdir [string]
|
|
Packit Service |
2781ba |
# Make a temporary directory that won't clash with other running
|
|
Packit Service |
2781ba |
# processes, and avoids race conditions if possible. If
|
|
Packit Service |
2781ba |
# given, STRING is the basename for that directory.
|
|
Packit Service |
2781ba |
func_mktempdir ()
|
|
Packit Service |
2781ba |
{
|
|
Packit Service |
2781ba |
my_template="${TMPDIR-/tmp}/${1-$progname}"
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
if test "$opt_dry_run" = ":"; then
|
|
Packit Service |
2781ba |
# Return a directory name, but don't create it in dry-run mode
|
|
Packit Service |
2781ba |
my_tmpdir="${my_template}-$$"
|
|
Packit Service |
2781ba |
else
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# If mktemp works, use that first and foremost
|
|
Packit Service |
2781ba |
my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
if test ! -d "$my_tmpdir"; then
|
|
Packit Service |
2781ba |
# Failing that, at least try and use $RANDOM to avoid a race
|
|
Packit Service |
2781ba |
my_tmpdir="${my_template}-${RANDOM-0}$$"
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
save_mktempdir_umask=`umask`
|
|
Packit Service |
2781ba |
umask 0077
|
|
Packit Service |
2781ba |
$MKDIR "$my_tmpdir"
|
|
Packit Service |
2781ba |
umask $save_mktempdir_umask
|
|
Packit Service |
2781ba |
fi
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
# If we're not in dry-run mode, bomb out on failure
|
|
Packit Service |
2781ba |
test -d "$my_tmpdir" || \
|
|
Packit Service |
2781ba |
func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
|
|
Packit Service |
2781ba |
fi
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
$ECHO "X$my_tmpdir" | $Xsed
|
|
Packit Service |
2781ba |
}
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
tmp_dir="`func_mktempdir`"
|
|
Packit Service |
2781ba |
tmp_file="$tmp_dir/one"
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
cp $1 $tmp_file
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
numlines=`wc -l $tmp_file | $AWK '{print $1;}'`
|
|
Packit Service |
2781ba |
splitno=`$AWK "/<\!--$2-->/ { print NR; exit 0; }" $tmp_file`
|
|
Packit Service |
2781ba |
tailno=`expr $numlines - $splitno`
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
head -$splitno $tmp_file > $1
|
|
Packit Service |
2781ba |
cat $3 >> $1
|
|
Packit Service |
2781ba |
tail -$tailno $tmp_file >> $1
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
rm -rf $tmp_dir
|
|
Packit Service |
2781ba |
|
|
Packit Service |
2781ba |
exit $?
|