Mercurial > hg > toybox
annotate lib/lib.h @ 870:aa5bd0a358dd
More ifconfig cleanup.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 20 Apr 2013 23:33:48 -0500 |
parents | 34ac05521d94 |
children | aca8323e2690 |
rev | line source |
---|---|
7
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
1 /* lib.h - header file for lib directory |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
2 * |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
3 * Copyright 2006 Rob Landley <rob@landley.net> |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
4 */ |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
5 |
417
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
6 // Unfortunately, sizeof() doesn't work in a preprocessor test. TODO. |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
7 |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
8 //#if sizeof(double) <= sizeof(long) |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
9 //typedef double FLOAT; |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
10 //#else |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
11 typedef float FLOAT; |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
12 //#endif |
57e1335e59f6
Commit 415 needs the other two files. (Oops.)
Rob Landley <rob@landley.net>
parents:
397
diff
changeset
|
13 |
35 | 14 // libc generally has this, but the headers are screwed up |
15 ssize_t getline(char **lineptr, size_t *n, FILE *stream); | |
16 | |
20
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
17 // llist.c |
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
18 |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
19 // All these list types can be handled by the same code because first element |
821
46919d9f14f7
Remove unused min/max macros.
Rob Landley <rob@landley.net>
parents:
779
diff
changeset
|
20 // is always next pointer, so next = (mytype *)&struct. (The payloads are |
46919d9f14f7
Remove unused min/max macros.
Rob Landley <rob@landley.net>
parents:
779
diff
changeset
|
21 // named differently to catch using the wrong type early.) |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
22 |
20
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
23 struct string_list { |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
24 struct string_list *next; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
25 char str[0]; |
20
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
26 }; |
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
27 |
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
28 struct arg_list { |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
29 struct arg_list *next; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
30 char *arg; |
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
31 }; |
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
32 |
201
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
33 struct double_list { |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
34 struct double_list *next, *prev; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
35 char *data; |
201
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
36 }; |
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
37 |
624
1e8b9acdafeb
Genericize llist code a bit: rename llist_free() to llist_traverse(), and no longer accept NULL as a synonym for free.
Rob Landley <rob@landley.net>
parents:
623
diff
changeset
|
38 void llist_traverse(void *list, void (*using)(void *data)); |
238
630b2e12db16
Move dlist_add() to lib/llist.c
Rob Landley <rob@landley.net>
parents:
216
diff
changeset
|
39 void *llist_pop(void *list); // actually void **list, but the compiler's dumb |
540
c2f39708a4c4
Redo tail to use optargs and optionally support lseek. Add support to optargs and llist.c, plus add a test suite entry. Still no -f support though.
Rob Landley <rob@landley.net>
parents:
503
diff
changeset
|
40 void dlist_add_nomalloc(struct double_list **list, struct double_list *new); |
315
aaac01796688
Upgrade patch to detect hunks that start after a false start.
Rob Landley <rob@landley.net>
parents:
311
diff
changeset
|
41 struct double_list *dlist_add(struct double_list **list, char *data); |
238
630b2e12db16
Move dlist_add() to lib/llist.c
Rob Landley <rob@landley.net>
parents:
216
diff
changeset
|
42 |
143
9cbb323f297f
Break out dirtree.c and let it call a function instead of returning the data.
Rob Landley <rob@landley.net>
parents:
137
diff
changeset
|
43 // args.c |
9cbb323f297f
Break out dirtree.c and let it call a function instead of returning the data.
Rob Landley <rob@landley.net>
parents:
137
diff
changeset
|
44 void get_optflags(void); |
9cbb323f297f
Break out dirtree.c and let it call a function instead of returning the data.
Rob Landley <rob@landley.net>
parents:
137
diff
changeset
|
45 |
9cbb323f297f
Break out dirtree.c and let it call a function instead of returning the data.
Rob Landley <rob@landley.net>
parents:
137
diff
changeset
|
46 // dirtree.c |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
47 |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
48 // Values returnable from callback function (bitfield, or them together) |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
49 // Default with no callback is 0 |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
50 |
580
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
51 // Add this node to the tree |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
52 #define DIRTREE_SAVE 1 |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
53 // Recurse into children |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
54 #define DIRTREE_RECURSE 2 |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
55 // Call again after handling all children of this directory |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
56 // (Ignored for non-directories, sets linklen = -1 before second call.) |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
57 #define DIRTREE_COMEAGAIN 4 |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
58 // Follow symlinks to directories |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
59 #define DIRTREE_SYMFOLLOW 8 |
580
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
60 // Don't look at any more files in this directory. |
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
61 #define DIRTREE_ABORT 256 |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
62 |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
63 #define DIRTREE_ABORTVAL ((struct dirtree *)1) |
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
64 |
95
a636e4d20f13
Add xstat(), read_dirtree(), and read_dirtree_node().
Rob Landley <rob@landley.net>
parents:
75
diff
changeset
|
65 struct dirtree { |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
66 struct dirtree *next, *parent, *child; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
67 long extra; // place for user to store their stuff (can be pointer) |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
68 struct stat st; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
69 char *symlink; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
70 int data; // dirfd for directory, linklen for symlink, -1 = comeagain |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
71 char name[]; |
95
a636e4d20f13
Add xstat(), read_dirtree(), and read_dirtree_node().
Rob Landley <rob@landley.net>
parents:
75
diff
changeset
|
72 }; |
a636e4d20f13
Add xstat(), read_dirtree(), and read_dirtree_node().
Rob Landley <rob@landley.net>
parents:
75
diff
changeset
|
73 |
735
3aaba60133c8
Have dirtree_add_node() set parent so error message can provide full path.
Rob Landley <rob@landley.net>
parents:
730
diff
changeset
|
74 struct dirtree *dirtree_add_node(struct dirtree *p, char *name, int symfollow); |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
75 char *dirtree_path(struct dirtree *node, int *plen); |
580
4877cff01b25
dirtree logic cleanup: switch DIRTREE_NORECURSE and DIRTREE_NOSAVE to DIRTREE_RECURSE and DIRTREE_SAVE.
Rob Landley <rob@landley.net>
parents:
565
diff
changeset
|
76 int dirtree_notdotdot(struct dirtree *catch); |
601 | 77 int dirtree_parentfd(struct dirtree *node); |
779
90e98cdb1b7c
Make dirtree_handle_callback() start with dirtree_ like the rest of the dirtree functions.
Rob Landley <rob@landley.net>
parents:
762
diff
changeset
|
78 struct dirtree *dirtree_handle_callback(struct dirtree *new, |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
79 int (*callback)(struct dirtree *node)); |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
80 void dirtree_recurse(struct dirtree *node, |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
81 int (*callback)(struct dirtree *node), int symfollow); |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
82 struct dirtree *dirtree_read(char *path, int (*callback)(struct dirtree *node)); |
25
eb46bb5626cb
New option parsing infrastructure (doesn't use getopt). Hook it up to
Rob Landley <rob@landley.net>
parents:
20
diff
changeset
|
83 |
858
34ac05521d94
Move guts of help command into show_help() in lib/help.c, with config TOYBOX_HELP controlling infrastructure.
Rob Landley <rob@landley.net>
parents:
821
diff
changeset
|
84 // help.c |
34ac05521d94
Move guts of help command into show_help() in lib/help.c, with config TOYBOX_HELP controlling infrastructure.
Rob Landley <rob@landley.net>
parents:
821
diff
changeset
|
85 |
34ac05521d94
Move guts of help command into show_help() in lib/help.c, with config TOYBOX_HELP controlling infrastructure.
Rob Landley <rob@landley.net>
parents:
821
diff
changeset
|
86 void show_help(void); |
34ac05521d94
Move guts of help command into show_help() in lib/help.c, with config TOYBOX_HELP controlling infrastructure.
Rob Landley <rob@landley.net>
parents:
821
diff
changeset
|
87 |
143
9cbb323f297f
Break out dirtree.c and let it call a function instead of returning the data.
Rob Landley <rob@landley.net>
parents:
137
diff
changeset
|
88 // lib.c |
870 | 89 void xstrncpy(char *dest, char *src, size_t size); |
7
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
90 void verror_msg(char *msg, int err, va_list va); |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
91 void error_msg(char *msg, ...); |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
92 void perror_msg(char *msg, ...); |
166
5f1d3ad8a888
Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents:
144
diff
changeset
|
93 void error_exit(char *msg, ...) noreturn; |
5f1d3ad8a888
Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents:
144
diff
changeset
|
94 void perror_exit(char *msg, ...) noreturn; |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
95 void *xmalloc(size_t size); |
3
266a462ed18c
Next drop of toysh, plus more infratructure.
landley@driftwood
parents:
2
diff
changeset
|
96 void *xzalloc(size_t size); |
115
19b5567f0a1b
Add readlink, xreadlink(), and change xrealloc() to not fight the stupid
Rob Landley <rob@landley.net>
parents:
102
diff
changeset
|
97 void *xrealloc(void *ptr, size_t size); |
369
5715eed39575
Correct return types of xstrdup() and xstrndup()
Rob Landley <rob@landley.net>
parents:
340
diff
changeset
|
98 char *xstrndup(char *s, size_t n); |
5715eed39575
Correct return types of xstrdup() and xstrndup()
Rob Landley <rob@landley.net>
parents:
340
diff
changeset
|
99 char *xstrdup(char *s); |
4
732b055e17f7
Add xmsprintf(), xgetcwd(), xgetcwd(), find_in_path().
landley@driftwood
parents:
3
diff
changeset
|
100 char *xmsprintf(char *format, ...); |
70
a1b464bbef08
Add "echo". Has -n and -e (but not \0123 yet).
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
101 void xprintf(char *format, ...); |
128
0a90a5fbc1bf
Add xputs() to detect EOF on writes.
Rob Landley <rob@landley.net>
parents:
124
diff
changeset
|
102 void xputs(char *s); |
70
a1b464bbef08
Add "echo". Has -n and -e (but not \0123 yet).
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
103 void xputc(char c); |
a1b464bbef08
Add "echo". Has -n and -e (but not \0123 yet).
Rob Landley <rob@landley.net>
parents:
64
diff
changeset
|
104 void xflush(void); |
7
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
105 void xexec(char **argv); |
51 | 106 void xaccess(char *path, int flags); |
214
98820d1eaa79
Upgrade patch to understand creating and deleting files.
Rob Landley <rob@landley.net>
parents:
209
diff
changeset
|
107 void xunlink(char *path); |
49
bb4c38853a7d
xopen() wants 2 arguments unless you're creating a file, in which case you
Rob Landley <rob@landley.net>
parents:
35
diff
changeset
|
108 int xcreate(char *path, int flags, int mode); |
bb4c38853a7d
xopen() wants 2 arguments unless you're creating a file, in which case you
Rob Landley <rob@landley.net>
parents:
35
diff
changeset
|
109 int xopen(char *path, int flags); |
201
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
110 void xclose(int fd); |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
111 int xdup(int fd); |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
112 FILE *xfopen(char *path, char *mode); |
63
69efffcacd70
Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents:
53
diff
changeset
|
113 ssize_t readall(int fd, void *buf, size_t len); |
69efffcacd70
Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents:
53
diff
changeset
|
114 ssize_t writeall(int fd, void *buf, size_t len); |
69efffcacd70
Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents:
53
diff
changeset
|
115 size_t xread(int fd, void *buf, size_t len); |
69efffcacd70
Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents:
53
diff
changeset
|
116 void xreadall(int fd, void *buf, size_t len); |
69efffcacd70
Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents:
53
diff
changeset
|
117 void xwrite(int fd, void *buf, size_t len); |
340 | 118 off_t xlseek(int fd, off_t offset, int whence); |
623
f51beec92738
New infrastructure for od (oops).
Rob Landley <rob@landley.net>
parents:
607
diff
changeset
|
119 off_t lskip(int fd, off_t offset); |
311
962bbf7341f8
Tweak from Roberto Foglietta.
Rob Landley <rob@landley.net>
parents:
308
diff
changeset
|
120 char *readfile(char *name); |
962bbf7341f8
Tweak from Roberto Foglietta.
Rob Landley <rob@landley.net>
parents:
308
diff
changeset
|
121 char *xreadfile(char *name); |
4
732b055e17f7
Add xmsprintf(), xgetcwd(), xgetcwd(), find_in_path().
landley@driftwood
parents:
3
diff
changeset
|
122 char *xgetcwd(void); |
95
a636e4d20f13
Add xstat(), read_dirtree(), and read_dirtree_node().
Rob Landley <rob@landley.net>
parents:
75
diff
changeset
|
123 void xstat(char *path, struct stat *st); |
708
50d759f8b371
Remove readlink -m for being poorly defined ("readlink -m /dev/null/and/more" answers what question, exactly?), rewrite xabspath() to work right and not depend on realpath, fix subtle longstanding bug in llist_traverse().
Rob Landley <rob@landley.net>
parents:
707
diff
changeset
|
124 char *xabspath(char *path, int exact); |
585
1dcd7994abea
Add xrealpath() at suggestion of Ashish Briggers.
Rob Landley <rob@landley.net>
parents:
580
diff
changeset
|
125 char *xrealpath(char *path); |
292
b4077be6c746
Update mdev to work around the newest sysfs api breakage in the 2.6.25 kernel.
Rob Landley <rob@landley.net>
parents:
284
diff
changeset
|
126 void xchdir(char *path); |
216
5697a3f7c8cf
Make patch's file add actually work, including directory creating and
Rob Landley <rob@landley.net>
parents:
214
diff
changeset
|
127 void xmkpath(char *path, int mode); |
370 | 128 void xsetuid(uid_t uid); |
20
3981c96f9285
Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents:
16
diff
changeset
|
129 struct string_list *find_in_path(char *path, char *filename); |
7
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
130 void utoa_to_buf(unsigned n, char *buf, unsigned buflen); |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
131 void itoa_to_buf(int n, char *buf, unsigned buflen); |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
132 char *utoa(unsigned n); |
fc9c0503d5e2
Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents:
4
diff
changeset
|
133 char *itoa(int n); |
102
aa4fa2543a65
Add atolx() which understands extensions for kilobytes and megabytes and such.
Rob Landley <rob@landley.net>
parents:
97
diff
changeset
|
134 long atolx(char *c); |
565
44abf4d901f3
Rewrite dirtree so we don't need readdir, scandir, and fts.h. Rewrite ls (from scratch) to use new dirtree infrastructure. (This breaks everything else that currently uses dirtree.)
Rob Landley <rob@landley.net>
parents:
551
diff
changeset
|
135 int numlen(long l); |
623
f51beec92738
New infrastructure for od (oops).
Rob Landley <rob@landley.net>
parents:
607
diff
changeset
|
136 int stridx(char *haystack, char needle); |
75
89ca591a9236
More random progress on mke2fs. Nothing to see yet.
Rob Landley <rob@landley.net>
parents:
70
diff
changeset
|
137 off_t fdlength(int fd); |
115
19b5567f0a1b
Add readlink, xreadlink(), and change xrealloc() to not fight the stupid
Rob Landley <rob@landley.net>
parents:
102
diff
changeset
|
138 char *xreadlink(char *name); |
397
b7afbc6b753a
Forgot to check in loopfiles_rw changes needed by truncate.
Rob Landley <rob@landley.net>
parents:
370
diff
changeset
|
139 void loopfiles_rw(char **argv, int flags, int permissions, int failok, |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
140 void (*function)(int fd, char *name)); |
185
29e2051296fd
Add loopfiles() function, make catv use it.
Rob Landley <rob@landley.net>
parents:
167
diff
changeset
|
141 void loopfiles(char **argv, void (*function)(int fd, char *name)); |
284
603275a05524
Teach get_rawline() to continue until a configurable char, and xstrndup()
Rob Landley <rob@landley.net>
parents:
263
diff
changeset
|
142 char *get_rawline(int fd, long *plen, char end); |
201
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
143 char *get_line(int fd); |
5d523752715a
Start of "patch" support. Writes to stdout at the moment.
Rob Landley <rob@landley.net>
parents:
185
diff
changeset
|
144 void xsendfile(int in, int out); |
590
7becb497c3c4
Update chmod to work with new dirtree, and fix bugs in string_to_mode().
Rob Landley <rob@landley.net>
parents:
589
diff
changeset
|
145 int wfchmodat(int rc, char *name, mode_t mode); |
209 | 146 int copy_tempfile(int fdin, char *name, char **tempname); |
147 void delete_tempfile(int fdin, int fdout, char **tempname); | |
148 void replace_tempfile(int fdin, int fdout, char **tempname); | |
337
aaafa1ceaa91
Add -N, -I, -L, and -P options to cksum.
Rob Landley <rob@landley.net>
parents:
334
diff
changeset
|
149 void crc_init(unsigned int *crc_table, int little_endian); |
419
af0cca0aba9d
Quick and dirty terminal_size() and yesno() functions, both of which need to be improved.
Rob Landley <rob@landley.net>
parents:
417
diff
changeset
|
150 void terminal_size(unsigned *x, unsigned *y); |
503
3b9dea897dc0
Upgrade yesno() and make cp -i use it.
Rob Landley <rob@landley.net>
parents:
498
diff
changeset
|
151 int yesno(char *prompt, int def); |
762
f169d9708518
Extend killall with support for -v and -i
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
744
diff
changeset
|
152 void for_each_pid_with_name_in(char **names, int (*callback)(pid_t pid, char *name)); |
715
3417db95f24b
Add expand command as described in POSIX-2008.
Jonathan Clairembault <jonathan@clairembault.fr>
parents:
708
diff
changeset
|
153 unsigned long xstrtoul(const char *nptr, char **endptr, int base); |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
154 |
3
266a462ed18c
Next drop of toysh, plus more infratructure.
landley@driftwood
parents:
2
diff
changeset
|
155 // getmountlist.c |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
156 struct mtab_list { |
694
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
157 struct mtab_list *next; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
158 struct stat stat; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
159 struct statvfs statvfs; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
160 char *dir; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
161 char *device; |
786841fdb1e0
Reindent to two spaces per level. Remove vi: directives that haven't worked right in years (ubuntu broke its' vim implementation). Remove trailing spaces. Add/remove blank lines. Re-wordwrap in places. Update documentation with new coding style.
Rob Landley <rob@landley.net>
parents:
658
diff
changeset
|
162 char type[0]; |
2
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
163 }; |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
164 |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
165 struct mtab_list *getmountlist(int die); |
67b517913e56
Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff
changeset
|
166 |
64
67ee3a0b76e1
In bunzip replace setjmp/longjmp handling with error_exit(), replace string
Rob Landley <rob@landley.net>
parents:
63
diff
changeset
|
167 void bunzipStream(int src_fd, int dst_fd); |
498
c9aaceccd6bd
Factor out common code between killall/kill and move it to lib/lib.c, plus cleanups on kill.c.
Rob Landley <rob@landley.net>
parents:
478
diff
changeset
|
168 |
c9aaceccd6bd
Factor out common code between killall/kill and move it to lib/lib.c, plus cleanups on kill.c.
Rob Landley <rob@landley.net>
parents:
478
diff
changeset
|
169 // signal |
c9aaceccd6bd
Factor out common code between killall/kill and move it to lib/lib.c, plus cleanups on kill.c.
Rob Landley <rob@landley.net>
parents:
478
diff
changeset
|
170 |
643
7bdebd2af1d6
Add signal handler to clean up tempfile.
Rob Landley <rob@landley.net>
parents:
637
diff
changeset
|
171 void sigatexit(void *handler); |
498
c9aaceccd6bd
Factor out common code between killall/kill and move it to lib/lib.c, plus cleanups on kill.c.
Rob Landley <rob@landley.net>
parents:
478
diff
changeset
|
172 int sig_to_num(char *pidstr); |
c9aaceccd6bd
Factor out common code between killall/kill and move it to lib/lib.c, plus cleanups on kill.c.
Rob Landley <rob@landley.net>
parents:
478
diff
changeset
|
173 char *num_to_sig(int sig); |
551
2548e6e590b2
Add string to mode_t parser
Daniel Walter <d.walter@0x90.at>
parents:
540
diff
changeset
|
174 |
2548e6e590b2
Add string to mode_t parser
Daniel Walter <d.walter@0x90.at>
parents:
540
diff
changeset
|
175 mode_t string_to_mode(char *mode_str, mode_t base); |
626 | 176 |
177 // password helper functions | |
637
9aeea680acc7
Use "_password" instead of "_passwd" for names in lib/password.c.
Rob Landley <rob@landley.net>
parents:
626
diff
changeset
|
178 int read_password(char * buff, int buflen, char* mesg); |
9aeea680acc7
Use "_password" instead of "_passwd" for names in lib/password.c.
Rob Landley <rob@landley.net>
parents:
626
diff
changeset
|
179 int update_password(char *filename, char* username, char* encrypted); |
626 | 180 |
658 | 181 // du helper functions |
182 char* make_human_readable(unsigned long long size, unsigned long unit); | |
698
078138791b5c
Add cut from Jason Kyungwan Han.
Rob Landley <rob@landley.net>
parents:
694
diff
changeset
|
183 |
078138791b5c
Add cut from Jason Kyungwan Han.
Rob Landley <rob@landley.net>
parents:
694
diff
changeset
|
184 // cut helper functions |
078138791b5c
Add cut from Jason Kyungwan Han.
Rob Landley <rob@landley.net>
parents:
694
diff
changeset
|
185 unsigned long get_int_value(const char *numstr, unsigned lowrange, unsigned highrange); |