aboutsummaryrefslogtreecommitdiff
path: root/src/shared/_usage.h
blob: 3264ad6f66d1c63cc69ff0858eedeb9f7dfa259d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
 * Copyright (c) 2007-2015 The OpenRC Authors.
 * See the Authors file at the top-level directory of this distribution and
 * https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
 *
 * This file is part of OpenRC. It is subject to the license terms in
 * the LICENSE file found in the top-level directory of this
 * distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
 * This file may not be copied, modified, propagated, or distributed
 *    except according to the terms contained in the LICENSE file.
 */

#include <getopt.h>
#include <stdlib.h>

#define getoptstring_COMMON "ChqVv"

#define longopts_COMMON							      \
	{ "help",           0, NULL, 'h'},				      \
	{ "nocolor",        0, NULL, 'C'},				      \
	{ "version",        0, NULL, 'V'},				      \
	{ "verbose",        0, NULL, 'v'},				      \
	{ "quiet",          0, NULL, 'q'},				      \
	{ NULL,             0, NULL,  0 }

#define longopts_help_COMMON						      \
	"Display this help output",					      \
	"Disable color output",						      \
	"Display software version",			              \
	"Run verbosely",						      \
	"Run quietly (repeat to suppress errors)"

#define case_RC_COMMON_getopt_case_C  setenv ("EINFO_COLOR", "NO", 1);
#define case_RC_COMMON_getopt_case_h  usage (EXIT_SUCCESS);
#define case_RC_COMMON_getopt_case_V  if (argc == 2) show_version();
#define case_RC_COMMON_getopt_case_v  setenv ("EINFO_VERBOSE", "YES", 1);
#define case_RC_COMMON_getopt_case_q  set_quiet_options();
#define case_RC_COMMON_getopt_default usage (EXIT_FAILURE);

#define case_RC_COMMON_GETOPT						      \
	case 'C': case_RC_COMMON_getopt_case_C; break;			      \
	case 'h': case_RC_COMMON_getopt_case_h; break;			      \
	case 'V': case_RC_COMMON_getopt_case_V; break;			      \
	case 'v': case_RC_COMMON_getopt_case_v; break;			      \
	case 'q': case_RC_COMMON_getopt_case_q; break;			      \
	default:  case_RC_COMMON_getopt_default; break;

#ifdef RC_USER_SERVICES
#define case_RC_USER_SERVICES \
	case 'U': rc_set_user(); break;
#define getoptstring_USER_SERVICES "U"
#define longopts_USER_SERVICES \
	{ "user",          0, NULL, 'U'},
#define longopts_help_USER_SERVICES \
	"use user facing services",
#endif

extern const char *applet;
extern const char *extraopts;
extern const char getoptstring[];
extern const struct option longopts[];
extern const char * const longopts_help[];
extern const char *usagestring;

void set_quiet_options(void);
void show_version(void);
void usage(int exit_status);