blob: 4cc2dac4feeca1f412ce9166430a642c5eeeda55 [file] [log] [blame]
landley4f344e32006-10-05 16:18:03 -04001/* vi: set ts=4 :*/
landley09ea7ac2006-10-30 01:38:00 -05002/* lib.h - header file for lib directory
3 *
4 * Copyright 2006 Rob Landley <rob@landley.net>
5 */
landley4f344e32006-10-05 16:18:03 -04006
Rob Landley1521a9e2006-11-25 16:06:55 -05007// libc generally has this, but the headers are screwed up
8ssize_t getline(char **lineptr, size_t *n, FILE *stream);
9
Rob Landley0a04b3e2006-11-03 00:05:52 -050010// llist.c
11void llist_free(void *list, void (*freeit)(void *data));
12void *llist_pop(void *list); // actually void **list, but the compiler's dumb
13
14struct string_list {
15 struct string_list *next;
16 char str[0];
17};
18
Rob Landley8324b892006-11-19 02:49:22 -050019struct arg_list {
20 struct arg_list *next;
21 char *arg;
22};
23
Rob Landley103b7e02007-10-04 02:04:10 -050024// args.c
25void get_optflags(void);
26
27// dirtree.c
Rob Landleyd25f7e42007-02-03 14:11:26 -050028struct dirtree {
Rob Landley720fc262007-02-04 19:14:58 -050029 struct dirtree *next, *child, *parent;
Rob Landleyd25f7e42007-02-03 14:11:26 -050030 struct stat st;
31 char name[];
32};
33
Rob Landley103b7e02007-10-04 02:04:10 -050034struct dirtree *dirtree_add_node(char *path);
35struct dirtree *dirtree_read(char *path, struct dirtree *parent,
36 int (*callback)(struct dirtree *node));
Rob Landley8324b892006-11-19 02:49:22 -050037
Rob Landley103b7e02007-10-04 02:04:10 -050038// lib.c
Rob Landley9303e2f2007-08-15 12:50:44 -050039#if !defined(__UCLIBC__) && !defined(__KLIBC__)
Rob Landley18d43ff2007-06-07 15:19:44 -040040void strlcpy(char *dest, char *src, size_t size);
41#endif
42
landley09ea7ac2006-10-30 01:38:00 -050043void verror_msg(char *msg, int err, va_list va);
44void error_msg(char *msg, ...);
45void perror_msg(char *msg, ...);
landley4f344e32006-10-05 16:18:03 -040046void error_exit(char *msg, ...);
landley09ea7ac2006-10-30 01:38:00 -050047void perror_exit(char *msg, ...);
Rob Landley055cfcb2007-01-14 20:20:06 -050048void usage_exit(void);
landley4f344e32006-10-05 16:18:03 -040049void *xmalloc(size_t size);
landleycd9dfc32006-10-18 18:38:16 -040050void *xzalloc(size_t size);
Rob Landley0c93f6c2007-04-29 19:55:21 -040051void *xrealloc(void *ptr, size_t size);
landley4f344e32006-10-05 16:18:03 -040052void *xstrndup(char *s, size_t n);
Rob Landleyfa98d012006-11-02 02:57:27 -050053void *xstrdup(char *s);
landley00f87f12006-10-25 18:38:37 -040054char *xmsprintf(char *format, ...);
Rob Landley24d1d452007-01-20 18:04:20 -050055void xprintf(char *format, ...);
Rob Landley5084fea2007-06-18 00:14:03 -040056void xputs(char *s);
Rob Landley24d1d452007-01-20 18:04:20 -050057void xputc(char c);
58void xflush(void);
landley09ea7ac2006-10-30 01:38:00 -050059void xexec(char **argv);
Rob Landleyd3e9d642007-01-08 03:25:47 -050060void xaccess(char *path, int flags);
Rob Landley1322beb2007-01-07 22:51:12 -050061int xcreate(char *path, int flags, int mode);
62int xopen(char *path, int flags);
landley4f344e32006-10-05 16:18:03 -040063FILE *xfopen(char *path, char *mode);
Rob Landley90163772007-01-18 21:54:08 -050064ssize_t readall(int fd, void *buf, size_t len);
65ssize_t writeall(int fd, void *buf, size_t len);
66size_t xread(int fd, void *buf, size_t len);
67void xreadall(int fd, void *buf, size_t len);
68void xwrite(int fd, void *buf, size_t len);
landley00f87f12006-10-25 18:38:37 -040069char *xgetcwd(void);
Rob Landleyd25f7e42007-02-03 14:11:26 -050070void xstat(char *path, struct stat *st);
Rob Landleyfa98d012006-11-02 02:57:27 -050071char *xabspath(char *path);
Rob Landley0a04b3e2006-11-03 00:05:52 -050072struct string_list *find_in_path(char *path, char *filename);
landley09ea7ac2006-10-30 01:38:00 -050073void utoa_to_buf(unsigned n, char *buf, unsigned buflen);
74void itoa_to_buf(int n, char *buf, unsigned buflen);
75char *utoa(unsigned n);
76char *itoa(int n);
Rob Landleyf5757162007-02-16 21:08:22 -050077long atolx(char *c);
Rob Landleye2580db2007-01-23 13:20:38 -050078off_t fdlength(int fd);
Rob Landley0c93f6c2007-04-29 19:55:21 -040079char *xreadlink(char *name);
landley4f344e32006-10-05 16:18:03 -040080
landleycd9dfc32006-10-18 18:38:16 -040081// getmountlist.c
landley4f344e32006-10-05 16:18:03 -040082struct mtab_list {
83 struct mtab_list *next;
landley09ea7ac2006-10-30 01:38:00 -050084 struct stat stat;
85 struct statvfs statvfs;
landley4f344e32006-10-05 16:18:03 -040086 char *dir;
87 char *device;
88 char type[0];
89};
90
91struct mtab_list *getmountlist(int die);
92
Rob Landley6000f132007-01-18 22:00:12 -050093void bunzipStream(int src_fd, int dst_fd);