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
31 # Regression test. Causes panic on 6.1
37 sed '1,/^EOF/d' < $odir/$0 > $dir/revoke.c
38 cc -o revoke -Wall revoke.c
41 n=100 # Number of times to test
56 /* By Martin Blapp, <mb@imp.ch> <mbr@FreeBSD.org> */
63 #include <sys/ioctl.h>
67 /*#define TTY "/dev/ttyv9"*/ /* should be totally unused */
68 #define CTTY "/dev/tty"
71 main(int argc, char **argv)
77 fprintf(stderr, "Usage: %s /dev/ttyv?\n", argv[0]);
81 /* Get rid of my ctty. */
82 printf("Parent starting: pid %d\n", getpid());
90 waitpid(pid, &status, 0);
94 printf("Child: pid %d\n", getpid());
100 ttyfd = open(argv[1], O_RDWR);
102 err(1, "open(%s)", argv[1]);
105 if (ioctl(ttyfd, TIOCSCTTY) < 0) {
106 err(1, "ioctl(TIOCSCTTY)");
109 if (revoke(argv[1]) < 0) {
110 err(1, "revoke(%s)", argv[1]);
113 if (open(CTTY, O_RDWR) < 0) {
114 err(1, "open(%s)", CTTY);