1 #!nfsh
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 (the "License").
7 # You may not use this file except in compliance with the License.
8 #
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
13 #
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
19 #
20 # CDDL HEADER END
21 #
22
23 #
24 # Copyright 2006 Sun Microsystems, Inc. All rights reserved.
25 # Use is subject to license terms.
26 #
27
28 #
29 # Evaluate a path and print the
30 # filehandle for each component.
31 #
32 # Given the args "server a/b/c" it prints
33 #
34 # C25A82BC: a
35 # E6D341F6: b
36 # 6249B195: c
37 #
38
39
40 if { $argc != 2 } {
41 puts "Usage: $argv0 <hostname> <pathname>"
42 exit
43 }
44
45 set host [ lindex $argv 0 ]
46 set path [ path2comp [lindex $argv 1] "/" ]
47
48 #connect -t udp -p 9999 $host
49 connect $host
50
51
52 # Generate a compound request that
53 # contains a lookup for each component.
54
55 set result [compound {
56 Putrootfh
57 # the following only works if first component is shared
58 foreach component $path {
59 Lookup $component
60 Getfh
61 }
62 }]
63
64 if {$status != "OK"} {
65 puts "ERROR, compound{} return status=$status"
66 exit
67 }
68
69
70 # For each pathname component extract
71 # its filehandle from the result.
72 # After the initial putrootfh, the
73 # result is an alternation of lookup
74 # and getfh results, hence the increment
75 # by 2.
76
77 set inx 2
78 foreach component $path {
79 set fh [lindex [lindex $result $inx ] 2]
80 puts "$fh: $component"
81 incr inx 2
82 }