ptem01.c revision 354ebb48db8e66a853a58379a4808d5dcd1ceac3
1b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
2b87390939c55e574c5b4c66a341d80df3863762frobbiew *
3b87390939c55e574c5b4c66a341d80df3863762frobbiew *   Copyright (c) International Business Machines  Corp., 2002
4b87390939c55e574c5b4c66a341d80df3863762frobbiew *
5b87390939c55e574c5b4c66a341d80df3863762frobbiew *   This program is free software;  you can redistribute it and/or modify
6b87390939c55e574c5b4c66a341d80df3863762frobbiew *   it under the terms of the GNU General Public License as published by
7b87390939c55e574c5b4c66a341d80df3863762frobbiew *   the Free Software Foundation; either version 2 of the License, or
8b87390939c55e574c5b4c66a341d80df3863762frobbiew *   (at your option) any later version.
9b87390939c55e574c5b4c66a341d80df3863762frobbiew *
10b87390939c55e574c5b4c66a341d80df3863762frobbiew *   This program is distributed in the hope that it will be useful,
11b87390939c55e574c5b4c66a341d80df3863762frobbiew *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
12b87390939c55e574c5b4c66a341d80df3863762frobbiew *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
13b87390939c55e574c5b4c66a341d80df3863762frobbiew *   the GNU General Public License for more details.
14b87390939c55e574c5b4c66a341d80df3863762frobbiew *
15b87390939c55e574c5b4c66a341d80df3863762frobbiew *   You should have received a copy of the GNU General Public License
16b87390939c55e574c5b4c66a341d80df3863762frobbiew *   along with this program;  if not, write to the Free Software
174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18b87390939c55e574c5b4c66a341d80df3863762frobbiew */
19b87390939c55e574c5b4c66a341d80df3863762frobbiew
20b87390939c55e574c5b4c66a341d80df3863762frobbiew/* 12/23/2002   Port to LTP     robbiew@us.ibm.com */
21b87390939c55e574c5b4c66a341d80df3863762frobbiew/* 06/30/2001   Port to Linux   nsharoff@us.ibm.com */
22b87390939c55e574c5b4c66a341d80df3863762frobbiew
23b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <errno.h>
24b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <stdio.h>
25b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <stdlib.h>
26b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <stdio.h>
27b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <termio.h>
28b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <sys/fcntl.h>
29b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <sys/stat.h>
30b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <sys/poll.h>
31b87390939c55e574c5b4c66a341d80df3863762frobbiew#include <sys/types.h>
32b87390939c55e574c5b4c66a341d80df3863762frobbiew
33b87390939c55e574c5b4c66a341d80df3863762frobbiew#ifndef _GNU_SOURCE
34b87390939c55e574c5b4c66a341d80df3863762frobbiew#define _GNU_SOURCE 1
35b87390939c55e574c5b4c66a341d80df3863762frobbiew#endif
36b87390939c55e574c5b4c66a341d80df3863762frobbiew
37b87390939c55e574c5b4c66a341d80df3863762frobbiew/** LTP Port **/
38b87390939c55e574c5b4c66a341d80df3863762frobbiew#include "test.h"
39b87390939c55e574c5b4c66a341d80df3863762frobbiew#include "usctest.h"
40b87390939c55e574c5b4c66a341d80df3863762frobbiew
41354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaochar *TCID = "ptem01";		/* Test program identifier.    */
42354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint TST_TOTAL = 6;		/* Total number of test cases. */
43b87390939c55e574c5b4c66a341d80df3863762frobbiew/**************/
44b87390939c55e574c5b4c66a341d80df3863762frobbiew
45b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
46b87390939c55e574c5b4c66a341d80df3863762frobbiew * pty master clone device
47b87390939c55e574c5b4c66a341d80df3863762frobbiew */
48b87390939c55e574c5b4c66a341d80df3863762frobbiew#define MASTERCLONE "/dev/ptmx"
49b87390939c55e574c5b4c66a341d80df3863762frobbiew
50b87390939c55e574c5b4c66a341d80df3863762frobbiew#define BUFSZ 4096
51b87390939c55e574c5b4c66a341d80df3863762frobbiew
52b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
53b87390939c55e574c5b4c66a341d80df3863762frobbiew * test termio/termios ioctls
54b87390939c55e574c5b4c66a341d80df3863762frobbiew */
55354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test1(void)
56b87390939c55e574c5b4c66a341d80df3863762frobbiew{
57b87390939c55e574c5b4c66a341d80df3863762frobbiew	int masterfd, slavefd;
58b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
59b87390939c55e574c5b4c66a341d80df3863762frobbiew	struct termio termio;
60b87390939c55e574c5b4c66a341d80df3863762frobbiew	struct termios termios;
61b87390939c55e574c5b4c66a341d80df3863762frobbiew
62b87390939c55e574c5b4c66a341d80df3863762frobbiew	masterfd = open(MASTERCLONE, O_RDWR);
63b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (masterfd < 0) {
64354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "%s", MASTERCLONE);
65b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
66b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
67bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
68b87390939c55e574c5b4c66a341d80df3863762frobbiew	slavename = ptsname(masterfd);
690c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper	if (slavename == NULL) {
70354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "ptsname() call failed");
71b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
72b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
73b87390939c55e574c5b4c66a341d80df3863762frobbiew
74b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (grantpt(masterfd) != 0) {
75354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "grantpt() call failed");
76b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
77b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
78b87390939c55e574c5b4c66a341d80df3863762frobbiew
79b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (unlockpt(masterfd) != 0) {
80354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "unlockpt() call failed");
81b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
82b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
83b87390939c55e574c5b4c66a341d80df3863762frobbiew
84b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd = open(slavename, O_RDWR)) < 0) {
85354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "Could not open %s", slavename);
86b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
87b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
88b87390939c55e574c5b4c66a341d80df3863762frobbiew
89b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCGETS, &termios) != 0) {
90354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCGETS");
91b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
92b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
93b87390939c55e574c5b4c66a341d80df3863762frobbiew
94b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETS, &termios) != 0) {
95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETS");
96b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
97b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
98b87390939c55e574c5b4c66a341d80df3863762frobbiew
99b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETSW, &termios) != 0) {
100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETSW");
101b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
102b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
103b87390939c55e574c5b4c66a341d80df3863762frobbiew
104b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETSF, &termios) != 0) {
105354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETSF");
106b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
107b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
108b87390939c55e574c5b4c66a341d80df3863762frobbiew
109b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETS, &termios) != 0) {
110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETS");
111b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
112b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
113b87390939c55e574c5b4c66a341d80df3863762frobbiew
114b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCGETA, &termio) != 0) {
115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCGETA");
116b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
117b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
118b87390939c55e574c5b4c66a341d80df3863762frobbiew
119b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETA, &termio) != 0) {
120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETA");
121b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
122b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
123b87390939c55e574c5b4c66a341d80df3863762frobbiew
124b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETAW, &termio) != 0) {
125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETAW");
126b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
127b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
128b87390939c55e574c5b4c66a341d80df3863762frobbiew
129b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETAF, &termio) != 0) {
130354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCSETAF");
131b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
132b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
133b87390939c55e574c5b4c66a341d80df3863762frobbiew
134b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd) != 0) {
135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close slave");
136b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
137b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
138b87390939c55e574c5b4c66a341d80df3863762frobbiew
139b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(masterfd) != 0) {
140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close master");
141b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
142b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
143354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test1");
144b87390939c55e574c5b4c66a341d80df3863762frobbiew
145b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
146bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	return 0;
147b87390939c55e574c5b4c66a341d80df3863762frobbiew}
148b87390939c55e574c5b4c66a341d80df3863762frobbiew
149b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
150b87390939c55e574c5b4c66a341d80df3863762frobbiew * test window size setting and getting
151b87390939c55e574c5b4c66a341d80df3863762frobbiew */
152354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test2(void)
153b87390939c55e574c5b4c66a341d80df3863762frobbiew{
154b87390939c55e574c5b4c66a341d80df3863762frobbiew	int masterfd, slavefd;
155b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
156b87390939c55e574c5b4c66a341d80df3863762frobbiew	struct winsize wsz;
157354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	struct winsize wsz1 = { 24, 80, 5, 10 };
158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	struct winsize wsz2 = { 60, 100, 11, 777 };
159b87390939c55e574c5b4c66a341d80df3863762frobbiew
160b87390939c55e574c5b4c66a341d80df3863762frobbiew	masterfd = open(MASTERCLONE, O_RDWR);
161b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (masterfd < 0) {
162354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "%s", MASTERCLONE);
163b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
164b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
165bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
166b87390939c55e574c5b4c66a341d80df3863762frobbiew	slavename = ptsname(masterfd);
1670c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper	if (slavename == NULL) {
168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "ptsname() call failed");
169b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
170b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
171b87390939c55e574c5b4c66a341d80df3863762frobbiew
172b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (grantpt(masterfd) != 0) {
173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "grantpt() call failed");
174b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
175b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
176b87390939c55e574c5b4c66a341d80df3863762frobbiew
177b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (unlockpt(masterfd) != 0) {
178354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "unlockpt() call failed");
179b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
180b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
181b87390939c55e574c5b4c66a341d80df3863762frobbiew
182b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd = open(slavename, O_RDWR)) < 0) {
183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "Could not open %s", slavename);
184b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
185b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
186b87390939c55e574c5b4c66a341d80df3863762frobbiew
187b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(masterfd, TIOCSWINSZ, &wsz1) != 0) {
188354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TIOCSWINSZ");
189b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
190b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
191b87390939c55e574c5b4c66a341d80df3863762frobbiew
192b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TIOCGWINSZ, &wsz) != 0) {
193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TIOCGWINSZ");
194b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
195b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
196b87390939c55e574c5b4c66a341d80df3863762frobbiew
197b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (wsz.ws_row != wsz1.ws_row || wsz.ws_col != wsz1.ws_col ||
198b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_xpixel != wsz1.ws_xpixel ||
199b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_ypixel != wsz1.ws_ypixel) {
200b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_resm(TFAIL, "unexpected window size returned");
201b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
202b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
203b87390939c55e574c5b4c66a341d80df3863762frobbiew
204b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(masterfd, TIOCGWINSZ, &wsz) != 0) {
205354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TIOCGWINSZ");
206b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
207b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
208b87390939c55e574c5b4c66a341d80df3863762frobbiew
209b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (wsz.ws_row != wsz1.ws_row || wsz.ws_col != wsz1.ws_col ||
210b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_xpixel != wsz1.ws_xpixel ||
211b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_ypixel != wsz1.ws_ypixel) {
212cff4af016805c764c391c473d4c95b999dcdf148vapier		tst_resm(TFAIL, "unexpected window size returned");
213b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
214b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
215b87390939c55e574c5b4c66a341d80df3863762frobbiew
216b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TIOCSWINSZ, &wsz2) != 0) {
217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TIOCSWINSZ");
218b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
219b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
220b87390939c55e574c5b4c66a341d80df3863762frobbiew
221b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TIOCGWINSZ, &wsz) != 0) {
222354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TIOCGWINSZ");
223b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
224b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
225b87390939c55e574c5b4c66a341d80df3863762frobbiew
226b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (wsz.ws_row != wsz2.ws_row || wsz.ws_col != wsz2.ws_col ||
227b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_xpixel != wsz2.ws_xpixel ||
228b87390939c55e574c5b4c66a341d80df3863762frobbiew	    wsz.ws_ypixel != wsz2.ws_ypixel) {
229cff4af016805c764c391c473d4c95b999dcdf148vapier		tst_resm(TFAIL, "unexpected window size returned");
230b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
231b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
232b87390939c55e574c5b4c66a341d80df3863762frobbiew
233b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd) != 0) {
234354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close");
235b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
236b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
237b87390939c55e574c5b4c66a341d80df3863762frobbiew
238b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(masterfd) != 0) {
239354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close");
240b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
241b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
242354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test2");
243b87390939c55e574c5b4c66a341d80df3863762frobbiew
244b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
245bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	return 0;
246b87390939c55e574c5b4c66a341d80df3863762frobbiew}
247b87390939c55e574c5b4c66a341d80df3863762frobbiew
248b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
249b87390939c55e574c5b4c66a341d80df3863762frobbiew * test sending a break
250b87390939c55e574c5b4c66a341d80df3863762frobbiew */
251354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test3(void)
252b87390939c55e574c5b4c66a341d80df3863762frobbiew{
253b87390939c55e574c5b4c66a341d80df3863762frobbiew	int masterfd, slavefd;
254b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
255b87390939c55e574c5b4c66a341d80df3863762frobbiew
256b87390939c55e574c5b4c66a341d80df3863762frobbiew	masterfd = open(MASTERCLONE, O_RDWR);
257b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (masterfd < 0) {
258354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "%s", MASTERCLONE);
259b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
260b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
261bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
262b87390939c55e574c5b4c66a341d80df3863762frobbiew	slavename = ptsname(masterfd);
2630c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper	if (slavename == NULL) {
264354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "ptsname() call failed");
265b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
266b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
267b87390939c55e574c5b4c66a341d80df3863762frobbiew
268b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (grantpt(masterfd) != 0) {
269354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "grantpt() call failed");
270b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
271b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
272b87390939c55e574c5b4c66a341d80df3863762frobbiew
273b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (unlockpt(masterfd) != 0) {
274354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "unlockpt() call failed");
275b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
276b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
277b87390939c55e574c5b4c66a341d80df3863762frobbiew
278b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd = open(slavename, O_RDWR)) < 0) {
279354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "Could not open %s", slavename);
280b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
281b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
282b87390939c55e574c5b4c66a341d80df3863762frobbiew
283b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (tcsendbreak(masterfd, 10) != 0) {
284354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "tcsendbreak");
285b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
286b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
287b87390939c55e574c5b4c66a341d80df3863762frobbiew
288b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (tcsendbreak(slavefd, 10) != 0) {
289354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "tcsendbreak");
290b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
291b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
292b87390939c55e574c5b4c66a341d80df3863762frobbiew
293b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd) != 0) {
294354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close slave");
295b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
296b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
297b87390939c55e574c5b4c66a341d80df3863762frobbiew
298b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(masterfd) != 0) {
299354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close master");
300b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
301b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
302354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test3");
303b87390939c55e574c5b4c66a341d80df3863762frobbiew
304b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
305bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak	return 0;
306b87390939c55e574c5b4c66a341d80df3863762frobbiew}
307b87390939c55e574c5b4c66a341d80df3863762frobbiew
308b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
309b87390939c55e574c5b4c66a341d80df3863762frobbiew * test multiple opens of slave side
310b87390939c55e574c5b4c66a341d80df3863762frobbiew */
311354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test4(void)
312b87390939c55e574c5b4c66a341d80df3863762frobbiew{
313b87390939c55e574c5b4c66a341d80df3863762frobbiew	int masterfd, slavefd, slavefd2, slavefd3;
314b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
315b87390939c55e574c5b4c66a341d80df3863762frobbiew
316b87390939c55e574c5b4c66a341d80df3863762frobbiew	masterfd = open(MASTERCLONE, O_RDWR);
317b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (masterfd < 0) {
318354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "%s", MASTERCLONE);
319b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
320b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
321b87390939c55e574c5b4c66a341d80df3863762frobbiew
322b87390939c55e574c5b4c66a341d80df3863762frobbiew	slavename = ptsname(masterfd);
3230c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper	if (slavename == NULL) {
324354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "ptsname() call failed");
325b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
326b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
327b87390939c55e574c5b4c66a341d80df3863762frobbiew
328b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (grantpt(masterfd) != 0) {
329354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "grantpt() call failed");
330b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
331b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
332b87390939c55e574c5b4c66a341d80df3863762frobbiew
333b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (unlockpt(masterfd) != 0) {
334354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "unlockpt() call failed");
335b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
336b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
337b87390939c55e574c5b4c66a341d80df3863762frobbiew
338b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd = open(slavename, O_RDWR)) < 0) {
339354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "Could not open %s", slavename);
340b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
341b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
342b87390939c55e574c5b4c66a341d80df3863762frobbiew
343b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd2 = open(slavename, O_RDWR)) < 0) {
344354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "Could not open %s (again)", slavename);
345b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
346b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
347b87390939c55e574c5b4c66a341d80df3863762frobbiew
348b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd3 = open(slavename, O_RDWR)) < 0) {
349354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "Could not open %s (once more)", slavename);
350b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
351b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
352b87390939c55e574c5b4c66a341d80df3863762frobbiew
353b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd) != 0) {
354354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close slave");
355b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
356b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
357b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd2) != 0) {
358354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close slave again");
359b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
360b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
361b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd3) != 0) {
362354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close slave once more");
363b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
364b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
365b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(masterfd) != 0) {
366354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close master");
367b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
368b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
369354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test4");
370b87390939c55e574c5b4c66a341d80df3863762frobbiew
371b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
37243337a3cf6f8809647cf9fc6c0054241f44b1fb1subrata_modak	return 0;
373b87390939c55e574c5b4c66a341d80df3863762frobbiew}
374b87390939c55e574c5b4c66a341d80df3863762frobbiew
375b87390939c55e574c5b4c66a341d80df3863762frobbiew#define NUMOPENS 6
376b87390939c55e574c5b4c66a341d80df3863762frobbiew
377b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
378b87390939c55e574c5b4c66a341d80df3863762frobbiew * test several simultaneous opens
379b87390939c55e574c5b4c66a341d80df3863762frobbiew */
380354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test5(void)
381b87390939c55e574c5b4c66a341d80df3863762frobbiew{
382b87390939c55e574c5b4c66a341d80df3863762frobbiew	static int masterfd[NUMOPENS];
383b87390939c55e574c5b4c66a341d80df3863762frobbiew	static int slavefd[NUMOPENS];
384b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
385b87390939c55e574c5b4c66a341d80df3863762frobbiew	int i;
386b87390939c55e574c5b4c66a341d80df3863762frobbiew
387b87390939c55e574c5b4c66a341d80df3863762frobbiew	for (i = 0; i < NUMOPENS; ++i) {
388b87390939c55e574c5b4c66a341d80df3863762frobbiew		masterfd[i] = open(MASTERCLONE, O_RDWR);
389b87390939c55e574c5b4c66a341d80df3863762frobbiew		if (masterfd[i] < 0) {
390354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK, "%s", MASTERCLONE);
391b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_resm(TBROK, "out of ptys");
392b87390939c55e574c5b4c66a341d80df3863762frobbiew			for (i = 0; i < NUMOPENS; ++i) {
393b87390939c55e574c5b4c66a341d80df3863762frobbiew				if (masterfd[i] != 0) {
394354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(void)close(masterfd[i]);
395b87390939c55e574c5b4c66a341d80df3863762frobbiew				}
396b87390939c55e574c5b4c66a341d80df3863762frobbiew				if (slavefd[i] != 0) {
397354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(void)close(slavefd[i]);
398b87390939c55e574c5b4c66a341d80df3863762frobbiew				}
399b87390939c55e574c5b4c66a341d80df3863762frobbiew			}
400b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
401b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
402b87390939c55e574c5b4c66a341d80df3863762frobbiew
403b87390939c55e574c5b4c66a341d80df3863762frobbiew		slavename = ptsname(masterfd[i]);
4040c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper		if (slavename == NULL) {
405354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK | TERRNO, "ptsname() call failed");
406b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
407b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
408b87390939c55e574c5b4c66a341d80df3863762frobbiew
409b87390939c55e574c5b4c66a341d80df3863762frobbiew		if (grantpt(masterfd[i]) != 0) {
410354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK | TERRNO, "grantpt() call failed");
411b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
412b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
413b87390939c55e574c5b4c66a341d80df3863762frobbiew
414b87390939c55e574c5b4c66a341d80df3863762frobbiew		if (unlockpt(masterfd[i]) != 0) {
415354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK, "unlockpt() call failed");
416b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
417b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
418b87390939c55e574c5b4c66a341d80df3863762frobbiew
419b87390939c55e574c5b4c66a341d80df3863762frobbiew		if ((slavefd[i] = open(slavename, O_RDWR)) < 0) {
420354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TFAIL, "Iteration %d: Could not open %s", i,
421354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				 slavename);
422b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
423b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
424b87390939c55e574c5b4c66a341d80df3863762frobbiew
425b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
426b87390939c55e574c5b4c66a341d80df3863762frobbiew
427b87390939c55e574c5b4c66a341d80df3863762frobbiew	for (i = 0; i < NUMOPENS; ++i) {
428b87390939c55e574c5b4c66a341d80df3863762frobbiew		if (close(slavefd[i]) != 0) {
429354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK, "Iteration %d: close slave", i);
430b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
431b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
432b87390939c55e574c5b4c66a341d80df3863762frobbiew		if (close(masterfd[i]) != 0) {
433354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			tst_resm(TBROK, "close master");
434b87390939c55e574c5b4c66a341d80df3863762frobbiew			tst_exit();
435b87390939c55e574c5b4c66a341d80df3863762frobbiew		}
436b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
437354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test5");
438b87390939c55e574c5b4c66a341d80df3863762frobbiew
439b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
44043337a3cf6f8809647cf9fc6c0054241f44b1fb1subrata_modak	return 0;
441b87390939c55e574c5b4c66a341d80df3863762frobbiew}
442b87390939c55e574c5b4c66a341d80df3863762frobbiew
443b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
444b87390939c55e574c5b4c66a341d80df3863762frobbiew * test hangup semantics
445b87390939c55e574c5b4c66a341d80df3863762frobbiew */
446354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint test6(void)
447b87390939c55e574c5b4c66a341d80df3863762frobbiew{
448b87390939c55e574c5b4c66a341d80df3863762frobbiew	static int masterfd;
449b87390939c55e574c5b4c66a341d80df3863762frobbiew	static int slavefd;
450b87390939c55e574c5b4c66a341d80df3863762frobbiew	char *slavename;
451b87390939c55e574c5b4c66a341d80df3863762frobbiew	struct termios termios;
452b87390939c55e574c5b4c66a341d80df3863762frobbiew
453b87390939c55e574c5b4c66a341d80df3863762frobbiew	masterfd = open(MASTERCLONE, O_RDWR);
454b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (masterfd < 0) {
455354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "%s", MASTERCLONE);
456b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
457b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
458b87390939c55e574c5b4c66a341d80df3863762frobbiew
459b87390939c55e574c5b4c66a341d80df3863762frobbiew	slavename = ptsname(masterfd);
4600c74e7d7d4d4484b7605c417dc0e751a39260356Garrett Cooper	if (slavename == NULL) {
461354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "ptsname() call failed");
462b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
463b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
464bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
465b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (grantpt(masterfd) != 0) {
466354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK | TERRNO, "grantpt() call failed");
467b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
468b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
469bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
470b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (unlockpt(masterfd) != 0) {
471354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "unlockpt() call failed");
472b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
473b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
474bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
475b87390939c55e574c5b4c66a341d80df3863762frobbiew	if ((slavefd = open(slavename, O_RDWR)) < 0) {
476354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "Could not open %s", slavename);
477b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
478b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
479b87390939c55e574c5b4c66a341d80df3863762frobbiew
480b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCGETS, &termios) != 0) {
481354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCGETS");
482b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
483b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
484b87390939c55e574c5b4c66a341d80df3863762frobbiew
485b87390939c55e574c5b4c66a341d80df3863762frobbiew	termios.c_cflag &= ~CBAUD;
486354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	termios.c_cflag |= B0 & CBAUD;
487b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (ioctl(slavefd, TCSETS, &termios) != 0) {
488354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TFAIL, "TCGETS");
489b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
490b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
491b87390939c55e574c5b4c66a341d80df3863762frobbiew
492b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(slavefd) != 0) {
493354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close");
494b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
495b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
496b87390939c55e574c5b4c66a341d80df3863762frobbiew	if (close(masterfd) != 0) {
497354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		tst_resm(TBROK, "close");
498b87390939c55e574c5b4c66a341d80df3863762frobbiew		tst_exit();
499b87390939c55e574c5b4c66a341d80df3863762frobbiew	}
500354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_resm(TPASS, "test6");
501b87390939c55e574c5b4c66a341d80df3863762frobbiew
502b87390939c55e574c5b4c66a341d80df3863762frobbiew	/** NOT REACHED **/
50343337a3cf6f8809647cf9fc6c0054241f44b1fb1subrata_modak	return 0;
504b87390939c55e574c5b4c66a341d80df3863762frobbiew}
505b87390939c55e574c5b4c66a341d80df3863762frobbiew
506b87390939c55e574c5b4c66a341d80df3863762frobbiew/*
507b87390939c55e574c5b4c66a341d80df3863762frobbiew * main test driver
508b87390939c55e574c5b4c66a341d80df3863762frobbiew */
509354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint main(int argc, char **argv)
510b87390939c55e574c5b4c66a341d80df3863762frobbiew{
511b87390939c55e574c5b4c66a341d80df3863762frobbiew	test1();
512b87390939c55e574c5b4c66a341d80df3863762frobbiew	test2();
513b87390939c55e574c5b4c66a341d80df3863762frobbiew	test3();
514b87390939c55e574c5b4c66a341d80df3863762frobbiew	test4();
515b87390939c55e574c5b4c66a341d80df3863762frobbiew	test5();
516b87390939c55e574c5b4c66a341d80df3863762frobbiew	test6();
517b87390939c55e574c5b4c66a341d80df3863762frobbiew	/*
518354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	 * all done
519b87390939c55e574c5b4c66a341d80df3863762frobbiew	 */
520b87390939c55e574c5b4c66a341d80df3863762frobbiew	tst_exit();
5212c28215423293e443469a07ae7011135d058b671Garrett Cooper
5222c28215423293e443469a07ae7011135d058b671Garrett Cooper	tst_exit();
523ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
524