isdn4linux/capi2kern

250 lines
4.5 KiB
Bash
Executable File

#!/bin/sh
KERNELDIR=/usr/src/Linux-Kernel/v2.2.18-pre9
KERNELDIR=/usr/src/Linux-Kernel/v2.2.17-pre5
KERNELDIR=/usr/src/Linux-Kernel/v2.2.15
KERNELDIR=/usr/src/linux
DOCP=docpd
PREPARSER="./preparser"
UNIQUE=false
VERBOSE=false
NOTEST=true
docpd() {
if ! cmp -s $1 $2 ; then
if $NOTEST ; then
echo Copying $1 ...
mkdir -p `dirname $2`
cp $1 $2
else
echo $1 was changed
fi
else
if $VERBOSE ; then
echo $2 is up to date, NOT converted
fi
fi
}
docp() {
if [ $1 -nt $2 -o ! -f $2 ] ; then
if $NOTEST ; then
echo Copying $1 ...
mkdir -p `dirname $2`
cp $1 $2
else
echo $1 was changed
fi
else
if $VERBOSE ; then
echo $2 is up to date, NOT converted
fi
fi
}
docpuni() {
if $VERBOSE ; then
echo -n "Processing $1 ... "
fi
TMPNAME=/tmp/`basename $1`.$$
$PREPARSER -c $CTRLNAME $1 $TMPNAME
RES=$?
if [ "$RES" -eq "0" ] ; then
if ! cmp -s $1 $2 ; then
if $NOTEST ; then
if $VERBOSE ; then
echo copying original
else
echo "Processing $1 ... copying original"
fi
mkdir -p `dirname $2`
cp $1 $2
else
if $VERBOSE ; then
echo original was changed
else
echo "Processing $1 ... original was changed"
fi
fi
else
if $VERBOSE ; then
echo original file is up to date
fi
fi
rm $TMPNAME
return 0
fi
if [ "$RES" -eq "2" ] ; then
if ! cmp -s $TMPNAME $2 ; then
if $NOTEST ; then
if $VERBOSE ; then
echo copying modified
else
echo "Processing $1 ... copying modified"
fi
mkdir -p `dirname $2`
cp $TMPNAME $2
else
if $VERBOSE ; then
echo modified was changed
else
echo "Processing $1 ... modified was changed"
fi
fi
else
if $VERBOSE ; then
echo modified file is up to date
fi
fi
rm $TMPNAME
return 0
fi
echo
echo "problem with $PREPARSER retcode $RES"
exit 1
}
#
# Print usage and exit
#
usage() {
cat<<EOM
std2kern is used for updating your kernel-tree from within
this directory.
std2kern [-d] [-h] [-k DIR] [-v] [-u] [-c FILE] [files ...]
Options:
-h This Text.
-d Copy depends on modification date instead of file-compare.
-k DIR Kerneltree is in DIR instead of /usr/src/linux
-v More mesages about processing
-u Make a diff for a unique kernel-tree
(preprocessing with $PREPARSER)
-c FILE Use FILE as control file for $PREPARSER (only with -u)
-t Test, don't really copy files
Without any files given, within the whole tree, the "right"
files are copied. When any files are given in the commandline,
only those are copied.
EOM
exit
}
#
# Check, if argument is a linux kernel dir
#
checkkernel() {
if [ -f $1/Makefile ] ; then
if [ "`grep ^vmlinux: $1/Makefile | grep vmlinux`" != "" ] ; then
return 0
fi
fi
echo "The given argument does not look like a kernel dir"
exit 1
}
#
# Determine a control file name
#
calc_ctrl_file() {
eval `sed -n 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' $KERNELDIR/Makefile`
echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL"
if [ -z "$CTRLNAME" ] ; then
CTRLNAME=v$VERSION.$PATCHLEVEL.$SUBLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=v$VERSION.$PATCHLEVEL.ctrl
if [ -f $CTRLNAME ] ; then
return 0
fi
CTRLNAME=default.ctrl
fi
if [ -f $CTRLNAME ] ; then
return 0
fi
echo "No control file found"
exit 1
}
while getopts :dhk:uc:vt a ; do
case $a in
\?) case $OPTARG in
k) echo "-k requires Kernel directory parameter"
;;
*) echo "Unknown option: -$OPTARG"
echo "Try std2kern -h"
;;
esac
exit 1
;;
k) checkkernel $OPTARG
KERNELDIR=$OPTARG
;;
c) CTRLNAME=$OPTARG
;;
u) UNIQUE=true
;;
v) VERBOSE=true
;;
t) NOTEST=false
;;
d) DOCP=docp
;;
h) usage
;;
esac
done
shift `expr $OPTIND - 1`
if $UNIQUE ; then
DOCP=docpuni
calc_ctrl_file
fi
echo -n "Using $DOCP"
if $UNIQUE ; then
echo " with controlfile $CTRLNAME"
else
echo
fi
if [ $# != 0 ]; then
for i in $* ; do
$DOCP $i $KERNELDIR/$i
done
else
for i in drivers/isdn/avmb1/*.[ch] ; do
$DOCP $i $KERNELDIR/$i
done
for i in \
include/linux/kernelcapi.h \
include/linux/capi.h \
include/linux/b1lli.h \
include/linux/b1pcmcia.h \
; do
$DOCP $i $KERNELDIR/$i
done
for i in drivers/isdn/avmb1/Makefile; do
if [ -f $i.kernel ] ; then
if $UNIQUE ; then
docpd $i.kernel $KERNELDIR/$i
else
$DOCP $i.kernel $KERNELDIR/$i
fi
else
if $UNIQUE ; then
docpd $i $KERNELDIR/$i
else
$DOCP $i $KERNELDIR/$i
fi
fi
done
fi