xref: /csrg-svn/sys/stand.att/ioctl.c (revision 60328)
149147Sbostic /*-
249147Sbostic  * Copyright (c) 1982, 1988 The Regents of the University of California.
349147Sbostic  * All rights reserved.
449147Sbostic  *
549147Sbostic  * %sccs.include.proprietary.c%
649147Sbostic  *
7*60328Smckusick  *	@(#)ioctl.c	7.3 (Berkeley) 05/24/93
849147Sbostic  */
949147Sbostic 
1049147Sbostic #include <sys/param.h>
11*60328Smckusick #include <stand.att/saio.h>
1249147Sbostic 
1349147Sbostic #ifndef SMALL
1449147Sbostic ioctl(fdesc, cmd, arg)
1549147Sbostic 	int fdesc, cmd;
1649147Sbostic 	char *arg;
1749147Sbostic {
1849147Sbostic 	register struct iob *file;
1949147Sbostic 	int error = 0;
2049147Sbostic 
2149147Sbostic 	fdesc -= 3;
2249147Sbostic 	if (fdesc < 0 || fdesc >= SOPEN_MAX ||
2349147Sbostic 	    ((file = &iob[fdesc])->i_flgs&F_ALLOC) == 0) {
2449147Sbostic 		errno = EBADF;
2549147Sbostic 		return (-1);
2649147Sbostic 	}
2749147Sbostic 	switch (cmd) {
2849147Sbostic 
2949147Sbostic 	case SAIOHDR:
3049147Sbostic 		file->i_flgs |= F_HDR;
3149147Sbostic 		break;
3249147Sbostic 
3349147Sbostic 	case SAIOCHECK:
3449147Sbostic 		file->i_flgs |= F_CHECK;
3549147Sbostic 		break;
3649147Sbostic 
3749147Sbostic 	case SAIOHCHECK:
3849147Sbostic 		file->i_flgs |= F_HCHECK;
3949147Sbostic 		break;
4049147Sbostic 
4149147Sbostic 	case SAIONOBAD:
4249147Sbostic 		file->i_flgs |= F_NBSF;
4349147Sbostic 		break;
4449147Sbostic 
4549147Sbostic 	case SAIODOBAD:
4649147Sbostic 		file->i_flgs &= ~F_NBSF;
4749147Sbostic 		break;
4849147Sbostic 
4949147Sbostic 	default:
5049147Sbostic 		error = devioctl(file, cmd, arg);
5149147Sbostic 		break;
5249147Sbostic 	}
5349147Sbostic 	if (error < 0)
5449147Sbostic 		errno = file->i_error;
5549147Sbostic 	return (error);
5649147Sbostic }
5749147Sbostic #endif /* SMALL */
58