Mercurial > hg > toybox
annotate toys/toylist.h @ 106:422df21290d7
Fix oneit: <1 is only parsed at the start of the argument list.
author  Rob Landley <rob@landley.net> 

date  Wed, 21 Feb 2007 15:19:32 0500 
parents  1c2f6d2e25de 
children  1f7dcdef245c 
rev  line source 

21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

1 /* vi: set ts=4 :*/ 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

2 /* Toybox infrastructure. 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

3 * 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

4 * Copyright 2006 Rob Landley <rob@landley.net> 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

5 */ 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

6 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

7 
88
021fe1a818c3
Small cleanup to prepare for crosscompile friendly make install.
Rob Landley <rob@landley.net>
parents:
82
diff
changeset

8 // Provide function declarations and structs. Note that main.c #includes this 
021fe1a818c3
Small cleanup to prepare for crosscompile friendly make install.
Rob Landley <rob@landley.net>
parents:
82
diff
changeset

9 // file twice (with different macros) to populate toy_list[]. 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

10 
88
021fe1a818c3
Small cleanup to prepare for crosscompile friendly make install.
Rob Landley <rob@landley.net>
parents:
82
diff
changeset

11 #ifndef NEWTOY 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

12 #define NEWTOY(name, opts, flags) int name##_main(void); 
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

13 #define OLDTOY(name, oldname, opts, flags) 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

14 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

15 struct df_data { 
33  16 struct arg_list *fstype; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

17 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

18 long units; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

19 }; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

20 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

21 struct mke2fs_data { 
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

22 long blocksize; 
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

23 long bytes_per_inode; 
99
97d717829ff0
More work on mke2fs.c. Random inprogress snapshot...
Rob Landley <rob@landley.net>
parents:
97
diff
changeset

24 long inodespg; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

25 long reserved_percent; 
97
4c81e6375719
Add parent pointer to dirtree, more work on mke2fs (populate dirtree, count
Rob Landley <rob@landley.net>
parents:
93
diff
changeset

26 char *gendir; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

27 
104
1c2f6d2e25de
Precalculate block and inode usage given a starting file tree. This compiles,
Rob Landley <rob@landley.net>
parents:
100
diff
changeset

28 unsigned blocks, groups, blockbits, treeblocks, treeinodes; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

29 int fsfd, noseek; 
82  30 struct ext2_superblock sb; 
97
4c81e6375719
Add parent pointer to dirtree, more work on mke2fs (populate dirtree, count
Rob Landley <rob@landley.net>
parents:
93
diff
changeset

31 struct dirtree *dt; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

32 }; 
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

33 
100
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

34 struct touch_data { 
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

35 char *ref_file; 
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

36 char *time; 
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

37 long length; 
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

38 }; 
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

39 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

40 // "E:jJ:L:m:O:" 
78
cd1f36a96185
Update args.c to implement numeric arguments.
Rob Landley <rob@landley.net>
parents:
76
diff
changeset

41 #define MKE2FS_OPTSTRING "<1>2Fnqm#N#i#b#" 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

42 
93
cc0a6789f92a
Trim a redundant definition that confuses older compilers. (Regression testing
Rob Landley <rob@landley.net>
parents:
92
diff
changeset

43 extern union toy_union { 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

44 struct df_data df; 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

45 struct mke2fs_data mke2fs; 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

46 } toy; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

47 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

48 #define TOYFLAG_USR (1<<0) 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

49 #define TOYFLAG_BIN (1<<1) 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

50 #define TOYFLAG_SBIN (1<<2) 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

51 #define TOYMASK_LOCATION ((1<<4)1) 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

52 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

53 #define TOYFLAG_NOFORK (1<<4) 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

54 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

55 extern struct toy_list { 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

56 char *name; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

57 int (*toy_main)(void); 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

58 char *options; 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

59 int flags; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

60 } toy_list[]; 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

61 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

62 #endif 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

63 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

64 // List of all the applets toybox can provide. 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

65 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

66 // This one is out of order on purpose: it's the first element in the array. 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

67 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

68 NEWTOY(toybox, NULL, 0) 
21
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

69 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

70 // The rest of these are alphabetical, for binary search. 
6475d6c46066
Add pwd. Consolidate toy list information under toylist.h.
Rob Landley <rob@landley.net>
parents:
diff
changeset

71 
54
60a7fb8ddeb4
Add a quick and dirt bzcat (stdin to stdout only for the moment) to test
Rob Landley <rob@landley.net>
parents:
53
diff
changeset

72 USE_BZCAT(NEWTOY(bzcat, "", TOYFLAG_USRTOYFLAG_BIN)) 
66  73 USE_CATV(NEWTOY(catv, "vte", TOYFLAG_USRTOYFLAG_BIN)) 
74 USE_COUNT(NEWTOY(count, "", TOYFLAG_USRTOYFLAG_BIN))  
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

75 USE_TOYSH(NEWTOY(cd, NULL, TOYFLAG_NOFORK)) 
32
993eab821bd5
More work on option parsing. "df t tmpfs" actually seems to work now.
Rob Landley <rob@landley.net>
parents:
25
diff
changeset

76 USE_DF(NEWTOY(df, "Pkt*a", TOYFLAG_USRTOYFLAG_SBIN)) 
92
154070b2b28d
Toybox option parsing must stop at the first nonoption argument.
Rob Landley <rob@landley.net>
parents:
88
diff
changeset

77 USE_ECHO(NEWTOY(echo, "+en", TOYFLAG_BIN)) 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

78 USE_TOYSH(NEWTOY(exit, NULL, TOYFLAG_NOFORK)) 
66  79 USE_HELLO(NEWTOY(hello, NULL, TOYFLAG_USR)) 
53
41d55b5d49fd
Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
35
diff
changeset

80 USE_MKE2FS(NEWTOY(mke2fs, MKE2FS_OPTSTRING, TOYFLAG_SBIN)) 
106
422df21290d7
Fix oneit: <1 is only parsed at the start of the argument list.
Rob Landley <rob@landley.net>
parents:
104
diff
changeset

81 USE_ONEIT(NEWTOY(oneit, "+<1p", TOYFLAG_SBIN)) 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

82 USE_PWD(NEWTOY(pwd, NULL, TOYFLAG_BIN)) 
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

83 USE_TOYSH(OLDTOY(sh, toysh, "c:i", TOYFLAG_BIN)) 
100
c3d1d74d5d8f
MacOS X has a defective sed with no r.
Rob Landley <rob@landley.net>
parents:
99
diff
changeset

84 USE_TOUCH(NEWTOY(touch, "l#t:r:mca", TOYFLAG_BIN)) 
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

85 USE_TOYSH(NEWTOY(toysh, "c:i", TOYFLAG_BIN)) 
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
21
diff
changeset

86 USE_WHICH(NEWTOY(which, "a", TOYFLAG_USRTOYFLAG_BIN)) 
74  87 USE_YES(NEWTOY(yes, "", TOYFLAG_USRTOYFLAG_BIN)) 