xref: /titanic_41/usr/src/cmd/calendar/calendar.sh (revision d5ace9454616652a717c9831d949dffa319381f9)
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
33PATH=/usr/bin
34USAGE="usage: calendar [ - ]"
35
36# mktmpdir - Create a private (mode 0700) temporary directory inside of /tmp
37mktmpdir() {
38	tmpdir=/tmp/calendar.$$
39	/usr/bin/mkdir -m 700 $tmpdir || exit 1
40}
41mktmpdir
42_tmp=$tmpdir/cal$$
43
44cleanup()
45{
46	/usr/bin/rm -rf $tmpdir
47}
48
49# Trap on SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGTERM
50for i in 1 2 3 13 15
51do
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
61done
62
63# POSIX.2 and XCU4 specify that if a utility accepts an operand,
64# it also handle -- as a delimitor.
65if [ "$1" = -- ]; then
66	shift
67fi
68
69case $# in
700)	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
100esac
101cleanup
102exit 0
103