1865695bbc89088b9526ea9045410e5afb70a985cplars/* 2865695bbc89088b9526ea9045410e5afb70a985cplars * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. 3865695bbc89088b9526ea9045410e5afb70a985cplars * 4865695bbc89088b9526ea9045410e5afb70a985cplars * This program is free software; you can redistribute it and/or modify it 5865695bbc89088b9526ea9045410e5afb70a985cplars * under the terms of version 2 of the GNU General Public License as 6865695bbc89088b9526ea9045410e5afb70a985cplars * published by the Free Software Foundation. 7865695bbc89088b9526ea9045410e5afb70a985cplars * 8865695bbc89088b9526ea9045410e5afb70a985cplars * This program is distributed in the hope that it would be useful, but 9865695bbc89088b9526ea9045410e5afb70a985cplars * WITHOUT ANY WARRANTY; without even the implied warranty of 10865695bbc89088b9526ea9045410e5afb70a985cplars * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11865695bbc89088b9526ea9045410e5afb70a985cplars * 12865695bbc89088b9526ea9045410e5afb70a985cplars * Further, this software is distributed without any warranty that it is 13865695bbc89088b9526ea9045410e5afb70a985cplars * free of the rightful claim of any third person regarding infringement 14865695bbc89088b9526ea9045410e5afb70a985cplars * or the like. Any license provided herein, whether implied or 15865695bbc89088b9526ea9045410e5afb70a985cplars * otherwise, applies only to this software file. Patent licenses, if 16865695bbc89088b9526ea9045410e5afb70a985cplars * any, provided herein do not apply to combinations of this program with 17865695bbc89088b9526ea9045410e5afb70a985cplars * other software, or any other product whatsoever. 18865695bbc89088b9526ea9045410e5afb70a985cplars * 19865695bbc89088b9526ea9045410e5afb70a985cplars * You should have received a copy of the GNU General Public License along 20fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * with this program; if not, write the Free Software Foundation, Inc., 21fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22865695bbc89088b9526ea9045410e5afb70a985cplars * 23865695bbc89088b9526ea9045410e5afb70a985cplars * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 24865695bbc89088b9526ea9045410e5afb70a985cplars * Mountain View, CA 94043, or: 25865695bbc89088b9526ea9045410e5afb70a985cplars * 26865695bbc89088b9526ea9045410e5afb70a985cplars * http://www.sgi.com 27865695bbc89088b9526ea9045410e5afb70a985cplars * 28865695bbc89088b9526ea9045410e5afb70a985cplars * For further information regarding this notice, see: 29865695bbc89088b9526ea9045410e5afb70a985cplars * 30865695bbc89088b9526ea9045410e5afb70a985cplars * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ 31865695bbc89088b9526ea9045410e5afb70a985cplars * 32865695bbc89088b9526ea9045410e5afb70a985cplars */ 33923b23ff1fd1b77bd895949f9a6b4508c6485f33subrata_modak/* $Id: unlink08.c,v 1.5 2009/11/02 13:57:19 subrata_modak Exp $ */ 34865695bbc89088b9526ea9045410e5afb70a985cplars/********************************************************** 354bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 36865695bbc89088b9526ea9045410e5afb70a985cplars * OS Test - Silicon Graphics, Inc. 374bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 38865695bbc89088b9526ea9045410e5afb70a985cplars * TEST IDENTIFIER : unlink08 394bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 40865695bbc89088b9526ea9045410e5afb70a985cplars * EXECUTED BY : anyone 414bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 42865695bbc89088b9526ea9045410e5afb70a985cplars * TEST TITLE : unlink(2) negative testcases 434bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 44865695bbc89088b9526ea9045410e5afb70a985cplars * PARENT DOCUMENT : usctpl01 454bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 46865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASE TOTAL : 3 474bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 48865695bbc89088b9526ea9045410e5afb70a985cplars * WALL CLOCK TIME : 1 494bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 50865695bbc89088b9526ea9045410e5afb70a985cplars * CPU TYPES : ALL 514bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 52865695bbc89088b9526ea9045410e5afb70a985cplars * AUTHOR : Richard Logan 534bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 54865695bbc89088b9526ea9045410e5afb70a985cplars * CO-PILOT : William Roske 554bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 56865695bbc89088b9526ea9045410e5afb70a985cplars * DATE STARTED : 03/30/94 574bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 58865695bbc89088b9526ea9045410e5afb70a985cplars * INITIAL RELEASE : UNICOS 7.0 594bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 60865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASES 614bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 62865695bbc89088b9526ea9045410e5afb70a985cplars * 1-3) See Testcases structure below. 63bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak * 64865695bbc89088b9526ea9045410e5afb70a985cplars * INPUT SPECIFICATIONS 65865695bbc89088b9526ea9045410e5afb70a985cplars * The standard options for system call tests are accepted. 66865695bbc89088b9526ea9045410e5afb70a985cplars * (See the parse_opts(3) man page). 674bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 68865695bbc89088b9526ea9045410e5afb70a985cplars * OUTPUT SPECIFICATIONS 6956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak *$ 70865695bbc89088b9526ea9045410e5afb70a985cplars * DURATION 71865695bbc89088b9526ea9045410e5afb70a985cplars * Terminates - with frequency and infinite modes. 724bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 73865695bbc89088b9526ea9045410e5afb70a985cplars * SIGNALS 74865695bbc89088b9526ea9045410e5afb70a985cplars * Uses SIGUSR1 to pause before test if option set. 75865695bbc89088b9526ea9045410e5afb70a985cplars * (See the parse_opts(3) man page). 76865695bbc89088b9526ea9045410e5afb70a985cplars * 77865695bbc89088b9526ea9045410e5afb70a985cplars * RESOURCES 78865695bbc89088b9526ea9045410e5afb70a985cplars * None 794bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 80865695bbc89088b9526ea9045410e5afb70a985cplars * ENVIRONMENTAL NEEDS 81865695bbc89088b9526ea9045410e5afb70a985cplars * No run-time environmental needs. 824bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 83865695bbc89088b9526ea9045410e5afb70a985cplars * SPECIAL PROCEDURAL REQUIREMENTS 84865695bbc89088b9526ea9045410e5afb70a985cplars * None 854bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 86865695bbc89088b9526ea9045410e5afb70a985cplars * INTERCASE DEPENDENCIES 87865695bbc89088b9526ea9045410e5afb70a985cplars * None 884bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 89865695bbc89088b9526ea9045410e5afb70a985cplars * DETAILED DESCRIPTION 90865695bbc89088b9526ea9045410e5afb70a985cplars * This is a Phase I test for the unlink(2) system call. It is intended 91865695bbc89088b9526ea9045410e5afb70a985cplars * to provide a limited exposure of the system call, for now. It 92865695bbc89088b9526ea9045410e5afb70a985cplars * should/will be extended when full functional tests are written for 93865695bbc89088b9526ea9045410e5afb70a985cplars * unlink(2). 944bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 95865695bbc89088b9526ea9045410e5afb70a985cplars * Setup: 96865695bbc89088b9526ea9045410e5afb70a985cplars * Setup signal handling. 97865695bbc89088b9526ea9045410e5afb70a985cplars * Pause for SIGUSR1 if option specified. 984bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 99865695bbc89088b9526ea9045410e5afb70a985cplars * Test: 100865695bbc89088b9526ea9045410e5afb70a985cplars * Loop if the proper options are given. 101865695bbc89088b9526ea9045410e5afb70a985cplars * Execute system call 102865695bbc89088b9526ea9045410e5afb70a985cplars * Check return code, if system call failed (return=-1) 103865695bbc89088b9526ea9045410e5afb70a985cplars * Log the errno and Issue a FAIL message. 104865695bbc89088b9526ea9045410e5afb70a985cplars * Otherwise, Issue a PASS message. 1054bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 106865695bbc89088b9526ea9045410e5afb70a985cplars * Cleanup: 107865695bbc89088b9526ea9045410e5afb70a985cplars * Print errno log and/or timing stats if options given 1084bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 1094bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 110865695bbc89088b9526ea9045410e5afb70a985cplars *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/ 111865695bbc89088b9526ea9045410e5afb70a985cplars 112865695bbc89088b9526ea9045410e5afb70a985cplars#include <sys/types.h> 113a7fa8561a5a095faf6e202a80b0c7729be8bb82dSteven Jackson#include <fcntl.h> 114865695bbc89088b9526ea9045410e5afb70a985cplars#include <sys/stat.h> 115865695bbc89088b9526ea9045410e5afb70a985cplars#include <errno.h> 116865695bbc89088b9526ea9045410e5afb70a985cplars#include <signal.h> 117865695bbc89088b9526ea9045410e5afb70a985cplars#include <unistd.h> 118865695bbc89088b9526ea9045410e5afb70a985cplars#include <string.h> 119865695bbc89088b9526ea9045410e5afb70a985cplars#include "test.h" 120865695bbc89088b9526ea9045410e5afb70a985cplars 121c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid setup(void); 122c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid cleanup(void); 123865695bbc89088b9526ea9045410e5afb70a985cplars 124fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubischar *TCID = "unlink08"; 125fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubisint TST_TOTAL = 3; 126865695bbc89088b9526ea9045410e5afb70a985cplars 127c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint unwrite_dir_setup(int flag); 128c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint unsearch_dir_setup(int flag); 129c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint dir_setup(int flag); 130c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint no_setup(int flag); 131865695bbc89088b9526ea9045410e5afb70a985cplars 132865695bbc89088b9526ea9045410e5afb70a985cplarsstruct test_case_t { 13356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak char *pathname; 13456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak char *desc; 135c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysinger int (*setupfunc) (int flag); 13656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int exp_ret; /* -1 means error, 0 means != -1 */ 13756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int exp_errno; 138865695bbc89088b9526ea9045410e5afb70a985cplars} Test_cases[] = { 13956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak { 14056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "unwrite_dir/file", "unwritable directory", unwrite_dir_setup, 14156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak -1, EACCES}, { 14256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "unsearch_dir/file", "unsearchable directory", 14356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak unsearch_dir_setup, -1, EACCES}, 144865695bbc89088b9526ea9045410e5afb70a985cplars#ifdef linux 14556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak { 14656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "regdir", "directory", dir_setup, -1, EISDIR}, 147865695bbc89088b9526ea9045410e5afb70a985cplars#else 14856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak { 14956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "regdir", "directory", dir_setup, -1, EPERM}, 150865695bbc89088b9526ea9045410e5afb70a985cplars#endif 15156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak { 15256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak NULL, NULL, no_setup, -1, 0} 153865695bbc89088b9526ea9045410e5afb70a985cplars}; 154865695bbc89088b9526ea9045410e5afb70a985cplars 155865695bbc89088b9526ea9045410e5afb70a985cplars/*********************************************************************** 156865695bbc89088b9526ea9045410e5afb70a985cplars * Main 157865695bbc89088b9526ea9045410e5afb70a985cplars ***********************************************************************/ 15856207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint main(int ac, char **av) 159865695bbc89088b9526ea9045410e5afb70a985cplars{ 16089af32a63ce8a780ea39337339e14caae244b5a4Cyril Hrubis int lc; 16156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak char *fname; 16256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak char *desc; 16356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int ind; 16456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 165865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 166865695bbc89088b9526ea9045410e5afb70a985cplars * parse standard options 167865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 168d6d11d08678aac1ed2c370ea8e42e5f45aea07beCyril Hrubis tst_parse_opts(ac, av, NULL, NULL); 169865695bbc89088b9526ea9045410e5afb70a985cplars 170865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 171865695bbc89088b9526ea9045410e5afb70a985cplars * perform global setup for test 172865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 17356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak setup(); 174865695bbc89088b9526ea9045410e5afb70a985cplars 175865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 176865695bbc89088b9526ea9045410e5afb70a985cplars * check looping state if -c option given 177865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 17856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (lc = 0; TEST_LOOPING(lc); lc++) { 17956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 180d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang tst_count = 0; 18156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 18256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (ind = 0; Test_cases[ind].desc != NULL; ind++) { 18356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 18456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak fname = Test_cases[ind].pathname; 18556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak desc = Test_cases[ind].desc; 18656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 18756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* 18856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Call unlink(2) 18956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak */ 19056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST(unlink(fname)); 19156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 19256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* check return code */ 19356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (TEST_RETURN == -1) { 19456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (Test_cases[ind].exp_ret == -1) { /* neg test */ 195e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis if (TEST_ERRNO == 196e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis Test_cases[ind].exp_errno) 197e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis tst_resm(TPASS, 198e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis "unlink(<%s>) Failed, errno=%d", 199e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis desc, 200e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis TEST_ERRNO); 201e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis else 202e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis tst_resm(TFAIL, 203e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis "unlink(<%s>) Failed, errno=%d, expected errno:%d", 204e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis desc, 205e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis TEST_ERRNO, 206e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis Test_cases 207e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis [ind].exp_errno); 20856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { 20956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_resm(TFAIL, 21056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "unlink(<%s>) Failed, errno=%d", 21156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak desc, TEST_ERRNO); 21256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 21356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { 21456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (Test_cases[ind].exp_ret == -1) { 21556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_resm(TFAIL, 216923b23ff1fd1b77bd895949f9a6b4508c6485f33subrata_modak "unlink(<%s>) returned %ld, expected -1, errno:%d", 21756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak desc, TEST_RETURN, 21856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak Test_cases[ind].exp_errno); 219e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis } else { 22056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_resm(TPASS, 221923b23ff1fd1b77bd895949f9a6b4508c6485f33subrata_modak "unlink(<%s>) returned %ld", 22256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak desc, TEST_RETURN); 223e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis } 22456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak Test_cases[ind].setupfunc(1); 22556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 226865695bbc89088b9526ea9045410e5afb70a985cplars } 227bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 2282c28215423293e443469a07ae7011135d058b671Garrett Cooper } 229865695bbc89088b9526ea9045410e5afb70a985cplars 23056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak cleanup(); 2312c28215423293e443469a07ae7011135d058b671Garrett Cooper tst_exit(); 2322c28215423293e443469a07ae7011135d058b671Garrett Cooper} 233865695bbc89088b9526ea9045410e5afb70a985cplars 234865695bbc89088b9526ea9045410e5afb70a985cplars/*************************************************************** 235865695bbc89088b9526ea9045410e5afb70a985cplars * setup() - performs all ONE TIME setup for this test. 236865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 237c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid setup(void) 238865695bbc89088b9526ea9045410e5afb70a985cplars{ 23956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int ind; 24056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int postest = 0; 241865695bbc89088b9526ea9045410e5afb70a985cplars 24256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_sig(NOFORK, DEF_HANDLER, cleanup); 243865695bbc89088b9526ea9045410e5afb70a985cplars 24456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_PAUSE; 245865695bbc89088b9526ea9045410e5afb70a985cplars 24656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_tmpdir(); 247865695bbc89088b9526ea9045410e5afb70a985cplars 24856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (geteuid() == 0) { 24956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak postest++; 25056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 251865695bbc89088b9526ea9045410e5afb70a985cplars 25256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (ind = 0; Test_cases[ind].desc != NULL; ind++) { 25356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (Test_cases[ind].exp_errno == EACCES && postest) 25456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak Test_cases[ind].exp_ret = 0; /* set as a pos test */ 25556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak Test_cases[ind].setupfunc(0); 25656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 257865695bbc89088b9526ea9045410e5afb70a985cplars 2582c28215423293e443469a07ae7011135d058b671Garrett Cooper} 259865695bbc89088b9526ea9045410e5afb70a985cplars 260865695bbc89088b9526ea9045410e5afb70a985cplars/*************************************************************** 261865695bbc89088b9526ea9045410e5afb70a985cplars * cleanup() - performs all ONE TIME cleanup for this test at 262865695bbc89088b9526ea9045410e5afb70a985cplars * completion or premature exit. 263865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 264c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid cleanup(void) 265865695bbc89088b9526ea9045410e5afb70a985cplars{ 26656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak chmod("unwrite_dir", 0777); 26756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak chmod("unsearch_dir", 0777); 268865695bbc89088b9526ea9045410e5afb70a985cplars 26956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_rmdir(); 270865695bbc89088b9526ea9045410e5afb70a985cplars 2712c28215423293e443469a07ae7011135d058b671Garrett Cooper} 272865695bbc89088b9526ea9045410e5afb70a985cplars 273865695bbc89088b9526ea9045410e5afb70a985cplars/****************************************************************** 274865695bbc89088b9526ea9045410e5afb70a985cplars * 275865695bbc89088b9526ea9045410e5afb70a985cplars ******************************************************************/ 276c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint unwrite_dir_setup(int flag) 277865695bbc89088b9526ea9045410e5afb70a985cplars{ 27856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int fd; 27956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 28056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (!flag) { /* initial setup */ 28156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (mkdir("unwrite_dir", 0777) == -1) { 28256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 28356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "mkdir(unwrite_dir, 0777) failed, errno:%d %s", 28456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 28556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 28656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 28756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if ((fd = creat("unwrite_dir/file", 0777)) == -1) { 28856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 28956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "creat(unwrite_dir/file, 0777) failed, errno:%d %s", 29056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 29156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 29256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak close(fd); 29356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 29456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unwrite_dir", 0555) == -1) { 29556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 29656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unwrite_dir, 0555) failed, errno:%d %s", 29756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 29856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 29956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { /* resetup */ 30056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unwrite_dir", 0777) == -1) { 30156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 30256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unwrite_dir, 0777) failed, errno:%d %s", 30356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 30456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 30556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 30656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if ((fd = creat("unwrite_dir/file", 0777)) == -1) { 30756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 30856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "creat(unwrite_dir/file, 0777) failed, errno:%d %s", 30956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 31056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 31156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak close(fd); 31256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 31356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unwrite_dir", 0555) == -1) { 31456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 31556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unwrite_dir, 0555) failed, errno:%d %s", 31656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 31756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 31856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 31956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak return 0; 320865695bbc89088b9526ea9045410e5afb70a985cplars} 321865695bbc89088b9526ea9045410e5afb70a985cplars 322865695bbc89088b9526ea9045410e5afb70a985cplars/****************************************************************** 323865695bbc89088b9526ea9045410e5afb70a985cplars * 324865695bbc89088b9526ea9045410e5afb70a985cplars ******************************************************************/ 325c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint unsearch_dir_setup(int flag) 326865695bbc89088b9526ea9045410e5afb70a985cplars{ 32756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int fd; 32856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 32956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (!flag) { /* initial setup */ 33056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (mkdir("unsearch_dir", 0777) == -1) { 33156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 33256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "mkdir(unsearch_dir, 0777) failed, errno:%d %s", 33356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 33456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 33556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 33656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if ((fd = creat("unsearch_dir/file", 0777)) == -1) { 33756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 33856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "creat(unsearch_dir/file, 0777) failed, errno:%d %s", 33956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 34056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 34156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak close(fd); 34256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 34356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unsearch_dir", 0666) == -1) { 34456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 34556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unsearch_dir, 0666) failed, errno:%d %s", 34656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 34756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 34856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { /* resetup */ 34956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unsearch_dir", 0777) == -1) { 35056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 35156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unsearch_dir, 0777) failed, errno:%d %s", 35256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 35356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 35456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 35556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if ((fd = creat("unsearch_dir/file", 0777)) == -1) { 35656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 35756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "creat(unsearch_dir/file, 0777) failed, errno:%d %s", 35856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 35956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 36056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak close(fd); 36156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 36256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (chmod("unsearch_dir", 0666) == -1) { 36356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 36456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "chmod(unsearch_dir, 0666) failed, errno:%d %s", 36556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 36656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 36756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 36856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak return 0; 369865695bbc89088b9526ea9045410e5afb70a985cplars} 370865695bbc89088b9526ea9045410e5afb70a985cplars 371865695bbc89088b9526ea9045410e5afb70a985cplars/****************************************************************** 372865695bbc89088b9526ea9045410e5afb70a985cplars * 373865695bbc89088b9526ea9045410e5afb70a985cplars ******************************************************************/ 374c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint dir_setup(int flag) 375865695bbc89088b9526ea9045410e5afb70a985cplars{ 37656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (mkdir("regdir", 0777) == -1) { 37756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, 37856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "mkdir(unwrite_dir, 0777) failed, errno:%d %s", 37956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak errno, strerror(errno)); 38056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 38156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak return 0; 382865695bbc89088b9526ea9045410e5afb70a985cplars} 383865695bbc89088b9526ea9045410e5afb70a985cplars 384865695bbc89088b9526ea9045410e5afb70a985cplars/****************************************************************** 385865695bbc89088b9526ea9045410e5afb70a985cplars * 386865695bbc89088b9526ea9045410e5afb70a985cplars ******************************************************************/ 387c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingerint no_setup(int flag) 388865695bbc89088b9526ea9045410e5afb70a985cplars{ 389865695bbc89088b9526ea9045410e5afb70a985cplars return 0; 390ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 391