#!/bin/sh # # $NetBSD: src2nbcompat,v 1.4 2003/12/08 13:39:11 grant 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. ;; *.[ch]) # Add "#include " 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 = 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