diff options
Diffstat (limited to 'usr.sbin/wormcontrol/wormcontrol.c')
-rw-r--r-- | usr.sbin/wormcontrol/wormcontrol.c | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/usr.sbin/wormcontrol/wormcontrol.c b/usr.sbin/wormcontrol/wormcontrol.c deleted file mode 100644 index de793df..0000000 --- a/usr.sbin/wormcontrol/wormcontrol.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 1996 - * interface business GmbH - * Tolkewitzer Strasse 49 - * D-01277 Dresden - * F.R. Germany - * - * All rights reserved. - * - * Written by Joerg Wunsch <joerg_wunsch@interface-business.de> - * - * - * 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. - */ - -#ifndef lint -static const char rcsid[] = - "$FreeBSD$"; -#endif /* not lint */ - -#include <err.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sysexits.h> -#include <unistd.h> - -#include <sys/ioctl.h> -#include <sys/wormio.h> - -static void -usage() -{ - fprintf(stderr,"usage: wormcontrol [-f device] command [args]\n"); - exit(EX_USAGE); -} - -#define eq(a, b) (strcmp(a, b) == 0) - -int -main(int argc, char **argv) -{ - int fd, c, i; - int errs = 0; - const char *devname = "/dev/rworm0"; - - while ((c = getopt(argc, argv, "f:")) != -1) - switch(c) { - case 'f': - devname = optarg; - break; - - case '?': - default: - errs++; - } - - argc -= optind; - argv += optind; - - if (errs || argc < 1) - usage(); - - if ((fd = open(devname, O_RDONLY | O_NONBLOCK, 0)) == -1) - err(EX_NOINPUT, "open(%s)", devname); - - if (eq(argv[0], "prepdisk")) { - struct wormio_prepare_disk d; - d.dummy = 0; - d.speed = -1; - for (i = 1; i < argc; i++) { - if (eq(argv[i], "dummy")) - d.dummy = 1; - else if (eq(argv[i], "single")) - d.speed = 1; - else if (eq(argv[i], "double")) - d.speed = 2; - else if (eq(argv[i], "quad")) - d.speed = 4; - else if (eq(argv[i], "max")) - d.speed = 99; - else - errx(EX_USAGE, - "wrong param for \"prepdisk\": %s", - argv[i]); - } - if (d.speed == -1) - errx(EX_USAGE, "missing speed parameter"); - if (ioctl(fd, WORMIOCPREPDISK, &d) == -1) - err(EX_IOERR, "ioctl(WORMIOCPREPDISK)"); - } - else if (eq(argv[0], "track")) { - struct wormio_prepare_track t; - bzero(&t, sizeof (t)); - t.audio = -1; - t.preemp = 0; - for (i = 1; i < argc; i++) { - if (eq(argv[i], "audio")) - t.audio = 1; - else if (eq(argv[i], "data")) { - t.audio = 0; - t.track_type = BLOCK_MODE_1; - } else if (eq(argv[i], "preemp")) - t.preemp = 1; - else - errx(EX_USAGE, - "wrong param for \"track\": %s", - argv[i]); - } - if (t.audio == -1) - errx(EX_USAGE, "missing track type parameter"); - if (t.audio == 0 && t.preemp == 1) - errx(EX_USAGE, "\"preemp\" attempted on data track"); - if (ioctl(fd, WORMIOCPREPTRACK, &t) == -1) - err(EX_IOERR, "ioctl(WORMIOCPREPTRACK)"); - } - else if (eq(argv[0], "fixate")) { - struct wormio_fixation f; - f.toc_type = -1; - f.onp = 0; - for (i = 1; i < argc; i++) { - if (eq(argv[i], "onp")) - f.onp = 1; - else if (argv[i][0] >= '0' && argv[i][0] <= '4' && - argv[i][1] == '\0') - f.toc_type = argv[i][0] - '0'; - else - errx(EX_USAGE, - "wrong param for \"fixate\": %s", - argv[i]); - } - if (f.toc_type == -1) - errx(EX_USAGE, "missing TOC type parameter"); - if (ioctl(fd, WORMIOCFIXATION, &f) == -1) - err(EX_IOERR, "ioctl(WORMIOFIXATION)"); - } - else if (eq(argv[0], "blank")) { - if (ioctl(fd, CDRIOCBLANK) == -1) - err(EX_IOERR, "ioctl(CDRIOCBLANK)"); - } - else if (eq(argv[0], "nextwriteable")) { - int addr; - if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) == -1) - err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); - printf("%d\n", addr); - } - else - errx(EX_USAGE, "unknown command: %s", argv[0]); - - return EX_OK; -} |