OpenSolaris_b135/cmd/bnu/uuto

#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 1995 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident	"%Z%%M%	%I%	%E% SMI"
#
uuto () {
f=""
d=""
error="0"
#	get file names
#	files must be readable,
#	directories must be readable/searchable
#	otherwise increment error count and skip it.
while test $#  -ge 1
do
	if test -d "$1" -a {"$1" = "." -o "$1" = ".."}
		then shift; continue
	elif test -r "$1" -a -f "$1"
		then f="$f $1"
	elif test -r "$1" -a -x "$1" -a -d "$1"
		then d="$d $1"
	else error=`expr 0$error + 1`
		if test -f "$1"; then
			printf "`gettext 'uuto: %s%s: file not readable'`\n" $UUP $1 >&2
		elif test -d "$1"; then
			printf "`gettext 'uuto: %s%s: directory not readable/searchable'`\n" $UUP $1 >&2
		else
			printf "`gettext 'uuto: %s%s: file/directory not found'`\n" $UUP $1 >&2
		fi
	fi
	shift
done
if test -n "$d" -a -n "$user"
then
	for i in $d
	do
		( cd $i; UUP="$UUP$i/"
		uuto * $1)
		error=`expr 0$error + 0$?`
	done
fi

if test -n "$f" -a -n "$user"
then
	uucp $a $f $remote!~/receive/$user/$mysys/$UUP
	error=`expr 0$error + 0$?`
fi

return $error
}

# main uuto shell

export IFS PATH
IFS=" 	
"
PATH="/usr/bin"

a=""
temp=""
mysys=`uuname -l`
mesg="Usage: uuto [-mp] files remote!user\n"

trap "trap '' 0; exit $?" 1 2 3 13 15
copy=0
#	get options
while getopts mp FLAG; do
	case $FLAG in
	m)	a="$a -m"
		;;
	p)	a="$a -C"
		copy=1 ;;
	?)	gettext "$mesg" >&2
		exit 1
		;;
	esac
done
shift `expr $OPTIND - 1`

#	be sure have both files and destination
if test $# -lt 2
then
	gettext "$mesg" >&2
	exit 1
fi
#	skip file names to get to destination
while test $#  -gt 1
do
	temp="$temp $1"
	shift
done
#	the recipient arg: remote!user
#	remote may be omitted (default is this machine)
#	must have at least !user
remote=`expr $1 : '\(.*\)!'`
user=`expr $1 : '.*!\(.*\)'`
if test -z "$user"
then
	gettext "uuto: incomplete destination -- must specify user\n" >&2
	gettext "$mesg" >&2
	exit 1
fi
a="$a -d -n $user"

UUP=""
uuto $temp

exit $error