diff options
author | joerg <joerg@FreeBSD.org> | 1994-10-30 18:52:01 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 1994-10-30 18:52:01 +0000 |
commit | 5d1a6c44a12e8f1ec75feb60c87217224e0de1e0 (patch) | |
tree | c471da2555185a976da1c233bb68787dbe1111c1 /usr.sbin | |
download | FreeBSD-src-5d1a6c44a12e8f1ec75feb60c87217224e0de1e0.zip FreeBSD-src-5d1a6c44a12e8f1ec75feb60c87217224e0de1e0.tar.gz |
Import the fdcontrol command. It has been in 1.1.5, but obviously has been lost on its way to 2.0.
This program uses the FD_DEBUG ioctl, which will have to be commited yet.
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/fdcontrol/Makefile | 4 | ||||
-rw-r--r-- | usr.sbin/fdcontrol/fdcontrol.8 | 101 | ||||
-rw-r--r-- | usr.sbin/fdcontrol/fdcontrol.c | 136 |
3 files changed, 241 insertions, 0 deletions
diff --git a/usr.sbin/fdcontrol/Makefile b/usr.sbin/fdcontrol/Makefile new file mode 100644 index 0000000..068cade --- /dev/null +++ b/usr.sbin/fdcontrol/Makefile @@ -0,0 +1,4 @@ +PROG = fdcontrol +MAN8 = fdcontrol.8 + +.include <bsd.prog.mk> diff --git a/usr.sbin/fdcontrol/fdcontrol.8 b/usr.sbin/fdcontrol/fdcontrol.8 new file mode 100644 index 0000000..7a4b11e --- /dev/null +++ b/usr.sbin/fdcontrol/fdcontrol.8 @@ -0,0 +1,101 @@ +.\" +.\" Copyright (C) 1994 by Joerg Wunsch, Dresden +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY +.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +.\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +.\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +.\" USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +.\" DAMAGE. +.\" +.Dd May 22, 1994 +.Os +.Dt FDCONTROL 8 +.Sh NAME +.Nm fdcontrol +.Nd modify floppy disk parameters +.Sh SYNOPSIS +.Nm fdcontrol +.Op Fl d Ar 0|1 +.Ar device +.Nm fdcontrol +.Op Fl s +.Ar device +.Sh DESCRIPTION +.Nm Fdcontrol +allows the modification of the run-time behaviour of the floppy +disk device specifed by +.Ar device . +.Ar Device +should be a character device. + +.Nm Fdcontrol +currently supports the specification of device parameters for the +floppy disk drive +.Po +.Fl s , +also default mode +.Pc , +or it allows the modification of the driver debug level, in case the +floppy driver has been compiled into the kernel with the +.Em DEBUG +option set +.Pq Fl d . + +Since the implications of such actions are considered harmful, the +underlying +.Xr ioctl 2 +command is restricted to the super-user. + +When requesting a new parameter specification, the command asks the +user for each individual tunable parameter, defaulting to the +currently used value. + +.Sh DIAGNOSTICS +Error codes for the underlying +.Xr ioctl 2 +commands are printed by the +.Xr perror 3 +facility. + +.Sh BUGS +The +.Nm +command is currently under development. It's user interface is rather +silly and likely to change in future, options should be provided to +allow anything being modified from the command line. + +The driver does actually support only two debug levels +.Pq 0 and 1 , +where debug level 1 will generate huge amounts of output. It is likely +to overflow the syslog if not used with extreme care. + +.Sh SEE ALSO +.Xr fdc 4 , +.Xr ioctl 2 , +.Xr perror 3 . +.Sh HISTORY +.Nm Fdcontrol +is currently under development. It's user interface and overall +functionality are subjects to future improvements and changes. +.Sh AUTHOR +The program has been contributed by +.if n Joerg Wunsch, +.if t J\(:org Wunsch, +Dresden. diff --git a/usr.sbin/fdcontrol/fdcontrol.c b/usr.sbin/fdcontrol/fdcontrol.c new file mode 100644 index 0000000..a93aa45 --- /dev/null +++ b/usr.sbin/fdcontrol/fdcontrol.c @@ -0,0 +1,136 @@ +/* + * Copyright (C) 1994 by Joerg Wunsch, Dresden + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <machine/ioctl_fd.h> +#include <sys/file.h> + +int +getnumber(void) +{ + int i; + char b[80]; + + fgets(b, 80, stdin); + if(b[0] == '\n') return -1; + + sscanf(b, " %i", &i); + return i; +} + +void +usage(void) +{ + fprintf(stderr, "usage: fdcontrol [-d 0|1] | [-s] device-node\n"); + exit(2); +} + + +#define ask(name, fmt) \ +printf(#name "? [" fmt "]: ", ft.name); fflush(stdout); \ +if((i = getnumber()) != -1) ft.name = i + +int +main(int argc, char **argv) +{ + struct fd_type ft; + int fd, i; + int debug = -1, settype = 1; + + while((i = getopt(argc, argv, "d:s")) != EOF) + switch(i) + { + case 'd': + debug = atoi(optarg); + settype = 0; + break; + + case 's': + debug = -1; + settype = 1; + break; + + case '?': + default: + usage(); + } + + argc -= optind; + argv += optind; + + if(argc != 1) + usage(); + + if((fd = open(argv[0], 0)) < 0) + { + perror("open(floppy)"); + return 1; + } + + if(debug != -1) + { + if(ioctl(fd, FD_DEBUG, &debug) < 0) + { + perror("ioctl(FD_DEBUG)"); + return 1; + } + return 0; + } + + if(settype) + { + if(ioctl(fd, FD_GTYPE, &ft) < 0) + { + perror("ioctl(FD_GTYPE)"); + return 1; + } + + ask(sectrac, "%d"); + ask(secsize, "%d"); + ask(datalen, "0x%x"); + ask(gap, "0x%x"); + ask(tracks, "%d"); + ask(size, "%d"); + ask(steptrac, "%d"); + ask(trans, "%d"); + ask(heads, "%d"); + ask(f_gap, "0x%x"); + ask(f_inter, "%d"); + + if(ioctl(fd, FD_STYPE, &ft) < 0) + { + perror("ioctl(FD_STYPE)"); + return 1; + } + return 0; + } + +} + + + |