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 */ 33da124b9ea3a63ac3e42a83362a63d77fb014f1a1subrata_modak/* $Id: dup02.c,v 1.6 2009/10/13 14:00:46 subrata_modak Exp $ */ 34865695bbc89088b9526ea9045410e5afb70a985cplars/********************************************************** 354bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 36865695bbc89088b9526ea9045410e5afb70a985cplars * OS Test - Silicon Graphics, Inc. 374bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 38865695bbc89088b9526ea9045410e5afb70a985cplars * TEST IDENTIFIER : dup02 394bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 40865695bbc89088b9526ea9045410e5afb70a985cplars * EXECUTED BY : anyone 414bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 42865695bbc89088b9526ea9045410e5afb70a985cplars * TEST TITLE : Negative test for dup(2) with bad fd. 434bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 44865695bbc89088b9526ea9045410e5afb70a985cplars * PARENT DOCUMENT : usctpl01 454bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 46865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASE TOTAL : 2 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 : 06/94 574bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 58865695bbc89088b9526ea9045410e5afb70a985cplars * INITIAL RELEASE : UNICOS 7.0 594bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 60865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASES 614bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 62865695bbc89088b9526ea9045410e5afb70a985cplars * 1-?.) dup(2) returns -1 with errno set to EBADF...(See Description) 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 69865695bbc89088b9526ea9045410e5afb70a985cplars * Standard tst_res formatted output 7056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak *$ 71865695bbc89088b9526ea9045410e5afb70a985cplars * DURATION 72865695bbc89088b9526ea9045410e5afb70a985cplars * Terminates - with frequency and infinite modes. 734bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 74865695bbc89088b9526ea9045410e5afb70a985cplars * SIGNALS 75865695bbc89088b9526ea9045410e5afb70a985cplars * Uses SIGUSR1 to pause before test if option set. 76865695bbc89088b9526ea9045410e5afb70a985cplars * (See the parse_opts(3) man page). 77865695bbc89088b9526ea9045410e5afb70a985cplars * 78865695bbc89088b9526ea9045410e5afb70a985cplars * RESOURCES 79865695bbc89088b9526ea9045410e5afb70a985cplars * None 804bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 81865695bbc89088b9526ea9045410e5afb70a985cplars * ENVIRONMENTAL NEEDS 82865695bbc89088b9526ea9045410e5afb70a985cplars * No run-time environmental needs. 834bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 84865695bbc89088b9526ea9045410e5afb70a985cplars * SPECIAL PROCEDURAL REQUIREMENTS 85865695bbc89088b9526ea9045410e5afb70a985cplars * None 864bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 87865695bbc89088b9526ea9045410e5afb70a985cplars * INTERCASE DEPENDENCIES 88865695bbc89088b9526ea9045410e5afb70a985cplars * None 894bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 90865695bbc89088b9526ea9045410e5afb70a985cplars * DETAILED DESCRIPTION 914bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 92865695bbc89088b9526ea9045410e5afb70a985cplars * Setup: 93865695bbc89088b9526ea9045410e5afb70a985cplars * Setup signal handling. 94865695bbc89088b9526ea9045410e5afb70a985cplars * Pause for SIGUSR1 if option specified. 954bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 96865695bbc89088b9526ea9045410e5afb70a985cplars * Test: 97865695bbc89088b9526ea9045410e5afb70a985cplars * Loop if the proper options are given. 98865695bbc89088b9526ea9045410e5afb70a985cplars * Loop through the test cases 99865695bbc89088b9526ea9045410e5afb70a985cplars * Execute system call 100865695bbc89088b9526ea9045410e5afb70a985cplars * Check return code, if system call failed (return=-1) 101865695bbc89088b9526ea9045410e5afb70a985cplars * if doing functional check 102865695bbc89088b9526ea9045410e5afb70a985cplars * check if errno set correctly, report results 103865695bbc89088b9526ea9045410e5afb70a985cplars * Otherwise, Issue a FAIL message. 1044bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 105865695bbc89088b9526ea9045410e5afb70a985cplars * Cleanup: 106865695bbc89088b9526ea9045410e5afb70a985cplars * Print errno log and/or timing stats if options given 1074bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 1084bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 109865695bbc89088b9526ea9045410e5afb70a985cplars *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/ 110865695bbc89088b9526ea9045410e5afb70a985cplars 111865695bbc89088b9526ea9045410e5afb70a985cplars#include <sys/types.h> 112a7fa8561a5a095faf6e202a80b0c7729be8bb82dSteven Jackson#include <fcntl.h> 113865695bbc89088b9526ea9045410e5afb70a985cplars#include <errno.h> 114865695bbc89088b9526ea9045410e5afb70a985cplars#include <string.h> 115865695bbc89088b9526ea9045410e5afb70a985cplars#include <signal.h> 116865695bbc89088b9526ea9045410e5afb70a985cplars#include "test.h" 117865695bbc89088b9526ea9045410e5afb70a985cplars 118aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid setup(); 119aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid cleanup(); 120865695bbc89088b9526ea9045410e5afb70a985cplars 121fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubischar *TCID = "dup02"; 122fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubisint TST_TOTAL = 2; 123865695bbc89088b9526ea9045410e5afb70a985cplars 124865695bbc89088b9526ea9045410e5afb70a985cplarsint Fds[] = { -1, 1500 }; 125865695bbc89088b9526ea9045410e5afb70a985cplars 12656207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint main(int ac, char **av) 127865695bbc89088b9526ea9045410e5afb70a985cplars{ 12889af32a63ce8a780ea39337339e14caae244b5a4Cyril Hrubis int lc; 12956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int nfds = sizeof(Fds) / sizeof(int); 13056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int ind; 13156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 132d6d11d08678aac1ed2c370ea8e42e5f45aea07beCyril Hrubis tst_parse_opts(ac, av, NULL, NULL); 1332c28215423293e443469a07ae7011135d058b671Garrett Cooper 13456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak setup(); 135865695bbc89088b9526ea9045410e5afb70a985cplars 13656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (lc = 0; TEST_LOOPING(lc); lc++) { 13756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 138d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang tst_count = 0; 13956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 14056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (ind = 0; ind < nfds; ind++) { 14156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 14256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST(dup(Fds[ind])); 14356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 14456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (TEST_RETURN == -1) { 145e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis if (TEST_ERRNO == EBADF) 146e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis tst_resm(TPASS, 147e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis "dup failed as expected " 148e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis "with EBADF"); 149e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis else 150e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis tst_resm(TFAIL | TTERRNO, 151e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis "dup failed unexpectedly"); 15256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { 1538dca42291762e7db715a406e79dc048f696f5067Garrett Cooper tst_resm(TFAIL, "dup succeeded unexpectedly"); 1548dca42291762e7db715a406e79dc048f696f5067Garrett Cooper 1558dca42291762e7db715a406e79dc048f696f5067Garrett Cooper if (close(TEST_RETURN) == -1) 156354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_brkm(TBROK | TERRNO, cleanup, 157354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "close failed"); 15856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 15956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 1602c28215423293e443469a07ae7011135d058b671Garrett Cooper } 161865695bbc89088b9526ea9045410e5afb70a985cplars 16256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak cleanup(); 1638dca42291762e7db715a406e79dc048f696f5067Garrett Cooper tst_exit(); 1642c28215423293e443469a07ae7011135d058b671Garrett Cooper} 165865695bbc89088b9526ea9045410e5afb70a985cplars 166c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid setup(void) 167865695bbc89088b9526ea9045410e5afb70a985cplars{ 1682c28215423293e443469a07ae7011135d058b671Garrett Cooper 16956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_sig(FORK, DEF_HANDLER, cleanup); 170865695bbc89088b9526ea9045410e5afb70a985cplars 17156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_PAUSE; 172865695bbc89088b9526ea9045410e5afb70a985cplars 17356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_tmpdir(); 174865695bbc89088b9526ea9045410e5afb70a985cplars 1752c28215423293e443469a07ae7011135d058b671Garrett Cooper} 176865695bbc89088b9526ea9045410e5afb70a985cplars 177c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid cleanup(void) 178865695bbc89088b9526ea9045410e5afb70a985cplars{ 17956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_rmdir(); 180ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 181