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