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