1*d9047ae6Sdholland /* $NetBSD: panic.c,v 1.14 2016/03/13 00:32:09 dholland Exp $ */
25c84ea4dSglass
3940867e3Scgd /*
4940867e3Scgd * panic.c - terminate fast in case of error
5940867e3Scgd * Copyright (c) 1993 by Thomas Koenig
6940867e3Scgd *
7940867e3Scgd * Redistribution and use in source and binary forms, with or without
8940867e3Scgd * modification, are permitted provided that the following conditions
9940867e3Scgd * are met:
10940867e3Scgd * 1. Redistributions of source code must retain the above copyright
11940867e3Scgd * notice, this list of conditions and the following disclaimer.
12940867e3Scgd * 2. The name of the author(s) may not be used to endorse or promote
13940867e3Scgd * products derived from this software without specific prior written
14940867e3Scgd * permission.
15940867e3Scgd *
16940867e3Scgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
17940867e3Scgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18940867e3Scgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19ce0c0e02Schristos * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
20940867e3Scgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21940867e3Scgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22940867e3Scgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23940867e3Scgd * THEORY OF LIABILITY, WETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24940867e3Scgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25940867e3Scgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26940867e3Scgd */
27940867e3Scgd
28940867e3Scgd /* System Headers */
29940867e3Scgd
3027707948Smjl #include <err.h>
31940867e3Scgd #include <errno.h>
325f256bd3Schristos #include <stdbool.h>
33940867e3Scgd #include <stdio.h>
34940867e3Scgd #include <stdlib.h>
35940867e3Scgd #include <unistd.h>
36940867e3Scgd
37940867e3Scgd /* Local headers */
38940867e3Scgd
39940867e3Scgd #include "panic.h"
40940867e3Scgd #include "at.h"
41ce0c0e02Schristos #include "privs.h"
42940867e3Scgd
43940867e3Scgd /* File scope variables */
44940867e3Scgd
455c84ea4dSglass #ifndef lint
46ce0c0e02Schristos #if 0
47ce0c0e02Schristos static char rcsid[] = "$OpenBSD: panic.c,v 1.4 1997/03/01 23:40:09 millert Exp $";
48ce0c0e02Schristos #else
49*d9047ae6Sdholland __RCSID("$NetBSD: panic.c,v 1.14 2016/03/13 00:32:09 dholland Exp $");
50ce0c0e02Schristos #endif
515c84ea4dSglass #endif
52940867e3Scgd
53940867e3Scgd /* Global functions */
54940867e3Scgd
555f256bd3Schristos __dead
56940867e3Scgd void
panic(const char * a)575f256bd3Schristos panic(const char *a)
58940867e3Scgd {
597750ecc1Smrg
60ce0c0e02Schristos /*
61ce0c0e02Schristos * Something fatal has happened, print error message and exit.
62940867e3Scgd */
63ce0c0e02Schristos if (fcreated) {
64*d9047ae6Sdholland privs_enter();
65ca282f35Schristos (void)unlink(atfile);
66*d9047ae6Sdholland privs_exit();
67ce0c0e02Schristos }
68a93b9bedSlukem errx(EXIT_FAILURE, "%s", a);
69940867e3Scgd }
70940867e3Scgd
715f256bd3Schristos __dead
72940867e3Scgd void
perr(const char * a)735f256bd3Schristos perr(const char *a)
74940867e3Scgd {
757750ecc1Smrg
76ce0c0e02Schristos /*
77ce0c0e02Schristos * Some operating system error; print error message and exit.
78940867e3Scgd */
79940867e3Scgd perror(a);
80ce0c0e02Schristos if (fcreated) {
81*d9047ae6Sdholland privs_enter();
82ca282f35Schristos (void)unlink(atfile);
83*d9047ae6Sdholland privs_exit();
84ce0c0e02Schristos }
85940867e3Scgd exit(EXIT_FAILURE);
86940867e3Scgd }
87940867e3Scgd
885f256bd3Schristos __dead
89940867e3Scgd void
privs_fail(const char * msg)90*d9047ae6Sdholland privs_fail(const char *msg)
91*d9047ae6Sdholland {
92*d9047ae6Sdholland perr(msg);
93*d9047ae6Sdholland }
94*d9047ae6Sdholland
95*d9047ae6Sdholland __dead
96*d9047ae6Sdholland void
usage(void)979ff98d4dSmjl usage(void)
98940867e3Scgd {
997750ecc1Smrg
100ce0c0e02Schristos /* Print usage and exit. */
1015f256bd3Schristos (void)fprintf(stderr,
1025f256bd3Schristos "usage: at [-bdlmrVv] [-f file] [-q queue] -t [[CC]YY]MMDDhhmm[.SS]\n"
103625282a3Swiz " at [-bdlmrVv] [-f file] [-q queue] time\n"
104ce0c0e02Schristos " at [-V] -c job [job ...]\n"
105625282a3Swiz " atq [-Vv] [-q queue]\n"
106ce0c0e02Schristos " atrm [-V] job [job ...]\n"
107625282a3Swiz " batch [-mVv] [-f file] [-q queue] [-t [[CC]YY]MMDDhhmm[.SS]]\n"
108625282a3Swiz " batch [-mVv] [-f file] [-q queue] [time]\n");
109940867e3Scgd exit(EXIT_FAILURE);
110940867e3Scgd }
111