xref: /freebsd/contrib/libarchive/cpio/test/test_option_0.c (revision bd66c1b43e33540205dbc1187c2f2a15c58b57ba)
16c95142eSMartin Matuska /*-
2*bd66c1b4SMartin Matuska  * SPDX-License-Identifier: BSD-2-Clause
3*bd66c1b4SMartin Matuska  *
46c95142eSMartin Matuska  * Copyright (c) 2003-2010 Tim Kientzle
56c95142eSMartin Matuska  * All rights reserved.
66c95142eSMartin Matuska  */
76c95142eSMartin Matuska #include "test.h"
86c95142eSMartin Matuska 
DEFINE_TEST(test_option_0)96c95142eSMartin Matuska DEFINE_TEST(test_option_0)
106c95142eSMartin Matuska {
116c95142eSMartin Matuska 	FILE *filelist;
126c95142eSMartin Matuska 	int r;
136c95142eSMartin Matuska 
146c95142eSMartin Matuska 	assertUmask(0);
156c95142eSMartin Matuska 
166c95142eSMartin Matuska 	/* Create a few files. */
176c95142eSMartin Matuska 	assertMakeFile("file1", 0644, "1234567890");
186c95142eSMartin Matuska 	assertMakeFile("file2", 0644, "1234567890");
196c95142eSMartin Matuska 	assertMakeFile("file3", 0644, "1234567890");
206c95142eSMartin Matuska 	assertMakeFile("file4", 0644, "1234567890");
216c95142eSMartin Matuska 
226c95142eSMartin Matuska 	/* Create a file list of filenames with varying end-of-line. */
236c95142eSMartin Matuska 	filelist = fopen("filelist", "wb");
246c95142eSMartin Matuska 	assertEqualInt(fwrite("file1\x0a", 1, 6, filelist), 6);
256c95142eSMartin Matuska 	assertEqualInt(fwrite("file2\x0d", 1, 6, filelist), 6);
266c95142eSMartin Matuska 	assertEqualInt(fwrite("file3\x0a\x0d", 1, 7, filelist), 7);
276c95142eSMartin Matuska 	assertEqualInt(fwrite("file4", 1, 5, filelist), 5);
286c95142eSMartin Matuska 	fclose(filelist);
296c95142eSMartin Matuska 
306c95142eSMartin Matuska 	/* Create a file list of null-delimited names. */
316c95142eSMartin Matuska 	filelist = fopen("filelistNull", "wb");
326c95142eSMartin Matuska 	assertEqualInt(fwrite("file1\0", 1, 6, filelist), 6);
336c95142eSMartin Matuska 	assertEqualInt(fwrite("file2\0", 1, 6, filelist), 6);
346c95142eSMartin Matuska 	assertEqualInt(fwrite("file3\0", 1, 6, filelist), 6);
356c95142eSMartin Matuska 	assertEqualInt(fwrite("file4", 1, 5, filelist), 5);
366c95142eSMartin Matuska 	fclose(filelist);
376c95142eSMartin Matuska 
386c95142eSMartin Matuska 	assertUmask(022);
396c95142eSMartin Matuska 
406c95142eSMartin Matuska 	/* Pack up using the file list with text line endings. */
416c95142eSMartin Matuska 	r = systemf("%s -o < filelist > archive 2> stderr1.txt", testprog);
426c95142eSMartin Matuska 	assertEqualInt(r, 0);
436c95142eSMartin Matuska 
446c95142eSMartin Matuska 	/* Extract into a new dir. */
456c95142eSMartin Matuska 	assertMakeDir("copy", 0775);
466c95142eSMartin Matuska 	assertChdir("copy");
476c95142eSMartin Matuska 	r = systemf("%s -i < ../archive > stdout3.txt 2> stderr3.txt", testprog);
486c95142eSMartin Matuska 	assertEqualInt(r, 0);
496c95142eSMartin Matuska 
506c95142eSMartin Matuska 	/* Verify the files. */
516c95142eSMartin Matuska 	assertIsReg("file1", 0644);
526c95142eSMartin Matuska 	assertIsReg("file2", 0644);
536c95142eSMartin Matuska 	assertIsReg("file3", 0644);
546c95142eSMartin Matuska 	assertIsReg("file4", 0644);
556c95142eSMartin Matuska 
566c95142eSMartin Matuska 	assertChdir("..");
576c95142eSMartin Matuska 
586c95142eSMartin Matuska 	/* Pack up using the file list with nulls. */
596c95142eSMartin Matuska 	r = systemf("%s -o0 < filelistNull > archiveNull 2> stderr2.txt", testprog);
606c95142eSMartin Matuska 	assertEqualInt(r, 0);
616c95142eSMartin Matuska 
626c95142eSMartin Matuska 	/* Extract into a new dir. */
636c95142eSMartin Matuska 	assertMakeDir("copyNull", 0775);
646c95142eSMartin Matuska 	assertChdir("copyNull");
656c95142eSMartin Matuska 	r = systemf("%s -i < ../archiveNull > stdout4.txt 2> stderr4.txt", testprog);
666c95142eSMartin Matuska 	assertEqualInt(r, 0);
676c95142eSMartin Matuska 
686c95142eSMartin Matuska 	/* Verify the files. */
696c95142eSMartin Matuska 	assertIsReg("file1", 0644);
706c95142eSMartin Matuska 	assertIsReg("file2", 0644);
716c95142eSMartin Matuska 	assertIsReg("file3", 0644);
726c95142eSMartin Matuska 	assertIsReg("file4", 0644);
736c95142eSMartin Matuska }
74