1331
|
1 #!/bin/bash
|
|
2
|
|
3 [ -f testing.sh ] && . testing.sh
|
|
4
|
|
5 # We need to test name and file padding.
|
|
6 # This means all possible values of strlen(name)+1 % 4,
|
|
7 # plus file sizes of at least 0-4.
|
|
8
|
|
9 touch a bb ccc dddd
|
|
10 testing "cpio name padding" "cpio -o -H newc|cpio -it" "a\nbb\nccc\ndddd\n" "" "a\nbb\nccc\ndddd\n"
|
|
11 rm a bb ccc dddd
|
|
12
|
|
13 touch a
|
|
14 printf '1' >b
|
|
15 printf '22' >c
|
|
16 printf '333' >d
|
|
17 testing "cpio file padding" "cpio -o -H newc|cpio -it" "a\nb\nc\nd\n" "" "a\nb\nc\nd\n"
|
|
18 rm a b c d
|
|
19
|
|
20 touch a
|
|
21 printf '1' >bb
|
|
22 printf '22' >ccc
|
|
23 printf '333' >dddd
|
|
24 # With the proper padding, header length, and file length,
|
|
25 # the relevant bit should be here:
|
|
26 # 110*5 + 4*3 + 2 + 6*3 = 550 + 12 + 20 = 582
|
|
27 # files are padded to n*4, names are padded to 2 + n*4 due to the header length
|
|
28 testing "cpio archive length" "cpio -o -H newc|dd ibs=2 skip=291 count=5" "TRAILER!!!" "" "a\nbb\nccc\ndddd\n"
|
|
29 testing "cpio archive magic" "cpio -o -H newc|dd ibs=2 count=3" "070701" "" "a\n"
|
|
30 # check name length (8 bytes before the empty "crc")
|
|
31 testing "cpio name length" "cpio -o -H newc|dd ibs=2 skip=47 count=4" "00000002" "" "a\n"
|
|
32 rm a bb ccc dddd
|
|
33
|
|
34 # archive dangling symlinks and empty files even if we cannot open them
|
|
35 touch a; chmod a-rwx a; ln -s a/cant b
|
|
36 testing "cpio archives unreadable empty files" "cpio -o -H newc|cpio -it" "a\nb\n" "" "a\nb\n"
|
|
37 chmod u+rw a; rm -f a b
|
|
38
|
|
39
|