xref: /original-bsd/sys/stand/ioctl.c (revision 3705696b)
1 /*-
2  * Copyright (c) 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * The Mach Operating System project at Carnegie-Mellon University.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)ioctl.c	8.1 (Berkeley) 06/11/93
11  *
12  *
13  * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University
14  * All Rights Reserved.
15  *
16  * Author: Alessandro Forin
17  *
18  * Permission to use, copy, modify and distribute this software and its
19  * documentation is hereby granted, provided that both the copyright
20  * notice and this permission notice appear in all copies of the
21  * software, derivative works or modified versions, and any portions
22  * thereof, and that both notices appear in supporting documentation.
23  *
24  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
25  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
26  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
27  *
28  * Carnegie Mellon requests users of this software to return to
29  *
30  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
31  *  School of Computer Science
32  *  Carnegie Mellon University
33  *  Pittsburgh PA 15213-3890
34  *
35  * any improvements or extensions that they make and grant Carnegie the
36  * rights to redistribute these changes.
37  */
38 
39 #include <stand/stand.h>
40 
41 ioctl(fd, cmd, arg)
42 	int fd;
43 	int cmd;
44 	char *arg;
45 {
46 	register struct open_file *f = &files[fd];
47 
48 	if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) {
49 		errno = EBADF;
50 		return (-1);
51 	}
52 	if (f->f_flags & F_RAW) {
53 		errno = (f->f_dev->dv_ioctl)(f, cmd, arg);
54 		if (errno)
55 			return (-1);
56 		return (0);
57 	}
58 	return (-1);
59 }
60