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