-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapplets.hpp
More file actions
215 lines (212 loc) · 6.18 KB
/
applets.hpp
File metadata and controls
215 lines (212 loc) · 6.18 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#pragma once
#include <cfbox/applet.hpp>
#include <cfbox/applet_config.hpp>
// applet entry points — conditionally declared based on config
#if CFBOX_ENABLE_ECHO
extern auto echo_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_PRINTF
extern auto printf_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_CAT
extern auto cat_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_HEAD
extern auto head_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_TAIL
extern auto tail_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_WC
extern auto wc_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_SORT
extern auto sort_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_UNIQ
extern auto uniq_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_MKDIR
extern auto mkdir_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_RM
extern auto rm_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_CP
extern auto cp_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_MV
extern auto mv_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_LS
extern auto ls_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_GREP
extern auto grep_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_FIND
extern auto find_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_SED
extern auto sed_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_INIT
extern auto init_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_TRUE
extern auto true_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_FALSE
extern auto false_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_YES
extern auto yes_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_PWD
extern auto pwd_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_BASENAME
extern auto basename_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_DIRNAME
extern auto dirname_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_UNAME
extern auto uname_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_NPROC
extern auto nproc_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_LINK
extern auto link_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_HOSTNAME
extern auto hostname_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_LOGNAME
extern auto logname_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_WHOAMI
extern auto whoami_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_TTY
extern auto tty_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_SLEEP
extern auto sleep_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_ID
extern auto id_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_TEST
extern auto test_main(int argc, char* argv[]) -> int;
#endif
#if CFBOX_ENABLE_SH
extern auto sh_main(int argc, char* argv[]) -> int;
#endif
// registry — one line per applet, conditionally compiled
constexpr auto APPLET_REGISTRY = std::to_array<cfbox::applet::AppEntry>({
#if CFBOX_ENABLE_ECHO
{"echo", echo_main, "display a line of text"},
#endif
#if CFBOX_ENABLE_PRINTF
{"printf", printf_main, "format and print data"},
#endif
#if CFBOX_ENABLE_CAT
{"cat", cat_main, "concatenate files and print"},
#endif
#if CFBOX_ENABLE_HEAD
{"head", head_main, "output the first part of files"},
#endif
#if CFBOX_ENABLE_TAIL
{"tail", tail_main, "output the last part of files"},
#endif
#if CFBOX_ENABLE_WC
{"wc", wc_main, "print newline, word, and byte counts"},
#endif
#if CFBOX_ENABLE_SORT
{"sort", sort_main, "sort lines of text"},
#endif
#if CFBOX_ENABLE_UNIQ
{"uniq", uniq_main, "report or omit repeated lines"},
#endif
#if CFBOX_ENABLE_MKDIR
{"mkdir", mkdir_main, "create directories"},
#endif
#if CFBOX_ENABLE_RM
{"rm", rm_main, "remove files or directories"},
#endif
#if CFBOX_ENABLE_CP
{"cp", cp_main, "copy files and directories"},
#endif
#if CFBOX_ENABLE_MV
{"mv", mv_main, "move or rename files"},
#endif
#if CFBOX_ENABLE_LS
{"ls", ls_main, "list directory contents"},
#endif
#if CFBOX_ENABLE_GREP
{"grep", grep_main, "search patterns in text"},
#endif
#if CFBOX_ENABLE_FIND
{"find", find_main, "search for files in directory hierarchy"},
#endif
#if CFBOX_ENABLE_SED
{"sed", sed_main, "stream editor for filtering and transforming text"},
#endif
#if CFBOX_ENABLE_INIT
{"init", init_main, "system init for boot testing (PID 1)"},
#endif
#if CFBOX_ENABLE_TRUE
{"true", true_main, "do nothing, exit with status 0"},
#endif
#if CFBOX_ENABLE_FALSE
{"false", false_main, "do nothing, exit with status 1"},
#endif
#if CFBOX_ENABLE_YES
{"yes", yes_main, "output a string repeatedly until killed"},
#endif
#if CFBOX_ENABLE_PWD
{"pwd", pwd_main, "print working directory"},
#endif
#if CFBOX_ENABLE_BASENAME
{"basename", basename_main, "strip directory and suffix from file names"},
#endif
#if CFBOX_ENABLE_DIRNAME
{"dirname", dirname_main, "strip last component from file name"},
#endif
#if CFBOX_ENABLE_UNAME
{"uname", uname_main, "print system information"},
#endif
#if CFBOX_ENABLE_NPROC
{"nproc", nproc_main, "print number of available processors"},
#endif
#if CFBOX_ENABLE_LINK
{"link", link_main, "create a hard link"},
#endif
#if CFBOX_ENABLE_HOSTNAME
{"hostname", hostname_main, "show or set the system host name"},
#endif
#if CFBOX_ENABLE_LOGNAME
{"logname", logname_main, "print the user's login name"},
#endif
#if CFBOX_ENABLE_WHOAMI
{"whoami", whoami_main, "print effective user ID"},
#endif
#if CFBOX_ENABLE_TTY
{"tty", tty_main, "print the file name of the terminal connected to stdin"},
#endif
#if CFBOX_ENABLE_SLEEP
{"sleep", sleep_main, "delay for a specified amount of time"},
#endif
#if CFBOX_ENABLE_ID
{"id", id_main, "print real and effective user and group IDs"},
#endif
#if CFBOX_ENABLE_TEST
{"test", test_main, "evaluate conditional expression"},
{"[", test_main, "evaluate conditional expression"},
#endif
#if CFBOX_ENABLE_SH
{"sh", sh_main, "POSIX shell command interpreter"},
#endif
});