#!/bin/sh -

# push - push files into a subdirectory
# Steve Kinzler, steve@kinzler.com, Nov 93
# https://kinzler.com/me/home.html#unix

# Creates a directory and moves files into it.  The directory name may be
# the same as one of the files.

bad=

while :
do
	case $# in
	0)	break;;
	*)	case "$1" in
		--)	shift; break;;
		-h)	bad=t; break;;
		-*)	bad=t; echo "$0: unknown option ($1)" 1>&2;;
		*)	break;;
		esac
		shift;;
	esac
done

case "$#,$bad" in
0,*|*,?*)	echo "usage: $0 [ file ... ] dirname" 1>&2; exit 1;;
1,)		exec mkdir "$1";;
esac

flag=
for arg
do
	case "$flag" in
	'')	set x; shift; flag=t;;
	*)	set x ${1+"$@"} "$dir"; shift;;
	esac
	dir="$arg"
done

tmp=`echo "$dir" | sed "s:[^/]*$:PUSH$$:"`

trap 'echo "$0: aborting $dir push, left as PUSH$$" 1>&2; exit 3' 1 2 13 15

mkdir "$tmp" || exit $?

mv "$@" "$tmp"
status=$?

if test -f "$dir" -o -d "$dir"
then
	echo "$0: cannot create $dir, already exists, left as PUSH$$" 1>&2
	exit 2
else
	mv "$tmp" "$dir"
fi

case "$?" in
0)	exit $status;;
*)	exit $?;;
esac
