#! /bin/sh 

# dos-fn -- convert long filenames to 8.3 restriction 
# $Id: dos-fn,v 1.1 1998/07/10 17:08:16 cdua Exp cdua $
# Carlos Duarte, 980204

USAGE="\
usage: $0 [-hn] files...

  -h      this help
  -n      no op

converts normal unix filenames, to 8.3 restriction
eg: 
      dos-fn *
"

while : ; do
	case x"$1" in 
	x-h)	echo "$USAGE"; exit 1 ;;
	x-n)	cmd=cat ;;
	x--)	shift; break ;;
	x-?)	echo "invalid option -- `echo $1|cut -c2-`"
		echo "$USAGE"; exit 1 ;;
	*)	break ;;
	esac
	shift
done

# if _must_ accept on extra argument after options
if test $# -eq 0; then echo "$USAGE"; exit 1; fi

echo $* | tr ' ' \\012 | awk -F. '
BEGIN { z=0 }
{
	name = substr($1, 1, 8); 
	ext = substr($2, 1, 3); 

	file = name "." ext
	src[z] = $0
	dst[z] = file
	z++
	dup[file]++
}

END {
	for (i in dup) 
		dup[i] = (dup[i]!=1)
	for (i=0; i<z; i++) {
		n = dup[dst[i]]
		if (n == 0) {
			if (src[i] != dst[i])
				print "mv", src[i], dst[i]
			continue
		}
		split(dst[i], f, ".")
		name = substr(f[1], 1, 6-length(n ""))
		printf "mv %s %s~%d~.%s\n", src[i], name, n, f[2]
		dup[dst[i]]++
	}
}' | ${cmd-sh}

exit
