xref: /aosp_15_r20/external/toybox/android/device/generated/globals.h (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker struct log_data {
2*cf5a6c84SAndroid Build Coastguard Worker   char *t, *p;
3*cf5a6c84SAndroid Build Coastguard Worker 
4*cf5a6c84SAndroid Build Coastguard Worker   int pri;
5*cf5a6c84SAndroid Build Coastguard Worker };
6*cf5a6c84SAndroid Build Coastguard Worker 
7*cf5a6c84SAndroid Build Coastguard Worker struct dmesg_data {
8*cf5a6c84SAndroid Build Coastguard Worker   long n, s;
9*cf5a6c84SAndroid Build Coastguard Worker 
10*cf5a6c84SAndroid Build Coastguard Worker   int use_color;
11*cf5a6c84SAndroid Build Coastguard Worker   time_t tea;
12*cf5a6c84SAndroid Build Coastguard Worker };
13*cf5a6c84SAndroid Build Coastguard Worker 
14*cf5a6c84SAndroid Build Coastguard Worker struct gzip_data {
15*cf5a6c84SAndroid Build Coastguard Worker   int level;
16*cf5a6c84SAndroid Build Coastguard Worker };
17*cf5a6c84SAndroid Build Coastguard Worker 
18*cf5a6c84SAndroid Build Coastguard Worker struct hostname_data {
19*cf5a6c84SAndroid Build Coastguard Worker   char *F;
20*cf5a6c84SAndroid Build Coastguard Worker };
21*cf5a6c84SAndroid Build Coastguard Worker 
22*cf5a6c84SAndroid Build Coastguard Worker struct killall_data {
23*cf5a6c84SAndroid Build Coastguard Worker   char *s;
24*cf5a6c84SAndroid Build Coastguard Worker 
25*cf5a6c84SAndroid Build Coastguard Worker   int signum;
26*cf5a6c84SAndroid Build Coastguard Worker   pid_t cur_pid;
27*cf5a6c84SAndroid Build Coastguard Worker   char **names;
28*cf5a6c84SAndroid Build Coastguard Worker   short *err;
29*cf5a6c84SAndroid Build Coastguard Worker   struct int_list { struct int_list *next; int val; } *pids;
30*cf5a6c84SAndroid Build Coastguard Worker };
31*cf5a6c84SAndroid Build Coastguard Worker 
32*cf5a6c84SAndroid Build Coastguard Worker struct md5sum_data {
33*cf5a6c84SAndroid Build Coastguard Worker   int sawline;
34*cf5a6c84SAndroid Build Coastguard Worker };
35*cf5a6c84SAndroid Build Coastguard Worker 
36*cf5a6c84SAndroid Build Coastguard Worker struct mknod_data {
37*cf5a6c84SAndroid Build Coastguard Worker   char *Z, *m;
38*cf5a6c84SAndroid Build Coastguard Worker };
39*cf5a6c84SAndroid Build Coastguard Worker 
40*cf5a6c84SAndroid Build Coastguard Worker struct mktemp_data {
41*cf5a6c84SAndroid Build Coastguard Worker   char *p, *tmpdir;
42*cf5a6c84SAndroid Build Coastguard Worker };
43*cf5a6c84SAndroid Build Coastguard Worker 
44*cf5a6c84SAndroid Build Coastguard Worker struct mount_data {
45*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *o;
46*cf5a6c84SAndroid Build Coastguard Worker   char *t, *O;
47*cf5a6c84SAndroid Build Coastguard Worker 
48*cf5a6c84SAndroid Build Coastguard Worker   unsigned long flags;
49*cf5a6c84SAndroid Build Coastguard Worker   char *opts;
50*cf5a6c84SAndroid Build Coastguard Worker   int okuser;
51*cf5a6c84SAndroid Build Coastguard Worker };
52*cf5a6c84SAndroid Build Coastguard Worker 
53*cf5a6c84SAndroid Build Coastguard Worker struct pidof_data {
54*cf5a6c84SAndroid Build Coastguard Worker   char *o;
55*cf5a6c84SAndroid Build Coastguard Worker };
56*cf5a6c84SAndroid Build Coastguard Worker 
57*cf5a6c84SAndroid Build Coastguard Worker struct seq_data {
58*cf5a6c84SAndroid Build Coastguard Worker   char *s, *f;
59*cf5a6c84SAndroid Build Coastguard Worker 
60*cf5a6c84SAndroid Build Coastguard Worker   int precision, buflen;
61*cf5a6c84SAndroid Build Coastguard Worker };
62*cf5a6c84SAndroid Build Coastguard Worker 
63*cf5a6c84SAndroid Build Coastguard Worker struct umount_data {
64*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *t;
65*cf5a6c84SAndroid Build Coastguard Worker 
66*cf5a6c84SAndroid Build Coastguard Worker   char *types;
67*cf5a6c84SAndroid Build Coastguard Worker };
68*cf5a6c84SAndroid Build Coastguard Worker 
69*cf5a6c84SAndroid Build Coastguard Worker struct ifconfig_data {
70*cf5a6c84SAndroid Build Coastguard Worker   int sockfd;
71*cf5a6c84SAndroid Build Coastguard Worker };
72*cf5a6c84SAndroid Build Coastguard Worker 
73*cf5a6c84SAndroid Build Coastguard Worker struct microcom_data {
74*cf5a6c84SAndroid Build Coastguard Worker   long s;
75*cf5a6c84SAndroid Build Coastguard Worker 
76*cf5a6c84SAndroid Build Coastguard Worker   int fd, stok;
77*cf5a6c84SAndroid Build Coastguard Worker   struct termios old_stdin, old_fd;
78*cf5a6c84SAndroid Build Coastguard Worker };
79*cf5a6c84SAndroid Build Coastguard Worker 
80*cf5a6c84SAndroid Build Coastguard Worker struct netcat_data {
81*cf5a6c84SAndroid Build Coastguard Worker   char *f, *s, *o, *O;
82*cf5a6c84SAndroid Build Coastguard Worker   long q, p, W, w;
83*cf5a6c84SAndroid Build Coastguard Worker 
84*cf5a6c84SAndroid Build Coastguard Worker   unsigned ofd, olast, opos, ocount[2];
85*cf5a6c84SAndroid Build Coastguard Worker   char obuf[16];
86*cf5a6c84SAndroid Build Coastguard Worker };
87*cf5a6c84SAndroid Build Coastguard Worker 
88*cf5a6c84SAndroid Build Coastguard Worker struct netstat_data {
89*cf5a6c84SAndroid Build Coastguard Worker   struct num_cache *inodes;
90*cf5a6c84SAndroid Build Coastguard Worker   int wpad;
91*cf5a6c84SAndroid Build Coastguard Worker };
92*cf5a6c84SAndroid Build Coastguard Worker 
93*cf5a6c84SAndroid Build Coastguard Worker struct ping_data {
94*cf5a6c84SAndroid Build Coastguard Worker   char *I;
95*cf5a6c84SAndroid Build Coastguard Worker   long w, W, i, s, c, t, m;
96*cf5a6c84SAndroid Build Coastguard Worker 
97*cf5a6c84SAndroid Build Coastguard Worker   struct sockaddr *sa;
98*cf5a6c84SAndroid Build Coastguard Worker   int sock;
99*cf5a6c84SAndroid Build Coastguard Worker   unsigned long sent, recv, fugit, min, max;
100*cf5a6c84SAndroid Build Coastguard Worker };
101*cf5a6c84SAndroid Build Coastguard Worker 
102*cf5a6c84SAndroid Build Coastguard Worker struct tunctl_data {
103*cf5a6c84SAndroid Build Coastguard Worker   char *u;
104*cf5a6c84SAndroid Build Coastguard Worker };
105*cf5a6c84SAndroid Build Coastguard Worker 
106*cf5a6c84SAndroid Build Coastguard Worker struct base64_data {
107*cf5a6c84SAndroid Build Coastguard Worker   long w;
108*cf5a6c84SAndroid Build Coastguard Worker 
109*cf5a6c84SAndroid Build Coastguard Worker   unsigned total;
110*cf5a6c84SAndroid Build Coastguard Worker   unsigned n;  // number of bits used in encoding. 5 for base32, 6 for base64
111*cf5a6c84SAndroid Build Coastguard Worker   unsigned align;  // number of bits to align to
112*cf5a6c84SAndroid Build Coastguard Worker };
113*cf5a6c84SAndroid Build Coastguard Worker 
114*cf5a6c84SAndroid Build Coastguard Worker struct blkdiscard_data {
115*cf5a6c84SAndroid Build Coastguard Worker   long o, l;
116*cf5a6c84SAndroid Build Coastguard Worker };
117*cf5a6c84SAndroid Build Coastguard Worker 
118*cf5a6c84SAndroid Build Coastguard Worker struct blkid_data {
119*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *s;
120*cf5a6c84SAndroid Build Coastguard Worker   char *o;
121*cf5a6c84SAndroid Build Coastguard Worker };
122*cf5a6c84SAndroid Build Coastguard Worker 
123*cf5a6c84SAndroid Build Coastguard Worker struct blockdev_data {
124*cf5a6c84SAndroid Build Coastguard Worker   long setra, setbsz;
125*cf5a6c84SAndroid Build Coastguard Worker };
126*cf5a6c84SAndroid Build Coastguard Worker 
127*cf5a6c84SAndroid Build Coastguard Worker struct chrt_data {
128*cf5a6c84SAndroid Build Coastguard Worker   long p;
129*cf5a6c84SAndroid Build Coastguard Worker };
130*cf5a6c84SAndroid Build Coastguard Worker 
131*cf5a6c84SAndroid Build Coastguard Worker struct devmem_data {
132*cf5a6c84SAndroid Build Coastguard Worker   char *f;
133*cf5a6c84SAndroid Build Coastguard Worker };
134*cf5a6c84SAndroid Build Coastguard Worker 
135*cf5a6c84SAndroid Build Coastguard Worker struct dos2unix_data {
136*cf5a6c84SAndroid Build Coastguard Worker   char *tempfile;
137*cf5a6c84SAndroid Build Coastguard Worker };
138*cf5a6c84SAndroid Build Coastguard Worker 
139*cf5a6c84SAndroid Build Coastguard Worker struct fallocate_data {
140*cf5a6c84SAndroid Build Coastguard Worker   long o, l;
141*cf5a6c84SAndroid Build Coastguard Worker };
142*cf5a6c84SAndroid Build Coastguard Worker 
143*cf5a6c84SAndroid Build Coastguard Worker struct fmt_data {
144*cf5a6c84SAndroid Build Coastguard Worker   long width;
145*cf5a6c84SAndroid Build Coastguard Worker 
146*cf5a6c84SAndroid Build Coastguard Worker   int level, pos;
147*cf5a6c84SAndroid Build Coastguard Worker };
148*cf5a6c84SAndroid Build Coastguard Worker 
149*cf5a6c84SAndroid Build Coastguard Worker struct free_data {
150*cf5a6c84SAndroid Build Coastguard Worker   unsigned bits;
151*cf5a6c84SAndroid Build Coastguard Worker   unsigned long long units;
152*cf5a6c84SAndroid Build Coastguard Worker   char *buf;
153*cf5a6c84SAndroid Build Coastguard Worker };
154*cf5a6c84SAndroid Build Coastguard Worker 
155*cf5a6c84SAndroid Build Coastguard Worker struct getopt_data {
156*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *l;
157*cf5a6c84SAndroid Build Coastguard Worker   char *o, *n;
158*cf5a6c84SAndroid Build Coastguard Worker };
159*cf5a6c84SAndroid Build Coastguard Worker 
160*cf5a6c84SAndroid Build Coastguard Worker struct gpiodetect_data {
161*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *chips;
162*cf5a6c84SAndroid Build Coastguard Worker   int chip_count;
163*cf5a6c84SAndroid Build Coastguard Worker };
164*cf5a6c84SAndroid Build Coastguard Worker 
165*cf5a6c84SAndroid Build Coastguard Worker struct hwclock_data {
166*cf5a6c84SAndroid Build Coastguard Worker   char *f;
167*cf5a6c84SAndroid Build Coastguard Worker };
168*cf5a6c84SAndroid Build Coastguard Worker 
169*cf5a6c84SAndroid Build Coastguard Worker struct i2cdetect_data {
170*cf5a6c84SAndroid Build Coastguard Worker   long F;
171*cf5a6c84SAndroid Build Coastguard Worker };
172*cf5a6c84SAndroid Build Coastguard Worker 
173*cf5a6c84SAndroid Build Coastguard Worker struct ionice_data {
174*cf5a6c84SAndroid Build Coastguard Worker   long p, n, c;
175*cf5a6c84SAndroid Build Coastguard Worker };
176*cf5a6c84SAndroid Build Coastguard Worker 
177*cf5a6c84SAndroid Build Coastguard Worker struct losetup_data {
178*cf5a6c84SAndroid Build Coastguard Worker   char *j;
179*cf5a6c84SAndroid Build Coastguard Worker   long o, S;
180*cf5a6c84SAndroid Build Coastguard Worker 
181*cf5a6c84SAndroid Build Coastguard Worker   int openflags;
182*cf5a6c84SAndroid Build Coastguard Worker   dev_t jdev;
183*cf5a6c84SAndroid Build Coastguard Worker   ino_t jino;
184*cf5a6c84SAndroid Build Coastguard Worker   char *dir;
185*cf5a6c84SAndroid Build Coastguard Worker };
186*cf5a6c84SAndroid Build Coastguard Worker 
187*cf5a6c84SAndroid Build Coastguard Worker struct lsattr_data {
188*cf5a6c84SAndroid Build Coastguard Worker   long v, p;
189*cf5a6c84SAndroid Build Coastguard Worker 
190*cf5a6c84SAndroid Build Coastguard Worker   unsigned add, rm, set;
191*cf5a6c84SAndroid Build Coastguard Worker   // !add and !rm tell us whether they were used, but `chattr =` is meaningful.
192*cf5a6c84SAndroid Build Coastguard Worker   int have_set;
193*cf5a6c84SAndroid Build Coastguard Worker };
194*cf5a6c84SAndroid Build Coastguard Worker 
195*cf5a6c84SAndroid Build Coastguard Worker struct lsusb_data {
196*cf5a6c84SAndroid Build Coastguard Worker   char *i;
197*cf5a6c84SAndroid Build Coastguard Worker   long x, n;
198*cf5a6c84SAndroid Build Coastguard Worker 
199*cf5a6c84SAndroid Build Coastguard Worker   void *ids, *class;
200*cf5a6c84SAndroid Build Coastguard Worker   int count;
201*cf5a6c84SAndroid Build Coastguard Worker };
202*cf5a6c84SAndroid Build Coastguard Worker 
203*cf5a6c84SAndroid Build Coastguard Worker struct makedevs_data {
204*cf5a6c84SAndroid Build Coastguard Worker   char *d;
205*cf5a6c84SAndroid Build Coastguard Worker };
206*cf5a6c84SAndroid Build Coastguard Worker 
207*cf5a6c84SAndroid Build Coastguard Worker struct mkswap_data {
208*cf5a6c84SAndroid Build Coastguard Worker   char *L;
209*cf5a6c84SAndroid Build Coastguard Worker };
210*cf5a6c84SAndroid Build Coastguard Worker 
211*cf5a6c84SAndroid Build Coastguard Worker struct modinfo_data {
212*cf5a6c84SAndroid Build Coastguard Worker   char *F, *k, *b;
213*cf5a6c84SAndroid Build Coastguard Worker 
214*cf5a6c84SAndroid Build Coastguard Worker   long mod;
215*cf5a6c84SAndroid Build Coastguard Worker   int count;
216*cf5a6c84SAndroid Build Coastguard Worker };
217*cf5a6c84SAndroid Build Coastguard Worker 
218*cf5a6c84SAndroid Build Coastguard Worker struct nbd_client_data {
219*cf5a6c84SAndroid Build Coastguard Worker   long b;
220*cf5a6c84SAndroid Build Coastguard Worker 
221*cf5a6c84SAndroid Build Coastguard Worker   int nbd;
222*cf5a6c84SAndroid Build Coastguard Worker };
223*cf5a6c84SAndroid Build Coastguard Worker 
224*cf5a6c84SAndroid Build Coastguard Worker struct nsenter_data {
225*cf5a6c84SAndroid Build Coastguard Worker   char *UupnmiC[7];
226*cf5a6c84SAndroid Build Coastguard Worker   long t;
227*cf5a6c84SAndroid Build Coastguard Worker };
228*cf5a6c84SAndroid Build Coastguard Worker 
229*cf5a6c84SAndroid Build Coastguard Worker struct readelf_data {
230*cf5a6c84SAndroid Build Coastguard Worker   char *x, *p;
231*cf5a6c84SAndroid Build Coastguard Worker 
232*cf5a6c84SAndroid Build Coastguard Worker   char *elf, *shstrtab, *f;
233*cf5a6c84SAndroid Build Coastguard Worker   unsigned long long shoff, phoff, size, shstrtabsz;
234*cf5a6c84SAndroid Build Coastguard Worker   int bits, endian, shnum, shentsize, phentsize;
235*cf5a6c84SAndroid Build Coastguard Worker };
236*cf5a6c84SAndroid Build Coastguard Worker 
237*cf5a6c84SAndroid Build Coastguard Worker struct realpath_data {
238*cf5a6c84SAndroid Build Coastguard Worker   char *R, *relative_base;
239*cf5a6c84SAndroid Build Coastguard Worker };
240*cf5a6c84SAndroid Build Coastguard Worker 
241*cf5a6c84SAndroid Build Coastguard Worker struct rtcwake_data {
242*cf5a6c84SAndroid Build Coastguard Worker   long t, s;
243*cf5a6c84SAndroid Build Coastguard Worker   char *m, *d;
244*cf5a6c84SAndroid Build Coastguard Worker };
245*cf5a6c84SAndroid Build Coastguard Worker 
246*cf5a6c84SAndroid Build Coastguard Worker struct setfattr_data {
247*cf5a6c84SAndroid Build Coastguard Worker   char *x, *v, *n;
248*cf5a6c84SAndroid Build Coastguard Worker };
249*cf5a6c84SAndroid Build Coastguard Worker 
250*cf5a6c84SAndroid Build Coastguard Worker struct setsid_data {
251*cf5a6c84SAndroid Build Coastguard Worker   long c;
252*cf5a6c84SAndroid Build Coastguard Worker };
253*cf5a6c84SAndroid Build Coastguard Worker 
254*cf5a6c84SAndroid Build Coastguard Worker struct stat_data {
255*cf5a6c84SAndroid Build Coastguard Worker   char *c;
256*cf5a6c84SAndroid Build Coastguard Worker 
257*cf5a6c84SAndroid Build Coastguard Worker   union {
258*cf5a6c84SAndroid Build Coastguard Worker     struct stat st;
259*cf5a6c84SAndroid Build Coastguard Worker     struct statfs sf;
260*cf5a6c84SAndroid Build Coastguard Worker   } stat;
261*cf5a6c84SAndroid Build Coastguard Worker   char *file, *pattern;
262*cf5a6c84SAndroid Build Coastguard Worker   int patlen;
263*cf5a6c84SAndroid Build Coastguard Worker };
264*cf5a6c84SAndroid Build Coastguard Worker 
265*cf5a6c84SAndroid Build Coastguard Worker struct swapon_data {
266*cf5a6c84SAndroid Build Coastguard Worker   long p;
267*cf5a6c84SAndroid Build Coastguard Worker };
268*cf5a6c84SAndroid Build Coastguard Worker 
269*cf5a6c84SAndroid Build Coastguard Worker struct tac_data {
270*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *dl;
271*cf5a6c84SAndroid Build Coastguard Worker };
272*cf5a6c84SAndroid Build Coastguard Worker 
273*cf5a6c84SAndroid Build Coastguard Worker struct timeout_data {
274*cf5a6c84SAndroid Build Coastguard Worker   char *s, *k;
275*cf5a6c84SAndroid Build Coastguard Worker 
276*cf5a6c84SAndroid Build Coastguard Worker   struct pollfd pfd;
277*cf5a6c84SAndroid Build Coastguard Worker   sigjmp_buf sj;
278*cf5a6c84SAndroid Build Coastguard Worker   int fds[2], pid, rc;
279*cf5a6c84SAndroid Build Coastguard Worker };
280*cf5a6c84SAndroid Build Coastguard Worker 
281*cf5a6c84SAndroid Build Coastguard Worker struct truncate_data {
282*cf5a6c84SAndroid Build Coastguard Worker   char *s;
283*cf5a6c84SAndroid Build Coastguard Worker 
284*cf5a6c84SAndroid Build Coastguard Worker   long long size;
285*cf5a6c84SAndroid Build Coastguard Worker   int type;
286*cf5a6c84SAndroid Build Coastguard Worker };
287*cf5a6c84SAndroid Build Coastguard Worker 
288*cf5a6c84SAndroid Build Coastguard Worker struct uclampset_data {
289*cf5a6c84SAndroid Build Coastguard Worker   long M, m, p;
290*cf5a6c84SAndroid Build Coastguard Worker };
291*cf5a6c84SAndroid Build Coastguard Worker 
292*cf5a6c84SAndroid Build Coastguard Worker struct watch_data {
293*cf5a6c84SAndroid Build Coastguard Worker   int n;
294*cf5a6c84SAndroid Build Coastguard Worker 
295*cf5a6c84SAndroid Build Coastguard Worker   pid_t pid, oldpid;
296*cf5a6c84SAndroid Build Coastguard Worker };
297*cf5a6c84SAndroid Build Coastguard Worker 
298*cf5a6c84SAndroid Build Coastguard Worker struct xxd_data {
299*cf5a6c84SAndroid Build Coastguard Worker   long s, g, o, l, c;
300*cf5a6c84SAndroid Build Coastguard Worker };
301*cf5a6c84SAndroid Build Coastguard Worker 
302*cf5a6c84SAndroid Build Coastguard Worker struct brctl_data {
303*cf5a6c84SAndroid Build Coastguard Worker     int sockfd;
304*cf5a6c84SAndroid Build Coastguard Worker };
305*cf5a6c84SAndroid Build Coastguard Worker 
306*cf5a6c84SAndroid Build Coastguard Worker struct diff_data {
307*cf5a6c84SAndroid Build Coastguard Worker   long U;
308*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *L;
309*cf5a6c84SAndroid Build Coastguard Worker   char *F, *S, *new_line_format, *old_line_format, *unchanged_line_format;
310*cf5a6c84SAndroid Build Coastguard Worker 
311*cf5a6c84SAndroid Build Coastguard Worker   int dir_num, size, is_binary, is_symlink, differ, change, len[2], *offset[2];
312*cf5a6c84SAndroid Build Coastguard Worker   struct stat st[2];
313*cf5a6c84SAndroid Build Coastguard Worker   struct {
314*cf5a6c84SAndroid Build Coastguard Worker     char **list;
315*cf5a6c84SAndroid Build Coastguard Worker     int nr_elm;
316*cf5a6c84SAndroid Build Coastguard Worker   } dir[2];
317*cf5a6c84SAndroid Build Coastguard Worker   struct {
318*cf5a6c84SAndroid Build Coastguard Worker     FILE *fp;
319*cf5a6c84SAndroid Build Coastguard Worker     int len;
320*cf5a6c84SAndroid Build Coastguard Worker   } file[2];
321*cf5a6c84SAndroid Build Coastguard Worker   struct {
322*cf5a6c84SAndroid Build Coastguard Worker     char *name;
323*cf5a6c84SAndroid Build Coastguard Worker     int len;
324*cf5a6c84SAndroid Build Coastguard Worker   } link[2];
325*cf5a6c84SAndroid Build Coastguard Worker };
326*cf5a6c84SAndroid Build Coastguard Worker 
327*cf5a6c84SAndroid Build Coastguard Worker struct expr_data {
328*cf5a6c84SAndroid Build Coastguard Worker   char **tok, *delete;
329*cf5a6c84SAndroid Build Coastguard Worker };
330*cf5a6c84SAndroid Build Coastguard Worker 
331*cf5a6c84SAndroid Build Coastguard Worker struct getfattr_data {
332*cf5a6c84SAndroid Build Coastguard Worker   char *n;
333*cf5a6c84SAndroid Build Coastguard Worker };
334*cf5a6c84SAndroid Build Coastguard Worker 
335*cf5a6c84SAndroid Build Coastguard Worker struct lsof_data {
336*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *p;
337*cf5a6c84SAndroid Build Coastguard Worker 
338*cf5a6c84SAndroid Build Coastguard Worker   struct stat *sought_files;
339*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *all_sockets, *files;
340*cf5a6c84SAndroid Build Coastguard Worker   int last_shown_pid, shown_header;
341*cf5a6c84SAndroid Build Coastguard Worker };
342*cf5a6c84SAndroid Build Coastguard Worker 
343*cf5a6c84SAndroid Build Coastguard Worker struct modprobe_data {
344*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *dirs;
345*cf5a6c84SAndroid Build Coastguard Worker 
346*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *probes, *dbase[256];
347*cf5a6c84SAndroid Build Coastguard Worker   char *cmdopts;
348*cf5a6c84SAndroid Build Coastguard Worker   int nudeps, symreq;
349*cf5a6c84SAndroid Build Coastguard Worker };
350*cf5a6c84SAndroid Build Coastguard Worker 
351*cf5a6c84SAndroid Build Coastguard Worker struct more_data {
352*cf5a6c84SAndroid Build Coastguard Worker   struct termios inf;
353*cf5a6c84SAndroid Build Coastguard Worker   int cin_fd;
354*cf5a6c84SAndroid Build Coastguard Worker };
355*cf5a6c84SAndroid Build Coastguard Worker 
356*cf5a6c84SAndroid Build Coastguard Worker struct stty_data {
357*cf5a6c84SAndroid Build Coastguard Worker   char *F;
358*cf5a6c84SAndroid Build Coastguard Worker 
359*cf5a6c84SAndroid Build Coastguard Worker   int fd, col;
360*cf5a6c84SAndroid Build Coastguard Worker   unsigned output_cols;
361*cf5a6c84SAndroid Build Coastguard Worker };
362*cf5a6c84SAndroid Build Coastguard Worker 
363*cf5a6c84SAndroid Build Coastguard Worker struct tr_data {
364*cf5a6c84SAndroid Build Coastguard Worker   short *map;
365*cf5a6c84SAndroid Build Coastguard Worker   int len1, len2;
366*cf5a6c84SAndroid Build Coastguard Worker };
367*cf5a6c84SAndroid Build Coastguard Worker 
368*cf5a6c84SAndroid Build Coastguard Worker struct traceroute_data {
369*cf5a6c84SAndroid Build Coastguard Worker   long max_ttl;
370*cf5a6c84SAndroid Build Coastguard Worker   long port;
371*cf5a6c84SAndroid Build Coastguard Worker   long ttl_probes;
372*cf5a6c84SAndroid Build Coastguard Worker   char *src_ip;
373*cf5a6c84SAndroid Build Coastguard Worker   long tos;
374*cf5a6c84SAndroid Build Coastguard Worker   long wait_time;
375*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *loose_source;
376*cf5a6c84SAndroid Build Coastguard Worker   long pause_time;
377*cf5a6c84SAndroid Build Coastguard Worker   long first_ttl;
378*cf5a6c84SAndroid Build Coastguard Worker   char *iface;
379*cf5a6c84SAndroid Build Coastguard Worker 
380*cf5a6c84SAndroid Build Coastguard Worker   uint32_t gw_list[9];
381*cf5a6c84SAndroid Build Coastguard Worker   int recv_sock;
382*cf5a6c84SAndroid Build Coastguard Worker   int snd_sock;
383*cf5a6c84SAndroid Build Coastguard Worker   unsigned msg_len;
384*cf5a6c84SAndroid Build Coastguard Worker   char *packet;
385*cf5a6c84SAndroid Build Coastguard Worker   uint32_t ident;
386*cf5a6c84SAndroid Build Coastguard Worker   int istraceroute6;
387*cf5a6c84SAndroid Build Coastguard Worker };
388*cf5a6c84SAndroid Build Coastguard Worker 
389*cf5a6c84SAndroid Build Coastguard Worker struct vi_data {
390*cf5a6c84SAndroid Build Coastguard Worker   char *c, *s;
391*cf5a6c84SAndroid Build Coastguard Worker 
392*cf5a6c84SAndroid Build Coastguard Worker   char *filename;
393*cf5a6c84SAndroid Build Coastguard Worker   int vi_mode, tabstop, list, cur_col, cur_row, scr_row, drawn_row, drawn_col,
394*cf5a6c84SAndroid Build Coastguard Worker       count0, count1, vi_mov_flag;
395*cf5a6c84SAndroid Build Coastguard Worker   unsigned screen_height, screen_width;
396*cf5a6c84SAndroid Build Coastguard Worker   char vi_reg, *last_search;
397*cf5a6c84SAndroid Build Coastguard Worker   struct str_line {
398*cf5a6c84SAndroid Build Coastguard Worker     int alloc, len;
399*cf5a6c84SAndroid Build Coastguard Worker     char *data;
400*cf5a6c84SAndroid Build Coastguard Worker   } *il;
401*cf5a6c84SAndroid Build Coastguard Worker   size_t screen, cursor; //offsets
402*cf5a6c84SAndroid Build Coastguard Worker   //yank buffer
403*cf5a6c84SAndroid Build Coastguard Worker   struct yank_buf {
404*cf5a6c84SAndroid Build Coastguard Worker     char reg;
405*cf5a6c84SAndroid Build Coastguard Worker     int alloc;
406*cf5a6c84SAndroid Build Coastguard Worker     char *data;
407*cf5a6c84SAndroid Build Coastguard Worker   } yank;
408*cf5a6c84SAndroid Build Coastguard Worker 
409*cf5a6c84SAndroid Build Coastguard Worker   size_t filesize;
410*cf5a6c84SAndroid Build Coastguard Worker // mem_block contains RO data that is either original file as mmap
411*cf5a6c84SAndroid Build Coastguard Worker // or heap allocated inserted data
412*cf5a6c84SAndroid Build Coastguard Worker   struct block_list {
413*cf5a6c84SAndroid Build Coastguard Worker     struct block_list *next, *prev;
414*cf5a6c84SAndroid Build Coastguard Worker     struct mem_block {
415*cf5a6c84SAndroid Build Coastguard Worker       size_t size, len;
416*cf5a6c84SAndroid Build Coastguard Worker       enum alloc_flag {
417*cf5a6c84SAndroid Build Coastguard Worker         MMAP,  //can be munmap() before exit()
418*cf5a6c84SAndroid Build Coastguard Worker         HEAP,  //can be free() before exit()
419*cf5a6c84SAndroid Build Coastguard Worker         STACK, //global or stack perhaps toybuf
420*cf5a6c84SAndroid Build Coastguard Worker       } alloc;
421*cf5a6c84SAndroid Build Coastguard Worker       const char *data;
422*cf5a6c84SAndroid Build Coastguard Worker     } *node;
423*cf5a6c84SAndroid Build Coastguard Worker   } *text;
424*cf5a6c84SAndroid Build Coastguard Worker 
425*cf5a6c84SAndroid Build Coastguard Worker // slices do not contain actual allocated data but slices of data in mem_block
426*cf5a6c84SAndroid Build Coastguard Worker // when file is first opened it has only one slice.
427*cf5a6c84SAndroid Build Coastguard Worker // after inserting data into middle new mem_block is allocated for insert data
428*cf5a6c84SAndroid Build Coastguard Worker // and 3 slices are created, where first and last slice are pointing to original
429*cf5a6c84SAndroid Build Coastguard Worker // mem_block with offsets, and middle slice is pointing to newly allocated block
430*cf5a6c84SAndroid Build Coastguard Worker // When deleting, data is not freed but mem_blocks are sliced more such way that
431*cf5a6c84SAndroid Build Coastguard Worker // deleted data left between 2 slices
432*cf5a6c84SAndroid Build Coastguard Worker   struct slice_list {
433*cf5a6c84SAndroid Build Coastguard Worker     struct slice_list *next, *prev;
434*cf5a6c84SAndroid Build Coastguard Worker     struct slice {
435*cf5a6c84SAndroid Build Coastguard Worker       size_t len;
436*cf5a6c84SAndroid Build Coastguard Worker       const char *data;
437*cf5a6c84SAndroid Build Coastguard Worker     } *node;
438*cf5a6c84SAndroid Build Coastguard Worker   } *slices;
439*cf5a6c84SAndroid Build Coastguard Worker };
440*cf5a6c84SAndroid Build Coastguard Worker 
441*cf5a6c84SAndroid Build Coastguard Worker struct basename_data {
442*cf5a6c84SAndroid Build Coastguard Worker   char *s;
443*cf5a6c84SAndroid Build Coastguard Worker };
444*cf5a6c84SAndroid Build Coastguard Worker 
445*cf5a6c84SAndroid Build Coastguard Worker struct cal_data {
446*cf5a6c84SAndroid Build Coastguard Worker   struct tm *now;
447*cf5a6c84SAndroid Build Coastguard Worker };
448*cf5a6c84SAndroid Build Coastguard Worker 
449*cf5a6c84SAndroid Build Coastguard Worker struct chgrp_data {
450*cf5a6c84SAndroid Build Coastguard Worker   uid_t owner;
451*cf5a6c84SAndroid Build Coastguard Worker   gid_t group;
452*cf5a6c84SAndroid Build Coastguard Worker   char *owner_name, *group_name;
453*cf5a6c84SAndroid Build Coastguard Worker   int symfollow;
454*cf5a6c84SAndroid Build Coastguard Worker };
455*cf5a6c84SAndroid Build Coastguard Worker 
456*cf5a6c84SAndroid Build Coastguard Worker struct chmod_data {
457*cf5a6c84SAndroid Build Coastguard Worker   char *mode;
458*cf5a6c84SAndroid Build Coastguard Worker };
459*cf5a6c84SAndroid Build Coastguard Worker 
460*cf5a6c84SAndroid Build Coastguard Worker struct cmp_data {
461*cf5a6c84SAndroid Build Coastguard Worker   long n;
462*cf5a6c84SAndroid Build Coastguard Worker 
463*cf5a6c84SAndroid Build Coastguard Worker   int fd;
464*cf5a6c84SAndroid Build Coastguard Worker   char *name;
465*cf5a6c84SAndroid Build Coastguard Worker };
466*cf5a6c84SAndroid Build Coastguard Worker 
467*cf5a6c84SAndroid Build Coastguard Worker struct cp_data {
468*cf5a6c84SAndroid Build Coastguard Worker   union {
469*cf5a6c84SAndroid Build Coastguard Worker     // install's options
470*cf5a6c84SAndroid Build Coastguard Worker     struct {
471*cf5a6c84SAndroid Build Coastguard Worker       char *g, *o, *m, *t;
472*cf5a6c84SAndroid Build Coastguard Worker     } i;
473*cf5a6c84SAndroid Build Coastguard Worker     // cp's options
474*cf5a6c84SAndroid Build Coastguard Worker     struct {
475*cf5a6c84SAndroid Build Coastguard Worker       char *t, *preserve;
476*cf5a6c84SAndroid Build Coastguard Worker     } c;
477*cf5a6c84SAndroid Build Coastguard Worker   };
478*cf5a6c84SAndroid Build Coastguard Worker 
479*cf5a6c84SAndroid Build Coastguard Worker   char *destname;
480*cf5a6c84SAndroid Build Coastguard Worker   struct stat top;
481*cf5a6c84SAndroid Build Coastguard Worker   int (*callback)(struct dirtree *try);
482*cf5a6c84SAndroid Build Coastguard Worker   uid_t uid;
483*cf5a6c84SAndroid Build Coastguard Worker   gid_t gid;
484*cf5a6c84SAndroid Build Coastguard Worker   int pflags;
485*cf5a6c84SAndroid Build Coastguard Worker };
486*cf5a6c84SAndroid Build Coastguard Worker 
487*cf5a6c84SAndroid Build Coastguard Worker struct cpio_data {
488*cf5a6c84SAndroid Build Coastguard Worker   char *F, *H, *R;
489*cf5a6c84SAndroid Build Coastguard Worker };
490*cf5a6c84SAndroid Build Coastguard Worker 
491*cf5a6c84SAndroid Build Coastguard Worker struct cut_data {
492*cf5a6c84SAndroid Build Coastguard Worker   char *d, *O;
493*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *select[5]; // we treat them the same, so loop through
494*cf5a6c84SAndroid Build Coastguard Worker 
495*cf5a6c84SAndroid Build Coastguard Worker   unsigned line;
496*cf5a6c84SAndroid Build Coastguard Worker   int pairs;
497*cf5a6c84SAndroid Build Coastguard Worker   regex_t reg;
498*cf5a6c84SAndroid Build Coastguard Worker };
499*cf5a6c84SAndroid Build Coastguard Worker 
500*cf5a6c84SAndroid Build Coastguard Worker struct date_data {
501*cf5a6c84SAndroid Build Coastguard Worker   char *s, *r, *I, *D, *d;
502*cf5a6c84SAndroid Build Coastguard Worker 
503*cf5a6c84SAndroid Build Coastguard Worker   unsigned nano;
504*cf5a6c84SAndroid Build Coastguard Worker };
505*cf5a6c84SAndroid Build Coastguard Worker 
506*cf5a6c84SAndroid Build Coastguard Worker struct dd_data {
507*cf5a6c84SAndroid Build Coastguard Worker   // Display fields
508*cf5a6c84SAndroid Build Coastguard Worker   int show_xfer, show_records;
509*cf5a6c84SAndroid Build Coastguard Worker   unsigned long long bytes, in_full, in_part, out_full, out_part, start;
510*cf5a6c84SAndroid Build Coastguard Worker };
511*cf5a6c84SAndroid Build Coastguard Worker 
512*cf5a6c84SAndroid Build Coastguard Worker struct df_data {
513*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *t;
514*cf5a6c84SAndroid Build Coastguard Worker 
515*cf5a6c84SAndroid Build Coastguard Worker   int units, width[6];
516*cf5a6c84SAndroid Build Coastguard Worker };
517*cf5a6c84SAndroid Build Coastguard Worker 
518*cf5a6c84SAndroid Build Coastguard Worker struct du_data {
519*cf5a6c84SAndroid Build Coastguard Worker   long d;
520*cf5a6c84SAndroid Build Coastguard Worker 
521*cf5a6c84SAndroid Build Coastguard Worker   unsigned long depth, total;
522*cf5a6c84SAndroid Build Coastguard Worker   dev_t st_dev;
523*cf5a6c84SAndroid Build Coastguard Worker   void *inodes;
524*cf5a6c84SAndroid Build Coastguard Worker };
525*cf5a6c84SAndroid Build Coastguard Worker 
526*cf5a6c84SAndroid Build Coastguard Worker struct env_data {
527*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *u;
528*cf5a6c84SAndroid Build Coastguard Worker   char *e;
529*cf5a6c84SAndroid Build Coastguard Worker };
530*cf5a6c84SAndroid Build Coastguard Worker 
531*cf5a6c84SAndroid Build Coastguard Worker struct expand_data {
532*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *t;
533*cf5a6c84SAndroid Build Coastguard Worker 
534*cf5a6c84SAndroid Build Coastguard Worker   unsigned tabcount, *tab;
535*cf5a6c84SAndroid Build Coastguard Worker };
536*cf5a6c84SAndroid Build Coastguard Worker 
537*cf5a6c84SAndroid Build Coastguard Worker struct file_data {
538*cf5a6c84SAndroid Build Coastguard Worker   int max_name_len;
539*cf5a6c84SAndroid Build Coastguard Worker   off_t len;
540*cf5a6c84SAndroid Build Coastguard Worker };
541*cf5a6c84SAndroid Build Coastguard Worker 
542*cf5a6c84SAndroid Build Coastguard Worker struct find_data {
543*cf5a6c84SAndroid Build Coastguard Worker   char **filter;
544*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *argdata;
545*cf5a6c84SAndroid Build Coastguard Worker   int topdir, xdev, depth;
546*cf5a6c84SAndroid Build Coastguard Worker   time_t now;
547*cf5a6c84SAndroid Build Coastguard Worker   long max_bytes;
548*cf5a6c84SAndroid Build Coastguard Worker   char *start;
549*cf5a6c84SAndroid Build Coastguard Worker };
550*cf5a6c84SAndroid Build Coastguard Worker 
551*cf5a6c84SAndroid Build Coastguard Worker struct grep_data {
552*cf5a6c84SAndroid Build Coastguard Worker   long m, A, B, C;
553*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *f, *e, *M, *S, *exclude_dir;
554*cf5a6c84SAndroid Build Coastguard Worker   char *color;
555*cf5a6c84SAndroid Build Coastguard Worker 
556*cf5a6c84SAndroid Build Coastguard Worker   char *purple, *cyan, *red, *green, *grey;
557*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *reg;
558*cf5a6c84SAndroid Build Coastguard Worker   int found, tried, delim;
559*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list **fixed;
560*cf5a6c84SAndroid Build Coastguard Worker };
561*cf5a6c84SAndroid Build Coastguard Worker 
562*cf5a6c84SAndroid Build Coastguard Worker struct head_data {
563*cf5a6c84SAndroid Build Coastguard Worker   long c, n;
564*cf5a6c84SAndroid Build Coastguard Worker 
565*cf5a6c84SAndroid Build Coastguard Worker   int file_no;
566*cf5a6c84SAndroid Build Coastguard Worker };
567*cf5a6c84SAndroid Build Coastguard Worker 
568*cf5a6c84SAndroid Build Coastguard Worker struct iconv_data {
569*cf5a6c84SAndroid Build Coastguard Worker   char *f, *t;
570*cf5a6c84SAndroid Build Coastguard Worker 
571*cf5a6c84SAndroid Build Coastguard Worker   void *ic;
572*cf5a6c84SAndroid Build Coastguard Worker };
573*cf5a6c84SAndroid Build Coastguard Worker 
574*cf5a6c84SAndroid Build Coastguard Worker struct id_data {
575*cf5a6c84SAndroid Build Coastguard Worker   int is_groups;
576*cf5a6c84SAndroid Build Coastguard Worker };
577*cf5a6c84SAndroid Build Coastguard Worker 
578*cf5a6c84SAndroid Build Coastguard Worker struct kill_data {
579*cf5a6c84SAndroid Build Coastguard Worker   char *s;
580*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *o;
581*cf5a6c84SAndroid Build Coastguard Worker };
582*cf5a6c84SAndroid Build Coastguard Worker 
583*cf5a6c84SAndroid Build Coastguard Worker struct ln_data {
584*cf5a6c84SAndroid Build Coastguard Worker   char *t;
585*cf5a6c84SAndroid Build Coastguard Worker };
586*cf5a6c84SAndroid Build Coastguard Worker 
587*cf5a6c84SAndroid Build Coastguard Worker struct logger_data {
588*cf5a6c84SAndroid Build Coastguard Worker   char *p, *t;
589*cf5a6c84SAndroid Build Coastguard Worker 
590*cf5a6c84SAndroid Build Coastguard Worker   int priority;
591*cf5a6c84SAndroid Build Coastguard Worker };
592*cf5a6c84SAndroid Build Coastguard Worker 
593*cf5a6c84SAndroid Build Coastguard Worker struct ls_data {
594*cf5a6c84SAndroid Build Coastguard Worker   long w, l, block_size;
595*cf5a6c84SAndroid Build Coastguard Worker   char *color, *sort;
596*cf5a6c84SAndroid Build Coastguard Worker 
597*cf5a6c84SAndroid Build Coastguard Worker   struct dirtree *files, *singledir;
598*cf5a6c84SAndroid Build Coastguard Worker   unsigned screen_width;
599*cf5a6c84SAndroid Build Coastguard Worker   int nl_title;
600*cf5a6c84SAndroid Build Coastguard Worker   char *escmore;
601*cf5a6c84SAndroid Build Coastguard Worker };
602*cf5a6c84SAndroid Build Coastguard Worker 
603*cf5a6c84SAndroid Build Coastguard Worker struct mkdir_data {
604*cf5a6c84SAndroid Build Coastguard Worker   char *m, *Z;
605*cf5a6c84SAndroid Build Coastguard Worker };
606*cf5a6c84SAndroid Build Coastguard Worker 
607*cf5a6c84SAndroid Build Coastguard Worker struct mkfifo_data {
608*cf5a6c84SAndroid Build Coastguard Worker   char *m, *Z;
609*cf5a6c84SAndroid Build Coastguard Worker 
610*cf5a6c84SAndroid Build Coastguard Worker   mode_t mode;
611*cf5a6c84SAndroid Build Coastguard Worker };
612*cf5a6c84SAndroid Build Coastguard Worker 
613*cf5a6c84SAndroid Build Coastguard Worker struct nice_data {
614*cf5a6c84SAndroid Build Coastguard Worker   long n;
615*cf5a6c84SAndroid Build Coastguard Worker };
616*cf5a6c84SAndroid Build Coastguard Worker 
617*cf5a6c84SAndroid Build Coastguard Worker struct nl_data {
618*cf5a6c84SAndroid Build Coastguard Worker   char *s, *n, *b;
619*cf5a6c84SAndroid Build Coastguard Worker   long w, l, v;
620*cf5a6c84SAndroid Build Coastguard Worker 
621*cf5a6c84SAndroid Build Coastguard Worker   // Count of consecutive blank lines for -l has to persist between files
622*cf5a6c84SAndroid Build Coastguard Worker   long lcount, slen;
623*cf5a6c84SAndroid Build Coastguard Worker };
624*cf5a6c84SAndroid Build Coastguard Worker 
625*cf5a6c84SAndroid Build Coastguard Worker struct od_data {
626*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *t;
627*cf5a6c84SAndroid Build Coastguard Worker   char *A;
628*cf5a6c84SAndroid Build Coastguard Worker   long N, w, j;
629*cf5a6c84SAndroid Build Coastguard Worker 
630*cf5a6c84SAndroid Build Coastguard Worker   int address_idx;
631*cf5a6c84SAndroid Build Coastguard Worker   unsigned types, leftover, star;
632*cf5a6c84SAndroid Build Coastguard Worker   char *buf; // Points to buffers[0] or buffers[1].
633*cf5a6c84SAndroid Build Coastguard Worker   char *bufs[2]; // Used to detect duplicate lines.
634*cf5a6c84SAndroid Build Coastguard Worker   off_t pos;
635*cf5a6c84SAndroid Build Coastguard Worker };
636*cf5a6c84SAndroid Build Coastguard Worker 
637*cf5a6c84SAndroid Build Coastguard Worker struct paste_data {
638*cf5a6c84SAndroid Build Coastguard Worker   char *d;
639*cf5a6c84SAndroid Build Coastguard Worker 
640*cf5a6c84SAndroid Build Coastguard Worker   int files;
641*cf5a6c84SAndroid Build Coastguard Worker };
642*cf5a6c84SAndroid Build Coastguard Worker 
643*cf5a6c84SAndroid Build Coastguard Worker struct patch_data {
644*cf5a6c84SAndroid Build Coastguard Worker   char *i, *d;
645*cf5a6c84SAndroid Build Coastguard Worker   long v, p, g, F;
646*cf5a6c84SAndroid Build Coastguard Worker 
647*cf5a6c84SAndroid Build Coastguard Worker   void *current_hunk;
648*cf5a6c84SAndroid Build Coastguard Worker   long oldline, oldlen, newline, newlen, linenum, outnum;
649*cf5a6c84SAndroid Build Coastguard Worker   int context, state, filein, fileout, filepatch, hunknum;
650*cf5a6c84SAndroid Build Coastguard Worker   char *tempname;
651*cf5a6c84SAndroid Build Coastguard Worker };
652*cf5a6c84SAndroid Build Coastguard Worker 
653*cf5a6c84SAndroid Build Coastguard Worker struct ps_data {
654*cf5a6c84SAndroid Build Coastguard Worker   union {
655*cf5a6c84SAndroid Build Coastguard Worker     struct {
656*cf5a6c84SAndroid Build Coastguard Worker       struct arg_list *G, *g, *U, *u, *t, *s, *p, *O, *o, *P, *k;
657*cf5a6c84SAndroid Build Coastguard Worker     } ps;
658*cf5a6c84SAndroid Build Coastguard Worker     struct {
659*cf5a6c84SAndroid Build Coastguard Worker       long n, m, d, s;
660*cf5a6c84SAndroid Build Coastguard Worker       struct arg_list *u, *p, *o, *k, *O;
661*cf5a6c84SAndroid Build Coastguard Worker     } top;
662*cf5a6c84SAndroid Build Coastguard Worker     struct {
663*cf5a6c84SAndroid Build Coastguard Worker       char *L;
664*cf5a6c84SAndroid Build Coastguard Worker       struct arg_list *G, *g, *P, *s, *t, *U, *u;
665*cf5a6c84SAndroid Build Coastguard Worker       char *d;
666*cf5a6c84SAndroid Build Coastguard Worker 
667*cf5a6c84SAndroid Build Coastguard Worker       void *regexes, *snapshot;
668*cf5a6c84SAndroid Build Coastguard Worker       int signal;
669*cf5a6c84SAndroid Build Coastguard Worker       pid_t self, match;
670*cf5a6c84SAndroid Build Coastguard Worker     } pgrep;
671*cf5a6c84SAndroid Build Coastguard Worker   };
672*cf5a6c84SAndroid Build Coastguard Worker 
673*cf5a6c84SAndroid Build Coastguard Worker   struct ps_ptr_len {
674*cf5a6c84SAndroid Build Coastguard Worker     void *ptr;
675*cf5a6c84SAndroid Build Coastguard Worker     long len;
676*cf5a6c84SAndroid Build Coastguard Worker   } gg, GG, pp, PP, ss, tt, uu, UU;
677*cf5a6c84SAndroid Build Coastguard Worker   struct dirtree *threadparent;
678*cf5a6c84SAndroid Build Coastguard Worker   unsigned width, height, scroll;
679*cf5a6c84SAndroid Build Coastguard Worker   dev_t tty;
680*cf5a6c84SAndroid Build Coastguard Worker   void *fields, *kfields;
681*cf5a6c84SAndroid Build Coastguard Worker   long long ticks, bits, time;
682*cf5a6c84SAndroid Build Coastguard Worker   int kcount, forcek, sortpos, pidlen;
683*cf5a6c84SAndroid Build Coastguard Worker   int (*match_process)(long long *slot);
684*cf5a6c84SAndroid Build Coastguard Worker   void (*show_process)(void *tb);
685*cf5a6c84SAndroid Build Coastguard Worker };
686*cf5a6c84SAndroid Build Coastguard Worker 
687*cf5a6c84SAndroid Build Coastguard Worker struct renice_data {
688*cf5a6c84SAndroid Build Coastguard Worker   long n;
689*cf5a6c84SAndroid Build Coastguard Worker };
690*cf5a6c84SAndroid Build Coastguard Worker 
691*cf5a6c84SAndroid Build Coastguard Worker struct sed_data {
692*cf5a6c84SAndroid Build Coastguard Worker   char *i;
693*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *f, *e;
694*cf5a6c84SAndroid Build Coastguard Worker 
695*cf5a6c84SAndroid Build Coastguard Worker   // processed pattern list
696*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *pattern;
697*cf5a6c84SAndroid Build Coastguard Worker 
698*cf5a6c84SAndroid Build Coastguard Worker   char *nextline, *remember, *tarxform;
699*cf5a6c84SAndroid Build Coastguard Worker   void *restart, *lastregex;
700*cf5a6c84SAndroid Build Coastguard Worker   long nextlen, rememberlen, count;
701*cf5a6c84SAndroid Build Coastguard Worker   int fdout, noeol;
702*cf5a6c84SAndroid Build Coastguard Worker   unsigned xx, tarxlen, xflags;
703*cf5a6c84SAndroid Build Coastguard Worker   char delim, xftype;
704*cf5a6c84SAndroid Build Coastguard Worker };
705*cf5a6c84SAndroid Build Coastguard Worker 
706*cf5a6c84SAndroid Build Coastguard Worker struct sort_data {
707*cf5a6c84SAndroid Build Coastguard Worker   char *t;
708*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *k;
709*cf5a6c84SAndroid Build Coastguard Worker   char *o, *T, S;
710*cf5a6c84SAndroid Build Coastguard Worker 
711*cf5a6c84SAndroid Build Coastguard Worker   void *key_list;
712*cf5a6c84SAndroid Build Coastguard Worker   unsigned linecount;
713*cf5a6c84SAndroid Build Coastguard Worker   char **lines, *name;
714*cf5a6c84SAndroid Build Coastguard Worker };
715*cf5a6c84SAndroid Build Coastguard Worker 
716*cf5a6c84SAndroid Build Coastguard Worker struct split_data {
717*cf5a6c84SAndroid Build Coastguard Worker   long n, l, b, a;
718*cf5a6c84SAndroid Build Coastguard Worker 
719*cf5a6c84SAndroid Build Coastguard Worker   char *outfile;
720*cf5a6c84SAndroid Build Coastguard Worker };
721*cf5a6c84SAndroid Build Coastguard Worker 
722*cf5a6c84SAndroid Build Coastguard Worker struct strings_data {
723*cf5a6c84SAndroid Build Coastguard Worker   long n;
724*cf5a6c84SAndroid Build Coastguard Worker   char *t;
725*cf5a6c84SAndroid Build Coastguard Worker };
726*cf5a6c84SAndroid Build Coastguard Worker 
727*cf5a6c84SAndroid Build Coastguard Worker struct tail_data {
728*cf5a6c84SAndroid Build Coastguard Worker   long n, c;
729*cf5a6c84SAndroid Build Coastguard Worker   char *s;
730*cf5a6c84SAndroid Build Coastguard Worker 
731*cf5a6c84SAndroid Build Coastguard Worker   int file_no, last_fd, ss;
732*cf5a6c84SAndroid Build Coastguard Worker   struct xnotify *not;
733*cf5a6c84SAndroid Build Coastguard Worker   struct {
734*cf5a6c84SAndroid Build Coastguard Worker     char *path;
735*cf5a6c84SAndroid Build Coastguard Worker     int fd;
736*cf5a6c84SAndroid Build Coastguard Worker     struct dev_ino di;
737*cf5a6c84SAndroid Build Coastguard Worker   } *F;
738*cf5a6c84SAndroid Build Coastguard Worker };
739*cf5a6c84SAndroid Build Coastguard Worker 
740*cf5a6c84SAndroid Build Coastguard Worker struct tar_data {
741*cf5a6c84SAndroid Build Coastguard Worker   char *f, *C, *I;
742*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *T, *X, *xform;
743*cf5a6c84SAndroid Build Coastguard Worker   long strip;
744*cf5a6c84SAndroid Build Coastguard Worker   char *to_command, *owner, *group, *mtime, *mode, *sort;
745*cf5a6c84SAndroid Build Coastguard Worker   struct arg_list *exclude;
746*cf5a6c84SAndroid Build Coastguard Worker 
747*cf5a6c84SAndroid Build Coastguard Worker   struct double_list *incl, *excl, *seen;
748*cf5a6c84SAndroid Build Coastguard Worker   struct string_list *dirs;
749*cf5a6c84SAndroid Build Coastguard Worker   char *cwd, **xfsed;
750*cf5a6c84SAndroid Build Coastguard Worker   int fd, ouid, ggid, hlc, warn, sparselen, pid, xfpipe[2];
751*cf5a6c84SAndroid Build Coastguard Worker   struct dev_ino archive_di;
752*cf5a6c84SAndroid Build Coastguard Worker   long long *sparse;
753*cf5a6c84SAndroid Build Coastguard Worker   time_t mtt;
754*cf5a6c84SAndroid Build Coastguard Worker 
755*cf5a6c84SAndroid Build Coastguard Worker   // hardlinks seen so far (hlc many)
756*cf5a6c84SAndroid Build Coastguard Worker   struct {
757*cf5a6c84SAndroid Build Coastguard Worker     char *arg;
758*cf5a6c84SAndroid Build Coastguard Worker     struct dev_ino di;
759*cf5a6c84SAndroid Build Coastguard Worker   } *hlx;
760*cf5a6c84SAndroid Build Coastguard Worker 
761*cf5a6c84SAndroid Build Coastguard Worker   // Parsed information about a tar header.
762*cf5a6c84SAndroid Build Coastguard Worker   struct tar_header {
763*cf5a6c84SAndroid Build Coastguard Worker     char *name, *link_target, *uname, *gname;
764*cf5a6c84SAndroid Build Coastguard Worker     long long size, ssize, oldsparse;
765*cf5a6c84SAndroid Build Coastguard Worker     uid_t uid;
766*cf5a6c84SAndroid Build Coastguard Worker     gid_t gid;
767*cf5a6c84SAndroid Build Coastguard Worker     mode_t mode;
768*cf5a6c84SAndroid Build Coastguard Worker     time_t mtime;
769*cf5a6c84SAndroid Build Coastguard Worker     dev_t device;
770*cf5a6c84SAndroid Build Coastguard Worker   } hdr;
771*cf5a6c84SAndroid Build Coastguard Worker };
772*cf5a6c84SAndroid Build Coastguard Worker 
773*cf5a6c84SAndroid Build Coastguard Worker struct tee_data {
774*cf5a6c84SAndroid Build Coastguard Worker   void *outputs;
775*cf5a6c84SAndroid Build Coastguard Worker   int out;
776*cf5a6c84SAndroid Build Coastguard Worker };
777*cf5a6c84SAndroid Build Coastguard Worker 
778*cf5a6c84SAndroid Build Coastguard Worker struct touch_data {
779*cf5a6c84SAndroid Build Coastguard Worker   char *t, *r, *d;
780*cf5a6c84SAndroid Build Coastguard Worker };
781*cf5a6c84SAndroid Build Coastguard Worker 
782*cf5a6c84SAndroid Build Coastguard Worker struct ulimit_data {
783*cf5a6c84SAndroid Build Coastguard Worker   long P;
784*cf5a6c84SAndroid Build Coastguard Worker };
785*cf5a6c84SAndroid Build Coastguard Worker 
786*cf5a6c84SAndroid Build Coastguard Worker struct uniq_data {
787*cf5a6c84SAndroid Build Coastguard Worker   long w, s, f;
788*cf5a6c84SAndroid Build Coastguard Worker 
789*cf5a6c84SAndroid Build Coastguard Worker   long repeats;
790*cf5a6c84SAndroid Build Coastguard Worker };
791*cf5a6c84SAndroid Build Coastguard Worker 
792*cf5a6c84SAndroid Build Coastguard Worker struct uudecode_data {
793*cf5a6c84SAndroid Build Coastguard Worker   char *o;
794*cf5a6c84SAndroid Build Coastguard Worker };
795*cf5a6c84SAndroid Build Coastguard Worker 
796*cf5a6c84SAndroid Build Coastguard Worker struct wc_data {
797*cf5a6c84SAndroid Build Coastguard Worker   unsigned long totals[5];
798*cf5a6c84SAndroid Build Coastguard Worker };
799*cf5a6c84SAndroid Build Coastguard Worker 
800*cf5a6c84SAndroid Build Coastguard Worker struct xargs_data {
801*cf5a6c84SAndroid Build Coastguard Worker   long s, n, P;
802*cf5a6c84SAndroid Build Coastguard Worker   char *E;
803*cf5a6c84SAndroid Build Coastguard Worker 
804*cf5a6c84SAndroid Build Coastguard Worker   long entries, bytes, np;
805*cf5a6c84SAndroid Build Coastguard Worker   char delim;
806*cf5a6c84SAndroid Build Coastguard Worker   FILE *tty;
807*cf5a6c84SAndroid Build Coastguard Worker };
808*cf5a6c84SAndroid Build Coastguard Worker extern union global_union {
809*cf5a6c84SAndroid Build Coastguard Worker 	struct log_data log;
810*cf5a6c84SAndroid Build Coastguard Worker 	struct dmesg_data dmesg;
811*cf5a6c84SAndroid Build Coastguard Worker 	struct gzip_data gzip;
812*cf5a6c84SAndroid Build Coastguard Worker 	struct hostname_data hostname;
813*cf5a6c84SAndroid Build Coastguard Worker 	struct killall_data killall;
814*cf5a6c84SAndroid Build Coastguard Worker 	struct md5sum_data md5sum;
815*cf5a6c84SAndroid Build Coastguard Worker 	struct mknod_data mknod;
816*cf5a6c84SAndroid Build Coastguard Worker 	struct mktemp_data mktemp;
817*cf5a6c84SAndroid Build Coastguard Worker 	struct mount_data mount;
818*cf5a6c84SAndroid Build Coastguard Worker 	struct pidof_data pidof;
819*cf5a6c84SAndroid Build Coastguard Worker 	struct seq_data seq;
820*cf5a6c84SAndroid Build Coastguard Worker 	struct umount_data umount;
821*cf5a6c84SAndroid Build Coastguard Worker 	struct ifconfig_data ifconfig;
822*cf5a6c84SAndroid Build Coastguard Worker 	struct microcom_data microcom;
823*cf5a6c84SAndroid Build Coastguard Worker 	struct netcat_data netcat;
824*cf5a6c84SAndroid Build Coastguard Worker 	struct netstat_data netstat;
825*cf5a6c84SAndroid Build Coastguard Worker 	struct ping_data ping;
826*cf5a6c84SAndroid Build Coastguard Worker 	struct tunctl_data tunctl;
827*cf5a6c84SAndroid Build Coastguard Worker 	struct base64_data base64;
828*cf5a6c84SAndroid Build Coastguard Worker 	struct blkdiscard_data blkdiscard;
829*cf5a6c84SAndroid Build Coastguard Worker 	struct blkid_data blkid;
830*cf5a6c84SAndroid Build Coastguard Worker 	struct blockdev_data blockdev;
831*cf5a6c84SAndroid Build Coastguard Worker 	struct chrt_data chrt;
832*cf5a6c84SAndroid Build Coastguard Worker 	struct devmem_data devmem;
833*cf5a6c84SAndroid Build Coastguard Worker 	struct dos2unix_data dos2unix;
834*cf5a6c84SAndroid Build Coastguard Worker 	struct fallocate_data fallocate;
835*cf5a6c84SAndroid Build Coastguard Worker 	struct fmt_data fmt;
836*cf5a6c84SAndroid Build Coastguard Worker 	struct free_data free;
837*cf5a6c84SAndroid Build Coastguard Worker 	struct getopt_data getopt;
838*cf5a6c84SAndroid Build Coastguard Worker 	struct gpiodetect_data gpiodetect;
839*cf5a6c84SAndroid Build Coastguard Worker 	struct hwclock_data hwclock;
840*cf5a6c84SAndroid Build Coastguard Worker 	struct i2cdetect_data i2cdetect;
841*cf5a6c84SAndroid Build Coastguard Worker 	struct ionice_data ionice;
842*cf5a6c84SAndroid Build Coastguard Worker 	struct losetup_data losetup;
843*cf5a6c84SAndroid Build Coastguard Worker 	struct lsattr_data lsattr;
844*cf5a6c84SAndroid Build Coastguard Worker 	struct lsusb_data lsusb;
845*cf5a6c84SAndroid Build Coastguard Worker 	struct makedevs_data makedevs;
846*cf5a6c84SAndroid Build Coastguard Worker 	struct mkswap_data mkswap;
847*cf5a6c84SAndroid Build Coastguard Worker 	struct modinfo_data modinfo;
848*cf5a6c84SAndroid Build Coastguard Worker 	struct nbd_client_data nbd_client;
849*cf5a6c84SAndroid Build Coastguard Worker 	struct nsenter_data nsenter;
850*cf5a6c84SAndroid Build Coastguard Worker 	struct readelf_data readelf;
851*cf5a6c84SAndroid Build Coastguard Worker 	struct realpath_data realpath;
852*cf5a6c84SAndroid Build Coastguard Worker 	struct rtcwake_data rtcwake;
853*cf5a6c84SAndroid Build Coastguard Worker 	struct setfattr_data setfattr;
854*cf5a6c84SAndroid Build Coastguard Worker 	struct setsid_data setsid;
855*cf5a6c84SAndroid Build Coastguard Worker 	struct stat_data stat;
856*cf5a6c84SAndroid Build Coastguard Worker 	struct swapon_data swapon;
857*cf5a6c84SAndroid Build Coastguard Worker 	struct tac_data tac;
858*cf5a6c84SAndroid Build Coastguard Worker 	struct timeout_data timeout;
859*cf5a6c84SAndroid Build Coastguard Worker 	struct truncate_data truncate;
860*cf5a6c84SAndroid Build Coastguard Worker 	struct uclampset_data uclampset;
861*cf5a6c84SAndroid Build Coastguard Worker 	struct watch_data watch;
862*cf5a6c84SAndroid Build Coastguard Worker 	struct xxd_data xxd;
863*cf5a6c84SAndroid Build Coastguard Worker 	struct brctl_data brctl;
864*cf5a6c84SAndroid Build Coastguard Worker 	struct diff_data diff;
865*cf5a6c84SAndroid Build Coastguard Worker 	struct expr_data expr;
866*cf5a6c84SAndroid Build Coastguard Worker 	struct getfattr_data getfattr;
867*cf5a6c84SAndroid Build Coastguard Worker 	struct lsof_data lsof;
868*cf5a6c84SAndroid Build Coastguard Worker 	struct modprobe_data modprobe;
869*cf5a6c84SAndroid Build Coastguard Worker 	struct more_data more;
870*cf5a6c84SAndroid Build Coastguard Worker 	struct stty_data stty;
871*cf5a6c84SAndroid Build Coastguard Worker 	struct tr_data tr;
872*cf5a6c84SAndroid Build Coastguard Worker 	struct traceroute_data traceroute;
873*cf5a6c84SAndroid Build Coastguard Worker 	struct vi_data vi;
874*cf5a6c84SAndroid Build Coastguard Worker 	struct basename_data basename;
875*cf5a6c84SAndroid Build Coastguard Worker 	struct cal_data cal;
876*cf5a6c84SAndroid Build Coastguard Worker 	struct chgrp_data chgrp;
877*cf5a6c84SAndroid Build Coastguard Worker 	struct chmod_data chmod;
878*cf5a6c84SAndroid Build Coastguard Worker 	struct cmp_data cmp;
879*cf5a6c84SAndroid Build Coastguard Worker 	struct cp_data cp;
880*cf5a6c84SAndroid Build Coastguard Worker 	struct cpio_data cpio;
881*cf5a6c84SAndroid Build Coastguard Worker 	struct cut_data cut;
882*cf5a6c84SAndroid Build Coastguard Worker 	struct date_data date;
883*cf5a6c84SAndroid Build Coastguard Worker 	struct dd_data dd;
884*cf5a6c84SAndroid Build Coastguard Worker 	struct df_data df;
885*cf5a6c84SAndroid Build Coastguard Worker 	struct du_data du;
886*cf5a6c84SAndroid Build Coastguard Worker 	struct env_data env;
887*cf5a6c84SAndroid Build Coastguard Worker 	struct expand_data expand;
888*cf5a6c84SAndroid Build Coastguard Worker 	struct file_data file;
889*cf5a6c84SAndroid Build Coastguard Worker 	struct find_data find;
890*cf5a6c84SAndroid Build Coastguard Worker 	struct grep_data grep;
891*cf5a6c84SAndroid Build Coastguard Worker 	struct head_data head;
892*cf5a6c84SAndroid Build Coastguard Worker 	struct iconv_data iconv;
893*cf5a6c84SAndroid Build Coastguard Worker 	struct id_data id;
894*cf5a6c84SAndroid Build Coastguard Worker 	struct kill_data kill;
895*cf5a6c84SAndroid Build Coastguard Worker 	struct ln_data ln;
896*cf5a6c84SAndroid Build Coastguard Worker 	struct logger_data logger;
897*cf5a6c84SAndroid Build Coastguard Worker 	struct ls_data ls;
898*cf5a6c84SAndroid Build Coastguard Worker 	struct mkdir_data mkdir;
899*cf5a6c84SAndroid Build Coastguard Worker 	struct mkfifo_data mkfifo;
900*cf5a6c84SAndroid Build Coastguard Worker 	struct nice_data nice;
901*cf5a6c84SAndroid Build Coastguard Worker 	struct nl_data nl;
902*cf5a6c84SAndroid Build Coastguard Worker 	struct od_data od;
903*cf5a6c84SAndroid Build Coastguard Worker 	struct paste_data paste;
904*cf5a6c84SAndroid Build Coastguard Worker 	struct patch_data patch;
905*cf5a6c84SAndroid Build Coastguard Worker 	struct ps_data ps;
906*cf5a6c84SAndroid Build Coastguard Worker 	struct renice_data renice;
907*cf5a6c84SAndroid Build Coastguard Worker 	struct sed_data sed;
908*cf5a6c84SAndroid Build Coastguard Worker 	struct sort_data sort;
909*cf5a6c84SAndroid Build Coastguard Worker 	struct split_data split;
910*cf5a6c84SAndroid Build Coastguard Worker 	struct strings_data strings;
911*cf5a6c84SAndroid Build Coastguard Worker 	struct tail_data tail;
912*cf5a6c84SAndroid Build Coastguard Worker 	struct tar_data tar;
913*cf5a6c84SAndroid Build Coastguard Worker 	struct tee_data tee;
914*cf5a6c84SAndroid Build Coastguard Worker 	struct touch_data touch;
915*cf5a6c84SAndroid Build Coastguard Worker 	struct ulimit_data ulimit;
916*cf5a6c84SAndroid Build Coastguard Worker 	struct uniq_data uniq;
917*cf5a6c84SAndroid Build Coastguard Worker 	struct uudecode_data uudecode;
918*cf5a6c84SAndroid Build Coastguard Worker 	struct wc_data wc;
919*cf5a6c84SAndroid Build Coastguard Worker 	struct xargs_data xargs;
920*cf5a6c84SAndroid Build Coastguard Worker } this;
921