1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-15 18:20:42 +02:00

Rewrite to support "-o OUTFILE INFILE [CPP-OPTS]" usage.

This commit is contained in:
Thien-Thi Nguyen 2002-05-03 09:50:36 +00:00
parent 00093a3ba8
commit 39d2cd9d72

View file

@ -1,20 +1,51 @@
#!/bin/sh
# Extract the initialization actions for builtin things.
#
# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA
fullfilename=$1; shift
# Commentary:
# Usage: guile-doc-snarf -o OUTFILE INFILE [CPP-OPTIONS ...]
#
# Process INFILE using the C pre-processor and some other programs.
# Write output to a file named OUTFILE. If there are errors during
# processing, delete OUTFILE and exit with non-zero status.
#
# During snarfing, the pre-processor macro SCM_MAGIC_SNARFER is
# defined.
#
# If env var CPP is set, use its value instead of the C pre-processor
# determined at Guile configure-time: "@CPP@". Likewise for AWK (default
# "@AWK@").
# Code:
if [ ! x"$1" = x-o -o x"$3" = x ] ; then
me=`basename $0`
echo ${me}: ERROR: missing required args
echo "Usage: $me -o OUTFILE INFILE [CPP-OPTIONS ...]"
exit 1
fi
outfile=$2 ; fullfilename=$3 ; shift ; shift ; shift
# strip path to source directory
filename=`basename $fullfilename`
# we need to be sure that the .x file exists
# since the .c/.cc file may include it
# (the old guile-snarf did not have this problem
# because the makefile redirects output to the .x file
# which creates the file before the inclusion occurs)
# --12/12/99 gjb
no_ext=`echo $filename | sed 's/\.[^.]*$//g'`
dot_doc=${no_ext}.doc
temp="/tmp/snarf.$$"
trap "rm -f $temp" 0 1 2 15
@ -27,6 +58,9 @@ ${AWK} -f guile-func-name-check "$fullfilename"
## We must use a temporary file here, instead of a pipe, because we
## need to know if CPP exits with a non-zero status.
${CPP} -DSCM_MAGIC_SNARFER "$@" > ${temp} || exit $?
rm -f $outfile
${CPP} -DSCM_MAGIC_SNARFER "$fullfilename" "$@" > ${temp} || exit $?
cat ${temp} | sed 's/^\(.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}\).*/\1/g' | \
${AWK} -f `dirname $0`/guile-snarf.awk `basename ${dot_doc}`
${AWK} -f `dirname $0`/guile-snarf.awk $outfile > /dev/null
# guile-doc-snarf ends here