/*- * Copyright (c) 1982, 1988, 1993 * The Regents of the University of California. All rights reserved. * * This module is believed to contain source code proprietary to AT&T. * Use and redistribution is subject to the Berkeley Software License * Agreement and your Software Agreement with AT&T (Western Electric). * * @(#)ioctl.c 8.1 (Berkeley) 6/11/93 */ #include <sys/param.h> #include <stand.att/saio.h> #ifndef SMALL ioctl(fdesc, cmd, arg) int fdesc, cmd; char *arg; { register struct iob *file; int error = 0; fdesc -= 3; if (fdesc < 0 || fdesc >= SOPEN_MAX || ((file = &iob[fdesc])->i_flgs&F_ALLOC) == 0) { errno = EBADF; return (-1); } switch (cmd) { case SAIOHDR: file->i_flgs |= F_HDR; break; case SAIOCHECK: file->i_flgs |= F_CHECK; break; case SAIOHCHECK: file->i_flgs |= F_HCHECK; break; case SAIONOBAD: file->i_flgs |= F_NBSF; break; case SAIODOBAD: file->i_flgs &= ~F_NBSF; break; default: error = devioctl(file, cmd, arg); break; } if (error < 0) errno = file->i_error; return (error); } #endif /* SMALL */