#!/bin/bash
# $Id:$
# Copyright (c) 2005 SUSE LINUX GmbH, Germany. All rights reserved.
# GNU Public License.

ERR=/dev/null
LCM=`basename $0`
CFD=/srv/tftp/i386/pxe/pxelinux.cfg/

function help()
{	echo -e "\nusage:	$LCM <cfg-file> <mac> ..."
	echo "		-i|--init <cfg-file> <mac> ..."
	echo "		-l|--list <cfg-file>|<mac>"
	echo "		-r|--remove <mac> ..."
	echo -e "		-h|--help\n"
	echo -e "<mac> has to be a symlink\n<cfg-file> should be read-only"
	echo -e "wildcards are allowed for -l\n\ndirectory is $CFD\n"
	exit 1
}

function rmov()
{	test -L $1 -o \! -e $1 && rm -f $1 BAK-${1}-BAK* 2>$ERR
}

function move()
{	test -L $1 && mv $1 BAK-${1}-BAK 2>$ERR
}

function link()
{	ln -s $LNF $1 2>$ERR
}

function list()
{	 ls -gGd1 --time-style=long-iso $1 2>$ERR | awk '{for (i=6;i<=NF; i++) {printf "%s ",$i}; print '\n'}' 
}

function nop()
{	echo $1 >$ERR
}

if [ $# -lt 2 ]; then
	help
	exit
fi
cd $CFD || exit

case $1 in
-h|--help)
	help
	exit
;;
-i|--init)
	LNF=$2
	shift 2
	PFN=rmov
	FNL=link
;;
-l|--list)
	LNF=$2
	shift
	PFN=list
	FNL=nop
;;
-r|--remove)
	LNF=$2
	shift
	PFN=rmov
	FNL=nop
;;
*)
	LNF=$1
    	shift
	PFN=move
	FNL=link
;;
esac

for F in $*; do
	$PFN $F && $FNL $F
	logger -t $LCM "$PFN $FNL $LNF $F: $?"
	shift
done
#
