xref: /openbsd/regress/sys/ffs/tests/rename/08.t (revision d415bd75)
1#!/bin/sh
2# $FreeBSD: src/tools/regression/fstest/tests/rename/08.t,v 1.1 2007/01/17 01:42:10 pjd Exp $
3
4desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set"
5
6n0=`namegen`
7n1=`namegen`
8n2=`namegen`
9
10expect 0 mkdir ${n0} 0755
11
12expect 0 create ${n1} 0644
13for flag in SF_IMMUTABLE UF_IMMUTABLE; do
14	expect 0 chflags ${n0} ${flag}
15	expect ${flag} stat ${n0} flags
16	expect EPERM rename ${n1} ${n0}/${n2}
17done
18expect 0 chflags ${n0} none
19expect 0 unlink ${n1}
20
21expect 0 mkdir ${n1} 0755
22for flag in SF_IMMUTABLE UF_IMMUTABLE; do
23	expect 0 chflags ${n0} ${flag}
24	expect ${flag} stat ${n0} flags
25	expect EPERM rename ${n1} ${n0}/${n2}
26done
27expect 0 chflags ${n0} none
28expect 0 rmdir ${n1}
29
30expect 0 mkfifo ${n1} 0644
31for flag in SF_IMMUTABLE UF_IMMUTABLE; do
32	expect 0 chflags ${n0} ${flag}
33	expect ${flag} stat ${n0} flags
34	expect EPERM rename ${n1} ${n0}/${n2}
35done
36expect 0 chflags ${n0} none
37expect 0 unlink ${n1}
38
39expect 0 symlink ${n2} ${n1}
40for flag in SF_IMMUTABLE UF_IMMUTABLE; do
41	expect 0 chflags ${n0} ${flag}
42	expect ${flag} stat ${n0} flags
43	expect EPERM rename ${n1} ${n0}/${n2}
44done
45expect 0 chflags ${n0} none
46expect 0 unlink ${n1}
47
48expect 0 create ${n1} 0644
49for flag in SF_APPEND UF_APPEND; do
50	expect 0 chflags ${n0} ${flag}
51	expect ${flag} stat ${n0} flags
52	expect 0 rename ${n1} ${n0}/${n2}
53	expect 0 chflags ${n0} none
54	expect 0 rename ${n0}/${n2} ${n1}
55done
56expect 0 unlink ${n1}
57
58expect 0 mkdir ${n1} 0755
59for flag in SF_APPEND UF_APPEND; do
60	expect 0 chflags ${n0} ${flag}
61	expect ${flag} stat ${n0} flags
62	expect 0 rename ${n1} ${n0}/${n2}
63	expect 0 chflags ${n0} none
64	expect 0 rename ${n0}/${n2} ${n1}
65done
66expect 0 rmdir ${n1}
67
68expect 0 mkfifo ${n1} 0644
69for flag in SF_APPEND UF_APPEND; do
70	expect 0 chflags ${n0} ${flag}
71	expect ${flag} stat ${n0} flags
72	expect 0 rename ${n1} ${n0}/${n2}
73	expect 0 chflags ${n0} none
74	expect 0 rename ${n0}/${n2} ${n1}
75done
76expect 0 unlink ${n1}
77
78expect 0 symlink ${n2} ${n1}
79for flag in SF_APPEND UF_APPEND; do
80	expect 0 chflags ${n0} ${flag}
81	expect ${flag} stat ${n0} flags
82	expect 0 rename ${n1} ${n0}/${n2}
83	expect 0 chflags ${n0} none
84	expect 0 rename ${n0}/${n2} ${n1}
85done
86expect 0 unlink ${n1}
87
88expect 0 rmdir ${n0}
89