uuto revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!/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