1 #!/usr/bin/sh 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License, Version 1.0 only 7 # (the "License"). You may not use this file except in compliance 8 # with the License. 9 # 10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11 # or http://www.opensolaris.org/os/licensing. 12 # See the License for the specific language governing permissions 13 # and limitations under the License. 14 # 15 # When distributing Covered Code, include this CDDL HEADER in each 16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17 # If applicable, add the following below this CDDL HEADER, with the 18 # fields enclosed by brackets "[]" replaced with your own identifying 19 # information: Portions Copyright [yyyy] [name of copyright owner] 20 # 21 # CDDL HEADER END 22 # 23 # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T 24 # All Rights Reserved 25 26 27 # Copyright (c) 1999 by Sun Microsystems, Inc. 28 # All rights reserved. 29 30 #ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.8 */ 31 # calendar.sh - calendar command, uses /usr/lib/calprog 32 33 PATH=/usr/bin 34 USAGE="usage: calendar [ - ]" 35 36 # mktmpdir - Create a private (mode 0700) temporary directory inside of /tmp 37 mktmpdir() { 38 tmpdir=/tmp/calendar.$$ 39 /usr/bin/mkdir -m 700 $tmpdir || exit 1 40 } 41 mktmpdir 42 _tmp=$tmpdir/cal$$ 43 44 cleanup() 45 { 46 /usr/bin/rm -rf $tmpdir 47 } 48 49 # Trap on SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGTERM 50 for i in 1 2 3 13 15 51 do 52 # Ignore trap if already set by the shell. NOTE: If /bin/sh 53 # is made XCU4 compliant, updates will also be required to this 54 # if statement because of XCU4 changes to the trap built-in. 55 TRAP_IGNORE=`trap | egrep -c "^$i:\$"` 56 if [ "$TRAP_IGNORE" != "1" ] 57 then 58 # Cleanup; reset default value; send signal to process. 59 trap "cleanup; trap $i; kill -$i $$" $i 60 fi 61 done 62 63 # POSIX.2 and XCU4 specify that if a utility accepts an operand, 64 # it also handle -- as a delimitor. 65 if [ "$1" = -- ]; then 66 shift 67 fi 68 69 case $# in 70 0) if [ -f calendar ]; then 71 /usr/lib/calprog > ${_tmp} 72 egrep -f ${_tmp} calendar 73 else 74 echo >&2 $0: `pwd`/calendar not found 75 exit 1 76 fi;; 77 *) case $* in 78 -) if (rpcinfo -p | fgrep -s ypbind); then 79 caldata="ypcat passwd.byname | grep /`uname -n`/" 80 else 81 caldata="cat /dev/null" 82 fi 83 /usr/lib/calprog > ${_tmp} 84 eval $caldata | cat /etc/passwd - | \ 85 sed 's/\([^:]*\):.*:\(.*\):[^:]*$/_dir=\2 _user=\1/' | \ 86 while read _token; do 87 eval ${_token} # evaluates _dir= and _user= 88 if [ -s ${_dir}/calendar ]; then 89 egrep -f ${_tmp} ${_dir}/calendar 2>/dev/null \ 90 > $tmpdir/calendar.$$ 91 if [ -s $tmpdir/calendar.$$ ]; then 92 mail ${_user} < $tmpdir/calendar.$$ 93 fi 94 fi 95 done;; 96 *) echo >&2 $0: illegal option -- $@ 97 echo >&2 $USAGE 98 exit 1 99 esac 100 esac 101 cleanup 102 exit 0 103