annotate lib/lib.h @ 1042:cbc467592b2e draft

Remove itoa/utoa, let libc do this with sprintf.
author Rob Landley <rob@landley.net>
date Tue, 03 Sep 2013 08:30:47 -0500
parents 11cf9b97fae7
children acf7bb2b99e2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f2c7f0799ebe Add cat -v.
Rob Landley <rob@landley.net>
parents: 25
diff changeset
14 // libc generally has this, but the headers are screwed up
f2c7f0799ebe Add cat -v.
Rob Landley <rob@landley.net>
parents: 25
diff changeset
15 ssize_t getline(char **lineptr, size_t *n, FILE *stream);
f2c7f0799ebe Add cat -v.
Rob Landley <rob@landley.net>
parents: 25
diff changeset
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
a6a541b7fc34 Add dirtree_parentfd()
Rob Landley <rob@landley.net>
parents: 593
diff changeset
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
952
ce0519f6457c Add timeout, factoring out common code from sleep.
Rob Landley <rob@landley.net>
parents: 951
diff changeset
88 // xwrap.c
870
aa5bd0a358dd More ifconfig cleanup.
Rob Landley <rob@landley.net>
parents: 858
diff changeset
89 void xstrncpy(char *dest, char *src, size_t size);
925
07693eb46e26 Add xexit() and make error_exit() use it.
Rob Landley <rob@landley.net>
parents: 916
diff changeset
90 void xexit(void) noreturn;
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
91 void *xmalloc(size_t size);
3
266a462ed18c Next drop of toysh, plus more infratructure.
landley@driftwood
parents: 2
diff changeset
92 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
93 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
94 char *xstrndup(char *s, size_t n);
5715eed39575 Correct return types of xstrdup() and xstrndup()
Rob Landley <rob@landley.net>
parents: 340
diff changeset
95 char *xstrdup(char *s);
4
732b055e17f7 Add xmsprintf(), xgetcwd(), xgetcwd(), find_in_path().
landley@driftwood
parents: 3
diff changeset
96 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
97 void xprintf(char *format, ...);
128
0a90a5fbc1bf Add xputs() to detect EOF on writes.
Rob Landley <rob@landley.net>
parents: 124
diff changeset
98 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
99 void xputc(char c);
a1b464bbef08 Add "echo". Has -n and -e (but not \0123 yet).
Rob Landley <rob@landley.net>
parents: 64
diff changeset
100 void xflush(void);
952
ce0519f6457c Add timeout, factoring out common code from sleep.
Rob Landley <rob@landley.net>
parents: 951
diff changeset
101 void xexec_optargs(int skip);
7
fc9c0503d5e2 Implement df. Add -Wall to build and fix up warnings. Add copyright notices.
landley@driftwood
parents: 4
diff changeset
102 void xexec(char **argv);
51
63edd4de94dd Add xaccess()
Rob Landley <rob@landley.net>
parents: 50
diff changeset
103 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
104 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
105 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
106 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
107 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
108 int xdup(int fd);
991
252caf3d2b88 Forgot to check in xfdopen(). My bad.
Rob Landley <rob@landley.net>
parents: 952
diff changeset
109 FILE *xfdopen(int fd, char *mode);
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
110 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
111 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
112 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
113 void xwrite(int fd, void *buf, size_t len);
340
6e03d6a8df23 Add mkswap.
Rob Landley <rob@landley.net>
parents: 337
diff changeset
114 off_t xlseek(int fd, off_t offset, int whence);
311
962bbf7341f8 Tweak from Roberto Foglietta.
Rob Landley <rob@landley.net>
parents: 308
diff changeset
115 char *xreadfile(char *name);
883
aca8323e2690 Add posix headers to toynet.h, move xioctl() to lib.c, introduce lib/net.c and move xsocket() to it.
Rob Landley <rob@landley.net>
parents: 870
diff changeset
116 int xioctl(int fd, int request, void *data);
4
732b055e17f7 Add xmsprintf(), xgetcwd(), xgetcwd(), find_in_path().
landley@driftwood
parents: 3
diff changeset
117 char *xgetcwd(void);
95
a636e4d20f13 Add xstat(), read_dirtree(), and read_dirtree_node().
Rob Landley <rob@landley.net>
parents: 75
diff changeset
118 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
119 char *xabspath(char *path, int exact);
585
1dcd7994abea Add xrealpath() at suggestion of Ashish Briggers.
Rob Landley <rob@landley.net>
parents: 580
diff changeset
120 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
121 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
122 void xmkpath(char *path, int mode);
370
c7a26e26ad08 Add TOYBOX_SUID.
Rob Landley <rob@landley.net>
parents: 369
diff changeset
123 void xsetuid(uid_t uid);
951
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
124 char *xreadlink(char *name);
952
ce0519f6457c Add timeout, factoring out common code from sleep.
Rob Landley <rob@landley.net>
parents: 951
diff changeset
125 long xparsetime(char *arg, long units, long *fraction);
1028
58bfd974216d syslogd: cleanup
Felix Janda <felix.janda at posteo.de>
parents: 1011
diff changeset
126 void xpidfile(char *name);
951
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
127
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
128 // lib.c
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
129 void verror_msg(char *msg, int err, va_list va);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
130 void error_msg(char *msg, ...);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
131 void perror_msg(char *msg, ...);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
132 void error_exit(char *msg, ...) noreturn;
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
133 void perror_exit(char *msg, ...) noreturn;
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
134 ssize_t readall(int fd, void *buf, size_t len);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
135 ssize_t writeall(int fd, void *buf, size_t len);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
136 off_t lskip(int fd, off_t offset);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
137 struct string_list **splitpath(char *path, struct string_list **list);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
138 char *readfile(char *name);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
139 void msleep(long miliseconds);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
140 int64_t peek(void *ptr, int size);
62d59b8aea34 Split lib/xwrap.c from lib/lib.c
Rob Landley <rob@landley.net>
parents: 948
diff changeset
141 void poke(void *ptr, uint64_t val, int size);
20
3981c96f9285 Implement which. Add hello world to menuconfig. Wrap the various applet main
Rob Landley <rob@landley.net>
parents: 16
diff changeset
142 struct string_list *find_in_path(char *path, char *filename);
102
aa4fa2543a65 Add atolx() which understands extensions for kilobytes and megabytes and such.
Rob Landley <rob@landley.net>
parents: 97
diff changeset
143 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
144 int numlen(long l);
623
f51beec92738 New infrastructure for od (oops).
Rob Landley <rob@landley.net>
parents: 607
diff changeset
145 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
146 off_t fdlength(int fd);
397
b7afbc6b753a Forgot to check in loopfiles_rw changes needed by truncate.
Rob Landley <rob@landley.net>
parents: 370
diff changeset
147 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
148 void (*function)(int fd, char *name));
185
29e2051296fd Add loopfiles() function, make catv use it.
Rob Landley <rob@landley.net>
parents: 167
diff changeset
149 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
150 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
151 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
152 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
153 int wfchmodat(int rc, char *name, mode_t mode);
209
9a0d4e8a9c61 Patch command.
Rob Landley <rob@landley.net>
parents: 201
diff changeset
154 int copy_tempfile(int fdin, char *name, char **tempname);
9a0d4e8a9c61 Patch command.
Rob Landley <rob@landley.net>
parents: 201
diff changeset
155 void delete_tempfile(int fdin, int fdout, char **tempname);
9a0d4e8a9c61 Patch command.
Rob Landley <rob@landley.net>
parents: 201
diff changeset
156 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
157 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
158 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
159 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
160 void for_each_pid_with_name_in(char **names, int (*callback)(pid_t pid, char *name));
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
161
883
aca8323e2690 Add posix headers to toynet.h, move xioctl() to lib.c, introduce lib/net.c and move xsocket() to it.
Rob Landley <rob@landley.net>
parents: 870
diff changeset
162 // net.c
aca8323e2690 Add posix headers to toynet.h, move xioctl() to lib.c, introduce lib/net.c and move xsocket() to it.
Rob Landley <rob@landley.net>
parents: 870
diff changeset
163 int xsocket(int domain, int type, int protocol);
aca8323e2690 Add posix headers to toynet.h, move xioctl() to lib.c, introduce lib/net.c and move xsocket() to it.
Rob Landley <rob@landley.net>
parents: 870
diff changeset
164
3
266a462ed18c Next drop of toysh, plus more infratructure.
landley@driftwood
parents: 2
diff changeset
165 // getmountlist.c
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
166 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
167 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
168 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
169 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
170 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
171 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
172 char type[0];
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
173 };
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
174
1033
11cf9b97fae7 Allow getmountlist to read fstab too.
Rob Landley <rob@landley.net>
parents: 1028
diff changeset
175 struct mtab_list *xgetmountlist(char *path);
2
67b517913e56 Infrastructure, first drop of toy shell, and a bit of work on df.
landley@driftwood
parents:
diff changeset
176
64
67ee3a0b76e1 In bunzip replace setjmp/longjmp handling with error_exit(), replace string
Rob Landley <rob@landley.net>
parents: 63
diff changeset
177 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
178
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
179 // 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
180
643
7bdebd2af1d6 Add signal handler to clean up tempfile.
Rob Landley <rob@landley.net>
parents: 637
diff changeset
181 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
182 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
183 char *num_to_sig(int sig);
551
2548e6e590b2 Add string to mode_t parser
Daniel Walter <d.walter@0x90.at>
parents: 540
diff changeset
184
2548e6e590b2 Add string to mode_t parser
Daniel Walter <d.walter@0x90.at>
parents: 540
diff changeset
185 mode_t string_to_mode(char *mode_str, mode_t base);
916
b92cb3cc9696 Stat cleanup.
Rob Landley <rob@landley.net>
parents: 915
diff changeset
186 void mode_to_string(mode_t mode, char *buf);
626
77d94b36aff0 Add passwd by Kyungwan Han.
Rob Landley <rob@landley.net>
parents: 624
diff changeset
187
77d94b36aff0 Add passwd by Kyungwan Han.
Rob Landley <rob@landley.net>
parents: 624
diff changeset
188 // 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
189 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
190 int update_password(char *filename, char* username, char* encrypted);
626
77d94b36aff0 Add passwd by Kyungwan Han.
Rob Landley <rob@landley.net>
parents: 624
diff changeset
191
698
078138791b5c Add cut from Jason Kyungwan Han.
Rob Landley <rob@landley.net>
parents: 694
diff changeset
192 // cut helper functions
078138791b5c Add cut from Jason Kyungwan Han.
Rob Landley <rob@landley.net>
parents: 694
diff changeset
193 unsigned long get_int_value(const char *numstr, unsigned lowrange, unsigned highrange);
948
55e587acefa9 add grep
Strake
parents: 925
diff changeset
194
55e587acefa9 add grep
Strake
parents: 925
diff changeset
195 // grep helper functions
55e587acefa9 add grep
Strake
parents: 925
diff changeset
196 char *astrcat (char *, char *);
55e587acefa9 add grep
Strake
parents: 925
diff changeset
197 char *xastrcat (char *, char *);
995
893c86bbe452 Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents: 991
diff changeset
198
893c86bbe452 Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents: 991
diff changeset
199 void daemonize(void);