619b400d5fe3618fa1aa763cfad0d919769ec74a
[oweals/opkg-lede.git] / libbb / libbb.h
1 /* vi: set sw=4 ts=4: */
2 /*
3  * Busybox main internal header file
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */
19
20 #ifndef __LIBBB_H__
21 #define __LIBBB_H__    1
22
23 #include <stdio.h>
24 #include <stdarg.h>
25 #include <sys/stat.h>
26 #include <sys/types.h>
27
28 #include <netdb.h>
29
30 #include <features.h>
31
32 #ifndef FALSE
33 #define FALSE   ((int) 0)
34 #endif
35
36 #ifndef TRUE
37 #define TRUE    ((int) 1)
38 #endif
39
40 extern void error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
41 extern void error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
42 extern void perror_msg(const char *s, ...);
43 extern void perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn));
44 extern void archive_xread_all(int fd, char *buf, size_t count);
45
46 /* These two are used internally -- you shouldn't need to use them */
47 extern void verror_msg(const char *s, va_list p);
48 extern void vperror_msg(const char *s, va_list p);
49
50 const char *mode_string(int mode);
51 const char *time_string(time_t timeVal);
52
53 int copy_file(const char *source, const char *dest, int flags);
54 int copy_file_chunk(FILE *src_file, FILE *dst_file, unsigned long long chunksize);
55 ssize_t safe_read(int fd, void *buf, size_t count);
56 ssize_t full_read(int fd, char *buf, int len);
57
58 extern int parse_mode( const char* s, mode_t* theMode);
59
60 extern FILE *wfopen(const char *path, const char *mode);
61 extern FILE *xfopen(const char *path, const char *mode);
62
63 extern void *xmalloc (size_t size);
64 extern void *xrealloc(void *old, size_t size);
65 extern void *xcalloc(size_t nmemb, size_t size);
66 extern char *xstrdup (const char *s);
67 extern char *xstrndup (const char *s, int n);
68 extern char *safe_strncpy(char *dst, const char *src, size_t size);
69
70 char *xreadlink(const char *path);
71 char *concat_path_file(const char *path, const char *filename);
72 char *last_char_is(const char *s, int c);
73
74 typedef struct file_headers_s {
75         char *name;
76         char *link_name;
77         off_t size;
78         uid_t uid;
79         gid_t gid;
80         mode_t mode;
81         time_t mtime;
82         dev_t device;
83 } file_header_t;
84
85 enum extract_functions_e {
86         extract_verbose_list = 1,
87         extract_list = 2,
88         extract_one_to_buffer = 4,
89         extract_to_stream = 8,
90         extract_all_to_fs = 16,
91         extract_preserve_date = 32,
92         extract_data_tar_gz = 64,
93         extract_control_tar_gz = 128,
94         extract_unzip_only = 256,
95         extract_unconditional = 512,
96         extract_create_leading_dirs = 1024,
97         extract_quiet = 2048,
98         extract_exclude_list = 4096
99 };
100
101 char *deb_extract(const char *package_filename, FILE *out_stream,
102                 const int extract_function, const char *prefix,
103                 const char *filename, int *err);
104
105 extern int unzip(FILE *l_in_file, FILE *l_out_file);
106 extern int gz_close(int gunzip_pid);
107 extern FILE *gz_open(FILE *compressed_file, int *pid);
108
109 int make_directory (const char *path, long mode, int flags);
110
111 enum {
112         FILEUTILS_PRESERVE_STATUS = 1,
113         FILEUTILS_PRESERVE_SYMLINKS = 2,
114         FILEUTILS_RECUR = 4,
115         FILEUTILS_FORCE = 8,
116 };
117
118 extern const char *applet_name;
119 extern const char * const memory_exhausted;
120
121 #endif /* __LIBBB_H__ */