xref: /freebsd/usr.bin/at/panic.c (revision d78e98d22e6c097de0f6001730622254aee8f6e2)
1d78e98d2SNate Williams /*
2d78e98d2SNate Williams  * panic.c - terminate fast in case of error
3d78e98d2SNate Williams  * Copyright (c) 1993 by Thomas Koenig
4d78e98d2SNate Williams  * All rights reserved.
5d78e98d2SNate Williams  *
6d78e98d2SNate Williams  * Redistribution and use in source and binary forms, with or without
7d78e98d2SNate Williams  * modification, are permitted provided that the following conditions
8d78e98d2SNate Williams  * are met:
9d78e98d2SNate Williams  * 1. Redistributions of source code must retain the above copyright
10d78e98d2SNate Williams  *    notice, this list of conditions and the following disclaimer.
11d78e98d2SNate Williams  * 2. The name of the author(s) may not be used to endorse or promote
12d78e98d2SNate Williams  *    products derived from this software without specific prior written
13d78e98d2SNate Williams  *    permission.
14d78e98d2SNate Williams  *
15d78e98d2SNate Williams  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
16d78e98d2SNate Williams  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17d78e98d2SNate Williams  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18d78e98d2SNate Williams  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19d78e98d2SNate Williams  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20d78e98d2SNate Williams  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21d78e98d2SNate Williams  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22d78e98d2SNate Williams  * THEORY OF LIABILITY, WETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23d78e98d2SNate Williams  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24d78e98d2SNate Williams  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25d78e98d2SNate Williams  */
26d78e98d2SNate Williams 
27d78e98d2SNate Williams /* System Headers */
28d78e98d2SNate Williams 
29d78e98d2SNate Williams #include <errno.h>
30d78e98d2SNate Williams #include <stdio.h>
31d78e98d2SNate Williams #include <stdlib.h>
32d78e98d2SNate Williams #include <unistd.h>
33d78e98d2SNate Williams 
34d78e98d2SNate Williams /* Local headers */
35d78e98d2SNate Williams 
36d78e98d2SNate Williams #include "panic.h"
37d78e98d2SNate Williams #include "at.h"
38d78e98d2SNate Williams 
39d78e98d2SNate Williams /* File scope variables */
40d78e98d2SNate Williams 
41d78e98d2SNate Williams static char rcsid[] = "$Id: panic.c,v 1.1 1993/12/05 11:36:51 cgd Exp $";
42d78e98d2SNate Williams 
43d78e98d2SNate Williams /* External variables */
44d78e98d2SNate Williams 
45d78e98d2SNate Williams /* Global functions */
46d78e98d2SNate Williams 
47d78e98d2SNate Williams void
48d78e98d2SNate Williams panic(a)
49d78e98d2SNate Williams 	char *a;
50d78e98d2SNate Williams {
51d78e98d2SNate Williams /* Something fatal has happened, print error message and exit.
52d78e98d2SNate Williams  */
53d78e98d2SNate Williams 	fprintf(stderr, "%s: %s\n", namep, a);
54d78e98d2SNate Williams 	if (fcreated)
55d78e98d2SNate Williams 		unlink(atfile);
56d78e98d2SNate Williams 
57d78e98d2SNate Williams 	exit(EXIT_FAILURE);
58d78e98d2SNate Williams }
59d78e98d2SNate Williams 
60d78e98d2SNate Williams void
61d78e98d2SNate Williams perr(a)
62d78e98d2SNate Williams 	char *a;
63d78e98d2SNate Williams {
64d78e98d2SNate Williams /* Some operating system error; print error message and exit.
65d78e98d2SNate Williams  */
66d78e98d2SNate Williams 	perror(a);
67d78e98d2SNate Williams 	if (fcreated)
68d78e98d2SNate Williams 		unlink(atfile);
69d78e98d2SNate Williams 
70d78e98d2SNate Williams 	exit(EXIT_FAILURE);
71d78e98d2SNate Williams }
72d78e98d2SNate Williams 
73d78e98d2SNate Williams void
74d78e98d2SNate Williams perr2(a, b)
75d78e98d2SNate Williams 	char *a, *b;
76d78e98d2SNate Williams {
77d78e98d2SNate Williams 	fprintf(stderr, "%s", a);
78d78e98d2SNate Williams 	perr(b);
79d78e98d2SNate Williams }
80d78e98d2SNate Williams 
81d78e98d2SNate Williams void
82d78e98d2SNate Williams usage(void)
83d78e98d2SNate Williams {
84d78e98d2SNate Williams /* Print usage and exit.
85d78e98d2SNate Williams */
86d78e98d2SNate Williams 	fprintf(stderr, "Usage: at [-q x] [-f file] [-m] time\n"
87d78e98d2SNate Williams 	    "       atq [-q x] [-v]\n"
88d78e98d2SNate Williams 	    "       atrm [-q x] job ...\n"
89d78e98d2SNate Williams 	    "       batch [-f file] [-m]\n");
90d78e98d2SNate Williams 	exit(EXIT_FAILURE);
91d78e98d2SNate Williams }
92