• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // toys/android/log.c
2 
3 struct log_data {
4   char *t, *p;
5 };
6 
7 // toys/example/demo_number.c
8 
9 struct demo_number_data {
10   long D;
11 };
12 
13 // toys/example/hello.c
14 
15 struct hello_data {
16   int unused;
17 };
18 
19 // toys/example/skeleton.c
20 
21 struct skeleton_data {
22   union {
23     struct {
24       char *b;
25       long c;
26       struct arg_list *d;
27       long e;
28       char *also, *blubber;
29     } s;
30     struct {
31       long b;
32     } a;
33   };
34 
35   int more_globals;
36 };
37 
38 // toys/lsb/dmesg.c
39 
40 struct dmesg_data {
41   long n, s;
42 
43   int use_color;
44   time_t tea;
45 };
46 
47 // toys/lsb/gzip.c
48 
49 struct gzip_data {
50   int level;
51 };
52 
53 // toys/lsb/hostname.c
54 
55 struct hostname_data {
56   char *F;
57 };
58 
59 // toys/lsb/killall.c
60 
61 struct killall_data {
62   char *s;
63 
64   int signum;
65   pid_t cur_pid;
66   char **names;
67   short *err;
68   struct int_list { struct int_list *next; int val; } *pids;
69 };
70 
71 // toys/lsb/md5sum.c
72 
73 struct md5sum_data {
74   int sawline;
75 
76   // Crypto variables blanked after summing
77   unsigned state[5];
78   unsigned oldstate[5];
79   uint64_t count;
80   union {
81     char c[64];
82     unsigned i[16];
83   } buffer;
84 };
85 
86 // toys/lsb/mknod.c
87 
88 struct mknod_data {
89   char *Z, *m;
90 };
91 
92 // toys/lsb/mktemp.c
93 
94 struct mktemp_data {
95   char *p, *tmpdir;
96 };
97 
98 // toys/lsb/mount.c
99 
100 struct mount_data {
101   struct arg_list *optlist;
102   char *type;
103   char *bigO;
104 
105   unsigned long flags;
106   char *opts;
107   int okuser;
108 };
109 
110 // toys/lsb/passwd.c
111 
112 struct passwd_data {
113   char *a;
114 };
115 
116 // toys/lsb/pidof.c
117 
118 struct pidof_data {
119   char *o;
120 };
121 
122 // toys/lsb/seq.c
123 
124 struct seq_data {
125   char *s, *f;
126 
127   int precision;
128 };
129 
130 // toys/lsb/su.c
131 #ifdef OHOS_LITE
132 struct su_data {
133   char *s;
134   char *c;
135 };
136 #endif
137 
138 // toys/lsb/umount.c
139 
140 struct umount_data {
141   struct arg_list *t;
142 
143   char *types;
144 };
145 
146 // toys/net/ftpget.c
147 
148 struct ftpget_data {
149   char *u, *p, *P;
150 
151   int fd;
152 };
153 
154 // toys/net/ifconfig.c
155 
156 struct ifconfig_data {
157   int sockfd;
158 };
159 
160 // toys/net/microcom.c
161 
162 struct microcom_data {
163   char *s;
164 
165   int fd;
166   struct termios original_stdin_state, original_fd_state;
167 };
168 
169 // toys/net/netcat.c
170 
171 struct netcat_data {
172   char *f, *s;
173   long q, p, W, w;
174 };
175 
176 // toys/net/netstat.c
177 
178 struct netstat_data {
179   struct num_cache *inodes;
180   int wpad;
181 };;
182 
183 // toys/net/ping.c
184 
185 struct ping_data {
186   char *I;
187   long w, W, i, s, c, t, m;
188 
189   struct sockaddr *sa;
190   int sock;
191   unsigned long sent, recv, fugit, min, max;
192 };
193 
194 // toys/net/sntp.c
195 
196 struct sntp_data {
197   long r;
198   char *p, *m, *M;
199 };
200 
201 // toys/net/tunctl.c
202 
203 struct tunctl_data {
204   char *u;
205 };
206 
207 // toys/other/acpi.c
208 
209 struct acpi_data {
210   int ac, bat, therm, cool;
211   char *cpath;
212 };
213 
214 // toys/other/base64.c
215 
216 struct base64_data {
217   long w;
218   unsigned total;
219   unsigned n;  // number of bits used in encoding. 5 for base32, 6 for base64
220   unsigned align;  // number of bits to align to
221 };
222 
223 // toys/other/blkid.c
224 
225 struct blkid_data {
226   struct arg_list *s;
227 };
228 
229 // toys/other/blockdev.c
230 
231 struct blockdev_data {
232   long setbsz, setra;
233 };
234 
235 // toys/other/chrt.c
236 
237 struct chrt_data {
238   long p;
239 };
240 
241 // toys/other/dos2unix.c
242 
243 struct dos2unix_data {
244   char *tempfile;
245 };
246 
247 // toys/other/fallocate.c
248 
249 struct fallocate_data {
250   long o, l;
251 };
252 
253 // toys/other/fmt.c
254 
255 struct fmt_data {
256   int width;
257 
258   int level, pos;
259 };
260 
261 // toys/other/free.c
262 
263 struct free_data {
264   unsigned bits;
265   unsigned long long units;
266   char *buf;
267 };
268 
269 // toys/other/hexedit.c
270 
271 struct hexedit_data {
272   char *data;
273   long long len, base;
274   int numlen, undo, undolen;
275   unsigned height;
276 };
277 
278 // toys/other/hwclock.c
279 
280 struct hwclock_data {
281   char *f;
282 
283   int utc;
284 };
285 
286 // toys/other/ionice.c
287 
288 struct ionice_data {
289   long p, n, c;
290 };
291 
292 // toys/other/login.c
293 
294 struct login_data {
295   char *h, *f;
296 
297   int login_timeout, login_fail_timeout;
298 };
299 
300 // toys/other/losetup.c
301 
302 struct losetup_data {
303   char *j;
304   long o, S;
305 
306   int openflags;
307   dev_t jdev;
308   ino_t jino;
309   char *dir;
310 };
311 
312 // toys/other/lspci.c
313 
314 struct lspci_data {
315   char *i;
316   long n;
317 
318   FILE *db;
319 };
320 
321 // toys/other/makedevs.c
322 
323 struct makedevs_data {
324   char *d;
325 };
326 
327 // toys/other/mix.c
328 
329 struct mix_data {
330    long r, l;
331    char *d, *c;
332 };
333 
334 // toys/other/mkpasswd.c
335 
336 struct mkpasswd_data {
337   long P;
338   char *m, *S;
339 };
340 
341 // toys/other/mkswap.c
342 
343 struct mkswap_data {
344   char *L;
345 };
346 
347 // toys/other/modinfo.c
348 
349 struct modinfo_data {
350   char *F, *k, *b;
351 
352   long mod;
353   int count;
354 };
355 
356 // toys/other/nsenter.c
357 
358 struct nsenter_data {
359   char *Uupnmi[6];
360   long t;
361 };
362 
363 // toys/other/oneit.c
364 
365 struct oneit_data {
366   char *c;
367 };
368 
369 // toys/other/pwgen.c
370 
371 struct pwgen_data {
372   char *r;
373 };
374 
375 // toys/other/reboot.c
376 
377 struct reboot_data {
378   char *d;
379 };
380 
381 // toys/other/setfattr.c
382 
383 struct setfattr_data {
384   char *x, *v, *n;
385 };
386 
387 // toys/other/sha3sum.c
388 
389 struct sha3sum_data {
390   long a;
391   unsigned long long rc[24];
392 };
393 
394 // toys/other/shred.c
395 
396 struct shred_data {
397   long o, n, s;
398 };
399 
400 // toys/other/stat.c
401 
402 struct stat_data {
403   char *c;
404 
405   union {
406     struct stat st;
407     struct statfs sf;
408   } stat;
409   char *file, *pattern;
410   int patlen;
411 };
412 
413 // toys/other/swapon.c
414 
415 struct swapon_data {
416   long p;
417 };
418 
419 // toys/other/switch_root.c
420 
421 struct switch_root_data {
422   char *c;
423 
424   dev_t rootdev;
425 };
426 
427 // toys/other/tac.c
428 
429 struct tac_data {
430   struct double_list *dl;
431 };
432 
433 // toys/other/timeout.c
434 
435 struct timeout_data {
436   char *s, *k;
437 
438   int nextsig;
439   pid_t pid;
440   struct timeval ktv;
441   struct itimerval itv;
442 };
443 
444 // toys/other/truncate.c
445 
446 struct truncate_data {
447   char *s;
448 
449   long size;
450   int type;
451 };
452 
453 // toys/other/watch.c
454 
455 struct watch_data {
456   int n;
457 
458   pid_t pid, oldpid;
459 };
460 
461 // toys/other/xxd.c
462 
463 struct xxd_data {
464   long s, g, o, l, c;
465 };
466 
467 // toys/pending/arp.c
468 
469 struct arp_data {
470     char *hw_type;
471     char *af_type_A;
472     char *af_type_p;
473     char *interface;
474 
475     int sockfd;
476     char *device;
477 };
478 
479 // toys/pending/arping.c
480 
481 struct arping_data {
482     long count;
483     unsigned long time_out;
484     char *iface;
485     char *src_ip;
486 
487     int sockfd;
488     unsigned long start, end;
489     unsigned sent_at, sent_nr, rcvd_nr, brd_sent, rcvd_req, brd_rcv,
490              unicast_flag;
491 };
492 
493 // toys/pending/bc.c
494 
495 struct bc_data {
496   // This actually needs to be a BcVm*, but the toybox build
497   // system complains if I make it so. Instead, we'll just cast.
498   char *vm;
499 
500   size_t nchars;
501   char *file, sig, max_ibase;
502   uint16_t line_len;
503 };
504 
505 // toys/pending/bootchartd.c
506 
507 struct bootchartd_data {
508   char timestamp[32];
509   long msec;
510   int proc_accounting;
511 
512   pid_t pid;
513 };
514 
515 // toys/pending/brctl.c
516 
517 struct brctl_data {
518     int sockfd;
519 };
520 
521 // toys/pending/chsh.c
522 
523 struct chsh_data {
524   char *s;
525 };
526 
527 // toys/pending/crond.c
528 
529 struct crond_data {
530   char *crontabs_dir;
531   char *logfile;
532   int loglevel_d;
533   int loglevel;
534 
535   time_t crontabs_dir_mtime;
536   uint8_t flagd;
537 };
538 
539 // toys/pending/crontab.c
540 
541 struct crontab_data {
542   char *user;
543   char *cdir;
544 };
545 
546 // toys/pending/dd.c
547 
548 struct dd_data {
549   int show_xfer, show_records;
550   unsigned long long bytes, c_count, in_full, in_part, out_full, out_part;
551   struct timeval start;
552   struct {
553     char *name;
554     int fd;
555     unsigned char *buff, *bp;
556     long sz, count;
557     unsigned long long offset;
558   } in, out;
559   unsigned conv, iflag, oflag;
560 };
561 
562 // toys/pending/dhcp.c
563 
564 struct dhcp_data {
565     char *iface;
566     char *pidfile;
567     char *script;
568     long retries;
569     long timeout;
570     long tryagain;
571     struct arg_list *req_opt;
572     char *req_ip;
573     struct arg_list *pkt_opt;
574     char *fdn_name;
575     char *hostname;
576     char *vendor_cls;
577 };
578 
579 // toys/pending/dhcp6.c
580 
581 struct dhcp6_data {
582   char *interface_name, *pidfile, *script;
583   long retry, timeout, errortimeout;
584   char *req_ip;
585   int length, state, request_length, sock, sock1, status, retval, retries;
586   struct timeval tv;
587   uint8_t transction_id[3];
588   struct sockaddr_in6 input_socket6;
589 };
590 
591 // toys/pending/dhcpd.c
592 
593 struct dhcpd_data {
594     char *iface;
595     long port;
596 };
597 
598 // toys/pending/diff.c
599 
600 struct diff_data {
601   long ct;
602   char *start;
603   struct arg_list *L_list;
604 
605   int dir_num, size, is_binary, status, change, len[2];
606   int *offset[2];
607   struct stat st[2];
608 };
609 
610 // toys/pending/dumpleases.c
611 
612 struct dumpleases_data {
613     char *file;
614 };
615 
616 // toys/pending/expr.c
617 
618 struct expr_data {
619   char **tok; // current token, not on the stack since recursive calls mutate it
620 
621   char *refree;
622 };
623 
624 // toys/pending/fdisk.c
625 
626 struct fdisk_data {
627   long sect_sz;
628   long sectors;
629   long heads;
630   long cylinders;
631 };
632 
633 // toys/pending/fold.c
634 
635 struct fold_data {
636   int width;
637 };
638 
639 // toys/pending/fsck.c
640 
641 struct fsck_data {
642   int fd_num;
643   char *t_list;
644 
645   struct double_list *devices;
646   char *arr_flag;
647   char **arr_type;
648   int negate;
649   int sum_status;
650   int nr_run;
651   int sig_num;
652   long max_nr_run;
653 };
654 
655 // toys/pending/getfattr.c
656 
657 struct getfattr_data {
658   char *n;
659 };
660 
661 // toys/pending/getopt.c
662 
663 struct getopt_data {
664   struct arg_list *l;
665   char *o, *n;
666 };
667 
668 // toys/pending/getty.c
669 
670 struct getty_data {
671   char *issue_str;
672   char *login_str;
673   char *init_str;
674   char *host_str;
675   long timeout;
676 
677   char *tty_name;
678   int  speeds[20];
679   int  sc;
680   struct termios termios;
681   char buff[128];
682 };
683 
684 // toys/pending/groupadd.c
685 
686 struct groupadd_data {
687   long gid;
688 };
689 
690 // toys/pending/hexdump.c
691 
692 struct hexdump_data {
693     long s, n;
694 
695     long long len, pos, ppos;
696     const char *fmt;
697     unsigned int fn, bc;  // file number and byte count
698     char linebuf[16];  // line buffer - serves double duty for sqeezing repeat
699                        // lines and for accumulating full lines accross file
700                        // boundaries if necessesary.
701 };
702 
703 // toys/pending/host.c
704 
705 struct host_data {
706   char *type_str;
707 };
708 
709 // toys/pending/ip.c
710 
711 struct ip_data {
712   char stats, singleline, flush, *filter_dev, gbuf[8192];
713   int sockfd, connected, from_ok, route_cmd;
714   int8_t addressfamily, is_addr;
715 };
716 
717 // toys/pending/ipcrm.c
718 
719 struct ipcrm_data {
720   struct arg_list *qkey;
721   struct arg_list *qid;
722   struct arg_list *skey;
723   struct arg_list *sid;
724   struct arg_list *mkey;
725   struct arg_list *mid;
726 };
727 
728 // toys/pending/ipcs.c
729 
730 struct ipcs_data {
731   int id;
732 };
733 
734 // toys/pending/klogd.c
735 
736 struct klogd_data {
737   long level;
738 
739   int fd;
740 };
741 
742 // toys/pending/last.c
743 
744 struct last_data {
745   char *file;
746 
747   struct arg_list *list;
748 };
749 
750 // toys/pending/lsof.c
751 
752 struct lsof_data {
753   struct arg_list *p;
754 
755   struct stat *sought_files;
756   struct double_list *all_sockets, *files;
757   int last_shown_pid, shown_header;
758 };
759 
760 // toys/pending/man.c
761 
762 struct man_data {
763   char *M, *k;
764 
765   char any, cell, ex, *f, k_done, *line, *m, **sct, **scts, **sufs;
766   regex_t reg;
767 };
768 
769 // toys/pending/mke2fs.c
770 
771 struct mke2fs_data {
772   // Command line arguments.
773   long blocksize;
774   long bytes_per_inode;
775   long inodes;           // Total inodes in filesystem.
776   long reserved_percent; // Integer precent of space to reserve for root.
777   char *gendir;          // Where to read dirtree from.
778 
779   // Internal data.
780   struct dirtree *dt;    // Tree of files to copy into the new filesystem.
781   unsigned treeblocks;   // Blocks used by dt
782   unsigned treeinodes;   // Inodes used by dt
783 
784   unsigned blocks;       // Total blocks in the filesystem.
785   unsigned freeblocks;   // Free blocks in the filesystem.
786   unsigned inodespg;     // Inodes per group
787   unsigned groups;       // Total number of block groups.
788   unsigned blockbits;    // Bits per block.  (Also blocks per group.)
789 
790   // For gene2fs
791   unsigned nextblock;    // Next data block to allocate
792   unsigned nextgroup;    // Next group we'll be allocating from
793   int fsfd;              // File descriptor of filesystem (to output to).
794 };
795 
796 // toys/pending/modprobe.c
797 
798 struct modprobe_data {
799   struct arg_list *dirs;
800 
801   struct arg_list *probes;
802   struct arg_list *dbase[256];
803   char *cmdopts;
804   int nudeps;
805   uint8_t symreq;
806 };
807 
808 // toys/pending/more.c
809 
810 struct more_data {
811   struct termios inf;
812   int cin_fd;
813 };
814 
815 // toys/pending/openvt.c
816 
817 struct openvt_data {
818   long c;
819 };
820 
821 // toys/pending/route.c
822 
823 struct route_data {
824   char *family;
825 };
826 
827 // toys/pending/sh.c
828 
829 struct sh_data {
830   char *command;
831 
832   long lineno;
833 
834   struct double_list functions;
835   unsigned options;
836 
837   // Running jobs.
838   struct sh_job {
839     struct sh_job *next, *prev;
840     unsigned jobno;
841 
842     // Every pipeline has at least one set of arguments or it's Not A Thing
843     struct sh_arg {
844       char **v;
845       int c;
846     } pipeline;
847 
848     // null terminated array of running processes in pipeline
849     struct sh_process {
850       struct string_list *delete; // expanded strings
851       int pid, exit;   // status? Stopped? Exited?
852       struct sh_arg arg;
853     } *procs, *proc;
854   } *jobs, *job;
855   unsigned jobcnt;
856 };
857 
858 // toys/pending/strace.c
859 
860 struct strace_data {
861   long s, p;
862 
863   char ioctl[32], *fmt;
864   long regs[256/sizeof(long)], syscall;
865   pid_t pid;
866   int arg;
867 };
868 
869 // toys/pending/stty.c
870 
871 struct stty_data {
872   char *device;
873 
874   int fd, col;
875   unsigned output_cols;
876 };
877 
878 // toys/pending/sulogin.c
879 
880 struct sulogin_data {
881   long timeout;
882   struct termios crntio;
883 };
884 
885 // toys/pending/syslogd.c
886 
887 struct syslogd_data {
888   char *socket;
889   char *config_file;
890   char *unix_socket;
891   char *logfile;
892   long interval;
893   long rot_size;
894   long rot_count;
895   char *remote_log;
896   long log_prio;
897 
898   struct unsocks *lsocks;  // list of listen sockets
899   struct logfile *lfiles;  // list of write logfiles
900   int sigfd[2];
901 };
902 
903 // toys/pending/tcpsvd.c
904 
905 struct tcpsvd_data {
906   char *name;
907   char *user;
908   long bn;
909   char *nmsg;
910   long cn;
911 
912   int maxc;
913   int count_all;
914   int udp;
915 };
916 
917 // toys/pending/telnet.c
918 
919 struct telnet_data {
920   int port;
921   int sfd;
922   char buff[128];
923   int pbuff;
924   char iac[256];
925   int piac;
926   char *ttype;
927   struct termios def_term;
928   struct termios raw_term;
929   uint8_t term_ok;
930   uint8_t term_mode;
931   uint8_t flags;
932   unsigned win_width;
933   unsigned win_height;
934 };
935 
936 // toys/pending/telnetd.c
937 
938 struct telnetd_data {
939     char *login_path;
940     char *issue_path;
941     int port;
942     char *host_addr;
943     long w_sec;
944 
945     int gmax_fd;
946     pid_t fork_pid;
947 };
948 
949 // toys/pending/tftp.c
950 
951 struct tftp_data {
952   char *local_file;
953   char *remote_file;
954   long block_size;
955 
956   struct sockaddr_storage inaddr;
957   int af;
958 };
959 
960 // toys/pending/tftpd.c
961 
962 struct tftpd_data {
963   char *user;
964 
965   long sfd;
966   struct passwd *pw;
967 };
968 
969 // toys/pending/tr.c
970 
971 struct tr_data {
972   short map[256]; //map of chars
973   int len1, len2;
974 };
975 
976 // toys/pending/traceroute.c
977 
978 struct traceroute_data {
979   long max_ttl;
980   long port;
981   long ttl_probes;
982   char *src_ip;
983   long tos;
984   long wait_time;
985   struct arg_list *loose_source;
986   long pause_time;
987   long first_ttl;
988   char *iface;
989 
990   uint32_t gw_list[9];
991   int recv_sock;
992   int snd_sock;
993   unsigned msg_len;
994   char *packet;
995   uint32_t ident;
996   int istraceroute6;
997 };
998 
999 // toys/pending/useradd.c
1000 
1001 struct useradd_data {
1002   char *dir;
1003   char *gecos;
1004   char *shell;
1005   char *u_grp;
1006   long uid;
1007 
1008   long gid;
1009 };
1010 
1011 // toys/pending/vi.c
1012 
1013 struct vi_data {
1014     int cur_col;
1015     int cur_row;
1016     int scr_row;
1017     int drawn_row;
1018     int drawn_col;
1019     unsigned screen_height;
1020     unsigned screen_width;
1021     int vi_mode;
1022     int count0;
1023     int count1;
1024     int vi_mov_flag;
1025     int modified;
1026     char vi_reg;
1027     char *last_search;
1028     int tabstop;
1029     int list;
1030 };
1031 
1032 // toys/pending/wget.c
1033 
1034 struct wget_data {
1035   char *filename;
1036 };
1037 
1038 // toys/posix/basename.c
1039 
1040 struct basename_data {
1041   char *s;
1042 };
1043 
1044 // toys/posix/chgrp.c
1045 
1046 struct chgrp_data {
1047   uid_t owner;
1048   gid_t group;
1049   char *owner_name, *group_name;
1050   int symfollow;
1051 };
1052 
1053 // toys/posix/chmod.c
1054 
1055 struct chmod_data {
1056   char *mode;
1057 };
1058 
1059 // toys/posix/cksum.c
1060 
1061 struct cksum_data {
1062   unsigned crc_table[256];
1063 };
1064 
1065 // toys/posix/cmp.c
1066 
1067 struct cmp_data {
1068   int fd;
1069   char *name;
1070 };
1071 
1072 // toys/posix/cp.c
1073 
1074 struct cp_data {
1075   union {
1076     // install's options
1077     struct {
1078       char *g, *o, *m;
1079     } i;
1080     // cp's options
1081     struct {
1082       char *preserve;
1083     } c;
1084   };
1085 
1086   char *destname;
1087   struct stat top;
1088   int (*callback)(struct dirtree *try);
1089   uid_t uid;
1090   gid_t gid;
1091   int pflags;
1092 };
1093 
1094 // toys/posix/cpio.c
1095 
1096 struct cpio_data {
1097   char *F, *p, *H;
1098 };
1099 
1100 // toys/posix/cut.c
1101 
1102 struct cut_data {
1103   char *d, *O;
1104   struct arg_list *select[5]; // we treat them the same, so loop through
1105 
1106   int pairs;
1107   regex_t reg;
1108 };
1109 
1110 // toys/posix/date.c
1111 
1112 struct date_data {
1113   char *r, *D, *d;
1114 
1115   unsigned nano;
1116 };
1117 
1118 // toys/posix/df.c
1119 
1120 struct df_data {
1121   struct arg_list *t;
1122 
1123   long units;
1124   int column_widths[5];
1125   int header_shown;
1126 };
1127 
1128 // toys/posix/du.c
1129 
1130 struct du_data {
1131   long d;
1132 
1133   unsigned long depth, total;
1134   dev_t st_dev;
1135   void *inodes;
1136 };
1137 
1138 // toys/posix/env.c
1139 
1140 struct env_data {
1141   struct arg_list *u;
1142 };;
1143 
1144 // toys/posix/expand.c
1145 
1146 struct expand_data {
1147   struct arg_list *t;
1148 
1149   unsigned tabcount, *tab;
1150 };
1151 
1152 // toys/posix/file.c
1153 
1154 struct file_data {
1155   int max_name_len;
1156 
1157   off_t len;
1158 };
1159 
1160 // toys/posix/find.c
1161 
1162 struct find_data {
1163   char **filter;
1164   struct double_list *argdata;
1165   int topdir, xdev, depth;
1166   time_t now;
1167   long max_bytes;
1168   char *start;
1169 };
1170 
1171 // toys/posix/grep.c
1172 
1173 struct grep_data {
1174   long m, A, B, C;
1175   struct arg_list *f, *e, *M, *S, *exclude_dir;
1176   char *color;
1177 
1178   char *purple, *cyan, *red, *green, *grey;
1179   struct double_list *reg;
1180   char indelim, outdelim;
1181   int found, tried;
1182 };
1183 
1184 // toys/posix/head.c
1185 
1186 struct head_data {
1187   long c, n;
1188 
1189   int file_no;
1190 };
1191 
1192 // toys/posix/iconv.c
1193 
1194 struct iconv_data {
1195   char *f, *t;
1196 
1197   void *ic;
1198 };
1199 
1200 // toys/posix/id.c
1201 
1202 struct id_data {
1203   int is_groups;
1204 };
1205 
1206 // toys/posix/kill.c
1207 
1208 struct kill_data {
1209   char *s;
1210   struct arg_list *o;
1211 };
1212 
1213 // toys/posix/ln.c
1214 
1215 struct ln_data {
1216   char *t;
1217 };
1218 
1219 // toys/posix/logger.c
1220 
1221 struct logger_data {
1222   char *p, *t;
1223 };
1224 
1225 // toys/posix/ls.c
1226 
1227 struct ls_data {
1228   long l;
1229   char *color;
1230 
1231   struct dirtree *files, *singledir;
1232   unsigned screen_width;
1233   int nl_title;
1234   char *escmore;
1235 };
1236 
1237 // toys/posix/mkdir.c
1238 
1239 struct mkdir_data {
1240   char *m, *Z;
1241 };
1242 
1243 // toys/posix/mkfifo.c
1244 
1245 struct mkfifo_data {
1246   char *m;
1247   char *Z;
1248 
1249   mode_t mode;
1250 };
1251 
1252 // toys/posix/nice.c
1253 
1254 struct nice_data {
1255   long n;
1256 };
1257 
1258 // toys/posix/nl.c
1259 
1260 struct nl_data {
1261   char *s, *n, *b;
1262   long w, l, v;
1263 
1264   // Count of consecutive blank lines for -l has to persist between files
1265   long lcount;
1266   long slen;
1267 };
1268 
1269 // toys/posix/od.c
1270 
1271 struct od_data {
1272   struct arg_list *t;
1273   char *A;
1274   long N, w, j;
1275 
1276   int address_idx;
1277   unsigned types, leftover, star;
1278   char *buf; // Points to buffers[0] or buffers[1].
1279   char *bufs[2]; // Used to detect duplicate lines.
1280   off_t pos;
1281 };
1282 
1283 // toys/posix/paste.c
1284 
1285 struct paste_data {
1286   char *d;
1287 
1288   int files;
1289 };
1290 
1291 // toys/posix/patch.c
1292 
1293 struct patch_data {
1294   char *i, *d;
1295   long p, g;
1296 
1297   struct double_list *current_hunk;
1298   long oldline, oldlen, newline, newlen;
1299   long linenum;
1300   int context, state, filein, fileout, filepatch, hunknum;
1301   char *tempname;
1302 };
1303 
1304 // toys/posix/ps.c
1305 
1306 struct ps_data {
1307   union {
1308     struct {
1309       struct arg_list *G, *g, *U, *u, *t, *s, *p, *O, *o, *P, *k;
1310     } ps;
1311     struct {
1312       long n, m, d, s;
1313       struct arg_list *u, *p, *o, *k, *O;
1314     } top;
1315     struct {
1316       char *L;
1317       struct arg_list *G, *g, *P, *s, *t, *U, *u;
1318       char *d;
1319 
1320       void *regexes, *snapshot;
1321       int signal;
1322       pid_t self, match;
1323     } pgrep;
1324   };
1325 
1326   struct ptr_len gg, GG, pp, PP, ss, tt, uu, UU;
1327   struct dirtree *threadparent;
1328   unsigned width, height;
1329   dev_t tty;
1330   void *fields, *kfields;
1331   long long ticks, bits, time;
1332   int kcount, forcek, sortpos;
1333   int (*match_process)(long long *slot);
1334   void (*show_process)(void *tb);
1335 };
1336 
1337 // toys/posix/renice.c
1338 
1339 struct renice_data {
1340   long n;
1341 };
1342 
1343 // toys/posix/sed.c
1344 
1345 struct sed_data {
1346   char *i;
1347   struct arg_list *f, *e;
1348 
1349   // processed pattern list
1350   struct double_list *pattern;
1351 
1352   char *nextline, *remember;
1353   void *restart, *lastregex;
1354   long nextlen, rememberlen, count;
1355   int fdout, noeol;
1356   unsigned xx;
1357   char delim;
1358 };
1359 
1360 // toys/posix/sort.c
1361 
1362 struct sort_data {
1363   char *t;
1364   struct arg_list *k;
1365   char *o, *T, S;
1366 
1367   void *key_list;
1368   int linecount;
1369   char **lines, *name;
1370 };
1371 
1372 // toys/posix/split.c
1373 
1374 struct split_data {
1375   long n, l, b, a;
1376 
1377   char *outfile;
1378 };
1379 
1380 // toys/posix/strings.c
1381 
1382 struct strings_data {
1383   long n;
1384   char *t;
1385 };
1386 
1387 // toys/posix/tail.c
1388 
1389 struct tail_data {
1390   long n, c;
1391 
1392   int file_no, last_fd;
1393   struct xnotify *not;
1394 };
1395 
1396 // toys/posix/tar.c
1397 
1398 struct tar_data {
1399   char *f, *C;
1400   struct arg_list *T, *X;
1401   char *to_command, *owner, *group, *mtime, *mode;
1402   struct arg_list *exclude;
1403 
1404   struct double_list *incl, *excl, *seen;
1405   struct string_list *dirs;
1406   char *cwd;
1407   int fd, ouid, ggid, hlc, warn, adev, aino, sparselen;
1408   long long *sparse;
1409   time_t mtt;
1410 
1411   // hardlinks seen so far (hlc many)
1412   struct {
1413     char *arg;
1414     ino_t ino;
1415     dev_t dev;
1416   } *hlx;
1417 
1418   // Parsed information about a tar header.
1419   struct tar_header {
1420     char *name, *link_target, *uname, *gname;
1421     long long size, ssize;
1422     uid_t uid;
1423     gid_t gid;
1424     mode_t mode;
1425     time_t mtime;
1426     dev_t device;
1427   } hdr;
1428 };
1429 
1430 // toys/posix/tee.c
1431 
1432 struct tee_data {
1433   void *outputs;
1434   int out;
1435 };
1436 
1437 // toys/posix/touch.c
1438 
1439 struct touch_data {
1440   char *t, *r, *d;
1441 };
1442 
1443 // toys/posix/ulimit.c
1444 
1445 struct ulimit_data {
1446   long P;
1447 };
1448 
1449 // toys/posix/uniq.c
1450 
1451 struct uniq_data {
1452   long w, s, f;
1453 
1454   long repeats;
1455 };
1456 
1457 // toys/posix/uudecode.c
1458 
1459 struct uudecode_data {
1460   char *o;
1461 };
1462 
1463 // toys/posix/wc.c
1464 
1465 struct wc_data {
1466   unsigned long totals[4];
1467 };
1468 
1469 // toys/posix/xargs.c
1470 
1471 struct xargs_data {
1472   long s, n, P;
1473   char *E;
1474 
1475   long entries, bytes;
1476   char delim;
1477   FILE *tty;
1478 };
1479 
1480 extern union global_union {
1481 	struct log_data log;
1482 	struct demo_number_data demo_number;
1483 	struct hello_data hello;
1484 	struct skeleton_data skeleton;
1485 	struct dmesg_data dmesg;
1486 	struct gzip_data gzip;
1487 	struct hostname_data hostname;
1488 	struct killall_data killall;
1489 	struct md5sum_data md5sum;
1490 	struct mknod_data mknod;
1491 	struct mktemp_data mktemp;
1492 	struct mount_data mount;
1493 	struct passwd_data passwd;
1494 	struct pidof_data pidof;
1495 	struct seq_data seq;
1496 #ifdef OHOS_LITE
1497 	struct su_data su;
1498 #endif
1499 	struct umount_data umount;
1500 	struct ftpget_data ftpget;
1501 	struct ifconfig_data ifconfig;
1502 	struct microcom_data microcom;
1503 	struct netcat_data netcat;
1504 	struct netstat_data netstat;
1505 	struct ping_data ping;
1506 	struct sntp_data sntp;
1507 	struct tunctl_data tunctl;
1508 	struct acpi_data acpi;
1509 	struct base64_data base64;
1510 	struct blkid_data blkid;
1511 	struct blockdev_data blockdev;
1512 	struct chrt_data chrt;
1513 	struct dos2unix_data dos2unix;
1514 	struct fallocate_data fallocate;
1515 	struct fmt_data fmt;
1516 	struct free_data free;
1517 	struct hexedit_data hexedit;
1518 	struct hwclock_data hwclock;
1519 	struct ionice_data ionice;
1520 	struct login_data login;
1521 	struct losetup_data losetup;
1522 	struct lspci_data lspci;
1523 	struct makedevs_data makedevs;
1524 	struct mix_data mix;
1525 	struct mkpasswd_data mkpasswd;
1526 	struct mkswap_data mkswap;
1527 	struct modinfo_data modinfo;
1528 	struct nsenter_data nsenter;
1529 	struct oneit_data oneit;
1530 	struct pwgen_data pwgen;
1531 	struct reboot_data reboot;
1532 	struct setfattr_data setfattr;
1533 	struct sha3sum_data sha3sum;
1534 	struct shred_data shred;
1535 	struct stat_data stat;
1536 	struct swapon_data swapon;
1537 	struct switch_root_data switch_root;
1538 	struct tac_data tac;
1539 	struct timeout_data timeout;
1540 	struct truncate_data truncate;
1541 	struct watch_data watch;
1542 	struct xxd_data xxd;
1543 	struct arp_data arp;
1544 	struct arping_data arping;
1545 	struct bc_data bc;
1546 	struct bootchartd_data bootchartd;
1547 	struct brctl_data brctl;
1548 	struct chsh_data chsh;
1549 	struct crond_data crond;
1550 	struct crontab_data crontab;
1551 	struct dd_data dd;
1552 	struct dhcp_data dhcp;
1553 	struct dhcp6_data dhcp6;
1554 	struct dhcpd_data dhcpd;
1555 	struct diff_data diff;
1556 	struct dumpleases_data dumpleases;
1557 	struct expr_data expr;
1558 	struct fdisk_data fdisk;
1559 	struct fold_data fold;
1560 	struct fsck_data fsck;
1561 	struct getfattr_data getfattr;
1562 	struct getopt_data getopt;
1563 	struct getty_data getty;
1564 	struct groupadd_data groupadd;
1565 	struct hexdump_data hexdump;
1566 	struct host_data host;
1567 	struct ip_data ip;
1568 	struct ipcrm_data ipcrm;
1569 	struct ipcs_data ipcs;
1570 	struct klogd_data klogd;
1571 	struct last_data last;
1572 	struct lsof_data lsof;
1573 	struct man_data man;
1574 	struct mke2fs_data mke2fs;
1575 	struct modprobe_data modprobe;
1576 	struct more_data more;
1577 	struct openvt_data openvt;
1578 	struct route_data route;
1579 	struct sh_data sh;
1580 	struct strace_data strace;
1581 	struct stty_data stty;
1582 	struct sulogin_data sulogin;
1583 	struct syslogd_data syslogd;
1584 	struct tcpsvd_data tcpsvd;
1585 	struct telnet_data telnet;
1586 	struct telnetd_data telnetd;
1587 	struct tftp_data tftp;
1588 	struct tftpd_data tftpd;
1589 	struct tr_data tr;
1590 	struct traceroute_data traceroute;
1591 	struct useradd_data useradd;
1592 	struct vi_data vi;
1593 	struct wget_data wget;
1594 	struct basename_data basename;
1595 	struct chgrp_data chgrp;
1596 	struct chmod_data chmod;
1597 	struct cksum_data cksum;
1598 	struct cmp_data cmp;
1599 	struct cp_data cp;
1600 	struct cpio_data cpio;
1601 	struct cut_data cut;
1602 	struct date_data date;
1603 	struct df_data df;
1604 	struct du_data du;
1605 	struct env_data env;
1606 	struct expand_data expand;
1607 	struct file_data file;
1608 	struct find_data find;
1609 	struct grep_data grep;
1610 	struct head_data head;
1611 	struct iconv_data iconv;
1612 	struct id_data id;
1613 	struct kill_data kill;
1614 	struct ln_data ln;
1615 	struct logger_data logger;
1616 	struct ls_data ls;
1617 	struct mkdir_data mkdir;
1618 	struct mkfifo_data mkfifo;
1619 	struct nice_data nice;
1620 	struct nl_data nl;
1621 	struct od_data od;
1622 	struct paste_data paste;
1623 	struct patch_data patch;
1624 	struct ps_data ps;
1625 	struct renice_data renice;
1626 	struct sed_data sed;
1627 	struct sort_data sort;
1628 	struct split_data split;
1629 	struct strings_data strings;
1630 	struct tail_data tail;
1631 	struct tar_data tar;
1632 	struct tee_data tee;
1633 	struct touch_data touch;
1634 	struct ulimit_data ulimit;
1635 	struct uniq_data uniq;
1636 	struct uudecode_data uudecode;
1637 	struct wc_data wc;
1638 	struct xargs_data xargs;
1639 } this;
1640