4 # Copyright (c) 2008 Peter Holm <pho@FreeBSD.org>
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 # Regression test. Causes panic on 6.1
37 sed '1,/^EOF/d' < $odir/$0 > $dir/revoke.c
38 mycc -o revoke -Wall revoke.c || exit 1
41 n=100 # Number of times to test
43 ./revoke /dev/ttyv9 > /dev/null 2>&1 &
44 ./revoke /dev/ttyva > /dev/null 2>&1 &
45 ./revoke /dev/ttyvb > /dev/null 2>&1 &
46 ./revoke /dev/ttyvc > /dev/null 2>&1 &
54 /* By Martin Blapp, <mb@imp.ch> <mbr@FreeBSD.org> */
61 #include <sys/ioctl.h>
65 /*#define TTY "/dev/ttyv9"*/ /* should be totally unused */
66 #define CTTY "/dev/tty"
69 main(int argc, char **argv)
75 fprintf(stderr, "Usage: %s /dev/ttyv?\n", argv[0]);
79 /* Get rid of my ctty. */
80 printf("Parent starting: pid %d\n", getpid());
88 waitpid(pid, &status, 0);
92 printf("Child: pid %d\n", getpid());
98 ttyfd = open(argv[1], O_RDWR);
100 err(1, "open(%s)", argv[1]);
103 if (ioctl(ttyfd, TIOCSCTTY) < 0) {
104 err(1, "ioctl(TIOCSCTTY)");
107 if (revoke(argv[1]) < 0) {
108 err(1, "revoke(%s)", argv[1]);
111 if (open(CTTY, O_RDWR) < 0) {
112 err(1, "open(%s)", CTTY);