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