4 desc
="link creates hardlinks"
16 expect
0 mkdir
${n3} 0755
20 expect
0 create
${n0} 0644
21 expect regular
,0644,1 lstat
${n0} type,mode
,nlink
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
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
32 expect
0 chmod ${n1} 0201
33 expect
0 chown
${n1} 65534 65533
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
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
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
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
54 expect
0 mkfifo ${n0} 0644
55 expect fifo
,0644,1 lstat
${n0} type,mode
,nlink
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
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
66 expect
0 chmod ${n1} 0201
67 expect
0 chown
${n1} 65534 65533
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
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
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
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
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`
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}
104 expect
0 mkfifo ${n0} 0644
105 ctime1
=`${fstest} stat ${n0} ctime`
106 dctime1
=`${fstest} stat . ctime`
107 dmtime1
=`${fstest} stat . mtime`
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}
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`
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}
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`
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}