pkgsrc/pkgtools/libnbcompat/files/src2nbcompat
jlam d80f435723 Update pkgtools/libnbcompat to 20040805. Changes from version 20040512
include:

  (1) Add a statvfs() implementation based on statfs(), and remove the
      statfs() NetBSD-compatibility implementation.  statvfs() is used
      in src/usr.sbin/pkg_install on the HEAD branch.

  (2) Add a fnmatch() implementation, needed by IRIX.  fnmatch() is used
      in src/usr.sbin/pkg_install on the HEAD branch.

  (3) Remove fseeko(), inet_ntop(), inet_pton(), sl_*() strptime(), and
      timegm() as they're not used by any of the bootstrap packages that
      require libnbcompat (pax, mtree, pkg_install).  All that's left is
      what's necessary to bootstrap those three packages.
2004-08-06 16:55:06 +00:00

149 lines
4.4 KiB
Bash
Executable file

#!/bin/sh
#
# $NetBSD: src2nbcompat,v 1.5 2004/08/06 16:55:09 jlam Exp $
#
# Copyright (c) 2003 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Johnny C. Lam.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the NetBSD
# Foundation, Inc. and its contributors.
# 4. Neither the name of The NetBSD Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
if [ $# -ne 2 ]; then echo "src2nbcompat src dest"; exit 1; fi
src=$1
dest=$2
case "$src" in
/*) ;;
*) src=`pwd`/$src ;;
esac
case "$dest" in
/*) ;;
*) dest=`pwd`/$dest ;;
esac
echo "Preparing directory $dest"
mkdir -p $dest
echo "Copying files and directories to $dest"
cd $src
dirs=`find . -type d -print`
for d in $dirs; do
newd=`echo $d | sed 's,^\./,,'`
case $newd in
*CVS)
;;
.)
;;
*)
mkdir -p $dest/$newd
;;
esac
done
files=`find . \! -type d -print`
for f in $files; do
newf=`echo $f | sed 's,^\./,,'`
case $newf in
*CVS/*)
# Skip copying over any CVS information.
;;
*Makefile|*Makefile.inc)
# Skip copying over the Makefiles since we'll be using
# a GNU autoconf-based build infrastructure.
;;
*.sh)
# Assume shell scripts will require variable substitution
# by the GNU configure script.
#
cp $newf $dest/$newf.in
;;
*.[ch])
# Add "#include <nbcompat.h>" before the first system
# header inclusion. Protect all system headers with
# "#if HAVE_FOO_H ... #endif" guards.
#
awk ' \
BEGIN { config = 0; nbcompat = 0 } \
/^#[ ]*include[ ]+/ { \
if (config == 0) { \
print "#if HAVE_CONFIG_H"; \
print "#include \"config.h\""; \
print "#endif"; \
config = 1; \
} \
} \
/^#[ ]*include[ ]+<[^ ]*>/ { \
guard = toupper(gensub("[-/.]", "_", "g", gensub("#[ ]*include[ ]+<([^ ]*)>", "HAVE_\\1", "g"))); \
if (nbcompat == 0) { \
print "#include <nbcompat.h>"; \
nbcompat = 1; \
}; \
print "#if " guard; \
print $0; \
print "#endif"; \
next; \
} \
{ print } \
' $newf > $dest/$newf.tmp
if [ -f $dest/$newf ] && \
diff -q -I "\$NetBSD.*\$" $dest/$newf $dest/$newf.tmp >/dev/null; then
rm -f $dest/$newf.tmp
else
rm -f $dest/$newf
mv $dest/$newf.tmp $dest/$newf
fi
;;
*.[1-9])
# Copy the manpage over, and generate the catpage.
cp $newf $dest/$newf.tmp
if [ -f $dest/$newf ] && \
diff -q -I "\$NetBSD.*\$" $dest/$newf $dest/$newf.tmp >/dev/null; then
rm -f $dest/$newf.tmp
else
mv -f $dest/$newf.tmp $dest/$newf
catf=`echo $newf | sed 's,\.\([1-9]\),.cat\1,'`
nroff -mandoc $newf > $dest/$catf
fi
;;
*)
# Everything else just gets copied verbatim.
cp $newf $dest/$newf.tmp
if [ -f $dest/$newf ] && \
diff -q -I "\$NetBSD.*\$" $dest/$newf $dest/$newf.tmp >/dev/null; then
rm -f $dest/$newf.tmp
else
mv -f $dest/$newf.tmp $dest/$newf
fi
;;
esac
done