]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - tools/regression/fstest/tests/link/00.t
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / tools / regression / fstest / tests / link / 00.t
1 #!/bin/sh
2 # $FreeBSD$
3
4 desc="link creates hardlinks"
5
6 dir=`dirname $0`
7 . ${dir}/../misc.sh
8
9 echo "1..82"
10
11 n0=`namegen`
12 n1=`namegen`
13 n2=`namegen`
14 n3=`namegen`
15
16 expect 0 mkdir ${n3} 0755
17 cdir=`pwd`
18 cd ${n3}
19
20 expect 0 create ${n0} 0644
21 expect regular,0644,1 lstat ${n0} type,mode,nlink
22
23 expect 0 link ${n0} ${n1}
24 expect regular,0644,2 lstat ${n0} type,mode,nlink
25 expect regular,0644,2 lstat ${n1} type,mode,nlink
26
27 expect 0 link ${n1} ${n2}
28 expect regular,0644,3 lstat ${n0} type,mode,nlink
29 expect regular,0644,3 lstat ${n1} type,mode,nlink
30 expect regular,0644,3 lstat ${n2} type,mode,nlink
31
32 expect 0 chmod ${n1} 0201
33 expect 0 chown ${n1} 65534 65533
34
35 expect regular,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid
36 expect regular,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
37 expect regular,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
38
39 expect 0 unlink ${n0}
40 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
41 expect regular,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
42 expect regular,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
43
44 expect 0 unlink ${n2}
45 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
46 expect regular,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
47 expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
48
49 expect 0 unlink ${n1}
50 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
51 expect ENOENT lstat ${n1} type,mode,nlink,uid,gid
52 expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
53
54 expect 0 mkfifo ${n0} 0644
55 expect fifo,0644,1 lstat ${n0} type,mode,nlink
56
57 expect 0 link ${n0} ${n1}
58 expect fifo,0644,2 lstat ${n0} type,mode,nlink
59 expect fifo,0644,2 lstat ${n1} type,mode,nlink
60
61 expect 0 link ${n1} ${n2}
62 expect fifo,0644,3 lstat ${n0} type,mode,nlink
63 expect fifo,0644,3 lstat ${n1} type,mode,nlink
64 expect fifo,0644,3 lstat ${n2} type,mode,nlink
65
66 expect 0 chmod ${n1} 0201
67 expect 0 chown ${n1} 65534 65533
68
69 expect fifo,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid
70 expect fifo,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
71 expect fifo,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
72
73 expect 0 unlink ${n0}
74 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
75 expect fifo,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
76 expect fifo,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid
77
78 expect 0 unlink ${n2}
79 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
80 expect fifo,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid
81 expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
82
83 expect 0 unlink ${n1}
84 expect ENOENT lstat ${n0} type,mode,nlink,uid,gid
85 expect ENOENT lstat ${n1} type,mode,nlink,uid,gid
86 expect ENOENT lstat ${n2} type,mode,nlink,uid,gid
87
88 # successful link(2) updates ctime.
89 expect 0 create ${n0} 0644
90 ctime1=`${fstest} stat ${n0} ctime`
91 dctime1=`${fstest} stat . ctime`
92 dmtime1=`${fstest} stat . mtime`
93 sleep 1
94 expect 0 link ${n0} ${n1}
95 ctime2=`${fstest} stat ${n0} ctime`
96 test_check $ctime1 -lt $ctime2
97 dctime2=`${fstest} stat . ctime`
98 test_check $dctime1 -lt $dctime2
99 dmtime2=`${fstest} stat . mtime`
100 test_check $dctime1 -lt $dmtime2
101 expect 0 unlink ${n0}
102 expect 0 unlink ${n1}
103
104 expect 0 mkfifo ${n0} 0644
105 ctime1=`${fstest} stat ${n0} ctime`
106 dctime1=`${fstest} stat . ctime`
107 dmtime1=`${fstest} stat . mtime`
108 sleep 1
109 expect 0 link ${n0} ${n1}
110 ctime2=`${fstest} stat ${n0} ctime`
111 test_check $ctime1 -lt $ctime2
112 dctime2=`${fstest} stat . ctime`
113 test_check $dctime1 -lt $dctime2
114 dmtime2=`${fstest} stat . mtime`
115 test_check $dctime1 -lt $dmtime2
116 expect 0 unlink ${n0}
117 expect 0 unlink ${n1}
118
119 # unsuccessful link(2) does not update ctime.
120 expect 0 create ${n0} 0644
121 expect 0 -- chown ${n0} 65534 -1
122 ctime1=`${fstest} stat ${n0} ctime`
123 dctime1=`${fstest} stat . ctime`
124 dmtime1=`${fstest} stat . mtime`
125 sleep 1
126 expect EACCES -u 65534 link ${n0} ${n1}
127 ctime2=`${fstest} stat ${n0} ctime`
128 test_check $ctime1 -eq $ctime2
129 dctime2=`${fstest} stat . ctime`
130 test_check $dctime1 -eq $dctime2
131 dmtime2=`${fstest} stat . mtime`
132 test_check $dctime1 -eq $dmtime2
133 expect 0 unlink ${n0}
134
135 expect 0 mkfifo ${n0} 0644
136 expect 0 -- chown ${n0} 65534 -1
137 ctime1=`${fstest} stat ${n0} ctime`
138 dctime1=`${fstest} stat . ctime`
139 dmtime1=`${fstest} stat . mtime`
140 sleep 1
141 expect EACCES -u 65534 link ${n0} ${n1}
142 ctime2=`${fstest} stat ${n0} ctime`
143 test_check $ctime1 -eq $ctime2
144 dctime2=`${fstest} stat . ctime`
145 test_check $dctime1 -eq $dctime2
146 dmtime2=`${fstest} stat . mtime`
147 test_check $dctime1 -eq $dmtime2
148 expect 0 unlink ${n0}
149
150 cd ${cdir}
151 expect 0 rmdir ${n3}