1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License (the "License").
6# You may not use this file except in compliance with the License.
7#
8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9# or http://www.opensolaris.org/os/licensing.
10# See the License for the specific language governing permissions
11# and limitations under the License.
12#
13# When distributing Covered Code, include this CDDL HEADER in each
14# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15# If applicable, add the following below this CDDL HEADER, with the
16# fields enclosed by brackets "[]" replaced with your own identifying
17# information: Portions Copyright [yyyy] [name of copyright owner]
18#
19# CDDL HEADER END
20#
21
22#
23# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25#
26#ident	"%Z%%M%	%I%	%E% SMI"
27
28script()
29{
30	$dtrace -wq -o $tmpfile -s /dev/stdin $tmpfile <<EOF
31	BEGIN
32	{
33		i = 0;
34	}
35
36	tick-10ms
37	{
38		freopen("%s.%d", \$\$1, i);
39		printf("%d\n", i)
40	}
41
42	tick-10ms
43	/++i == $iter/
44	{
45		freopen("");
46		printf("%d\n", i);
47		exit(0);
48	}
49EOF
50}
51
52cleanup()
53{
54	let i=0
55
56	if [ -f $tmpfile ]; then
57		rm $tmpfile
58	fi
59
60	while [ "$i" -lt "$iter" ]; do
61		if [ -f $tmpfile.$i ]; then
62			rm $tmpfile.$i
63		fi
64		let i=i+1
65	done
66}
67
68if [ $# != 1 ]; then
69	echo expected one argument: '<'dtrace-path'>'
70	exit 2
71fi
72
73dtrace=$1
74tmpfile=/tmp/tst.freopen.$$
75iter=20
76
77script
78status=$?
79
80let i=0
81
82if [ -f $tmpfile.$iter ]; then
83	echo "$0: did not expect to find file: $tmpfile.$iter"
84	cleanup
85	exit 100
86fi
87
88mv $tmpfile $tmpfile.$iter
89let iter=iter+1
90
91while [ "$i" -lt "$iter" ]; do
92	if [ ! -f $tmpfile.$i ]; then
93		echo "$0: did not find expected file: $tmpfile.$i"
94		cleanup
95		exit 101
96	fi
97
98	j=`cat $tmpfile.$i`
99
100	if [ "$i" -ne "$j" ]; then
101		echo "$0: unexpected contents in $tmpfile.$i: " \
102		    "expected $i, found $j"
103		cleanup
104		exit 102
105	fi
106
107	rm $tmpfile.$i
108	let i=i+1
109done
110
111exit $status
112