#! /bin/sh
#
#	$NetBSD: sendmail2netbsd,v 1.5 2003/06/01 13:59:56 atatat Exp $
#
# Copyright (c) 1998, 1999 The NetBSD Foundation, Inc.
# All rights reserved.
#
# 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.
#
# sendmail2netbsd: removes Id tag and couple of other items, for importing
# sendmail tree into netbsd.
# works on current directory.

netbsdtag=$(echo @NetBSD@ | tr @ $)

c_tag() {
    tf=$1
    cat -<<EOF $tf > $tf.2.$$ &&
/* $netbsdtag */
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$netbsdtag");
#endif

EOF
	mv $tf.2.$$ $tf
    if [ $? != 0 ]; then
	echo "$f: retag error" 1>&2
	exit 1
    fi
    echo "c style $netbsdtag added"
}

h_tag() {
    tf=$1
    cat -<<EOF $tf > $tf.2.$$ &&
/* $netbsdtag */
EOF
	mv $tf.2.$$ $tf
    if [ $? != 0 ]; then
	echo "$f: retag error" 1>&2
	exit 1
    fi
    echo "h style $netbsdtag added"
}

retag() {
    f=$1
    doidtag='s/\$\(Id[^\$]*\) \$/\1/'
    tagging=false

    # skip some files entirely
    case "$f" in
	*/sendmail/helpfile|*.jpg|*.ps|"")
	    echo "$f: skipping retag"
	    return 0
	    ;;
	*.[ch]|*.cf)
	    # we'll get these later (well...not the .cf files) 
	    ;;
	*)
	    # add netbsd tag now
	    tagging=true
	    doidtag="h;${doidtag}p;g;"'s/\$\(Id[^\$]*\) \$/'$netbsdtag/
	    ;;
    esac

    # now remove tags and maybe add ours
    echo -n "$f: removing tags, "
    sed -e 's/\$\(RCSfile[^\$]*\) \$/\1/' \
	-e 's/\$\(Date[^\$]*\) \$/\1/' \
	-e 's/\$\(Revision[^\$]*\) \$/\1/' \
	-e "$doidtag" \
	< $f > $f.1.$$ &&
	mv $f.1.$$ $f
    if [ $? != 0 ]; then
	echo "$f: retag error"
	exit 1
    fi

    if $tagging && fgrep -qs $netbsdtag $f; then
	echo "generic $netbsdtag added"
    else
	# now add *our* tag
	case "$f" in
	    *.c)
		c_tag $f
		;;
	    *.h)
		h_tag $f
		;;
	    *)
		echo "no $netbsdtag added"
		;;
	esac
    fi
}

### remove *.ps
(cd doc/op; make clean)

### Remove $'s around RCSfile, Id, Date, Revision, and maybe add a NetBSD tag
find . -name CVS -type d -prune -o -type f -print | \
    grep -v sendmail2netbsd | \
    while read f; do
	retag $f
    done
if [ $? != 0 ]; then
    exit $?
fi

echo "please edit sendmail/helpfile by hand."
exit 0
