Isaac Dunham | 670626a | 2014-06-01 13:50:39 -0500 | [diff] [blame] | 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 | |