/src/util-linux/include/c.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Fundamental C definitions. |
3 | | * |
4 | | * No copyright is claimed. This code is in the public domain; do with |
5 | | * it what you wish. |
6 | | */ |
7 | | #ifndef UTIL_LINUX_C_H |
8 | | #define UTIL_LINUX_C_H |
9 | | |
10 | | #include <limits.h> |
11 | | #include <stddef.h> |
12 | | #include <stdint.h> |
13 | | #include <stdio.h> |
14 | | #include <unistd.h> |
15 | | #include <stdarg.h> |
16 | | #include <stdlib.h> |
17 | | #include <string.h> |
18 | | #include <errno.h> |
19 | | #include <sys/types.h> |
20 | | #include <grp.h> |
21 | | |
22 | | #include <assert.h> |
23 | | |
24 | | #ifdef HAVE_ERR_H |
25 | | # include <err.h> |
26 | | #endif |
27 | | |
28 | | #ifdef HAVE_SYS_SYSMACROS_H |
29 | | # include <sys/sysmacros.h> /* for major, minor */ |
30 | | #endif |
31 | | |
32 | | #ifndef LOGIN_NAME_MAX |
33 | | # define LOGIN_NAME_MAX 256 |
34 | | #endif |
35 | | |
36 | | #ifndef NAME_MAX |
37 | | # define NAME_MAX PATH_MAX |
38 | | #endif |
39 | | |
40 | | /* |
41 | | * __GNUC_PREREQ is deprecated in favour of __has_attribute() and |
42 | | * __has_feature(). The __has macros are supported by clang and gcc>=5. |
43 | | */ |
44 | | #ifndef __GNUC_PREREQ |
45 | | # if defined __GNUC__ && defined __GNUC_MINOR__ |
46 | | # define __GNUC_PREREQ(maj, min) \ |
47 | | ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) |
48 | | # else |
49 | | # define __GNUC_PREREQ(maj, min) 0 |
50 | | # endif |
51 | | #endif |
52 | | |
53 | | #ifdef __GNUC__ |
54 | | |
55 | | /* &a[0] degrades to a pointer: a different type from an array */ |
56 | | # define __must_be_array(a) \ |
57 | 308k | UL_BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(__typeof__(a), __typeof__(&a[0]))) |
58 | | |
59 | 0 | # define ignore_result(x) __extension__ ({ \ |
60 | 0 | __typeof__(x) __dummy __attribute__((__unused__)) = (x); (void) __dummy; \ |
61 | 0 | }) |
62 | | |
63 | | #else /* !__GNUC__ */ |
64 | | # define __must_be_array(a) 0 |
65 | | # define __attribute__(_arg_) |
66 | | # define ignore_result(x) ((void) (x)) |
67 | | #endif /* !__GNUC__ */ |
68 | | |
69 | | |
70 | | /* "restrict" keyword fallback */ |
71 | | #if __STDC__ != 1 |
72 | | # define restrict __restrict /* use implementation __ format */ |
73 | | #else |
74 | | # ifndef __STDC_VERSION__ |
75 | | # define restrict __restrict /* use implementation __ format */ |
76 | | # else |
77 | | # if __STDC_VERSION__ < 199901L |
78 | | # define restrict __restrict /* use implementation __ format */ |
79 | | # endif |
80 | | # endif |
81 | | #endif |
82 | | |
83 | | |
84 | | /* |
85 | | * It evaluates to 1 if the attribute/feature is supported by the current |
86 | | * compilation target. Fallback for old compilers. |
87 | | */ |
88 | | #ifndef __has_attribute |
89 | | #define __has_attribute(x) 0 |
90 | | #endif |
91 | | |
92 | | #ifndef __has_feature |
93 | | #define __has_feature(x) 0 |
94 | | #endif |
95 | | |
96 | | /* |
97 | | * Function attributes |
98 | | */ |
99 | | #ifndef __ul_alloc_size |
100 | | # if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3) |
101 | | # define __ul_alloc_size(s) __attribute__((alloc_size(s), warn_unused_result)) |
102 | | # else |
103 | | # define __ul_alloc_size(s) |
104 | | # endif |
105 | | #endif |
106 | | |
107 | | #ifndef __ul_calloc_size |
108 | | # if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3) |
109 | | # define __ul_calloc_size(n, s) __attribute__((alloc_size(n, s), warn_unused_result)) |
110 | | # else |
111 | | # define __ul_calloc_size(n, s) |
112 | | # endif |
113 | | #endif |
114 | | |
115 | | #if __has_attribute(returns_nonnull) || __GNUC_PREREQ (4, 9) |
116 | | # define __ul_returns_nonnull __attribute__((returns_nonnull)) |
117 | | #else |
118 | | # define __ul_returns_nonnull |
119 | | #endif |
120 | | |
121 | | /* |
122 | | * Force a compilation error if condition is true, but also produce a |
123 | | * result (of value 0 and type size_t), so the expression can be used |
124 | | * e.g. in a structure initializer (or wherever else comma expressions |
125 | | * aren't permitted). |
126 | | */ |
127 | 308k | #define UL_BUILD_BUG_ON_ZERO(e) __extension__ (sizeof(struct { int:-!!(e); })) |
128 | | #define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); })) |
129 | | |
130 | | #ifndef ARRAY_SIZE |
131 | 308k | # define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) |
132 | | #endif |
133 | | |
134 | | #ifndef PATH_MAX |
135 | | # define PATH_MAX 4096 |
136 | | #endif |
137 | | |
138 | | #ifndef TRUE |
139 | 0 | # define TRUE 1 |
140 | | #endif |
141 | | |
142 | | #ifndef FALSE |
143 | 0 | # define FALSE 0 |
144 | | #endif |
145 | | |
146 | | #ifndef min |
147 | 0 | # define min(x, y) __extension__ ({ \ |
148 | 0 | __typeof__(x) _min1 = (x); \ |
149 | 0 | __typeof__(y) _min2 = (y); \ |
150 | 0 | (void) (&_min1 == &_min2); \ |
151 | 0 | _min1 < _min2 ? _min1 : _min2; }) |
152 | | #endif |
153 | | |
154 | | #ifndef max |
155 | 0 | # define max(x, y) __extension__ ({ \ |
156 | 0 | __typeof__(x) _max1 = (x); \ |
157 | 0 | __typeof__(y) _max2 = (y); \ |
158 | 0 | (void) (&_max1 == &_max2); \ |
159 | 0 | _max1 > _max2 ? _max1 : _max2; }) |
160 | | #endif |
161 | | |
162 | | #ifndef abs_diff |
163 | | # define abs_diff(x, y) __extension__ ({ \ |
164 | | __typeof__(x) _a = (x); \ |
165 | | __typeof__(y) _b = (y); \ |
166 | | (void) (&_a == &_b); \ |
167 | | _a > _b ? _a - _b : _b - _a; }) |
168 | | #endif |
169 | | |
170 | | #ifndef cmp_numbers |
171 | 0 | # define cmp_numbers(x, y) __extension__ ({ \ |
172 | 0 | __typeof__(x) _a = (x); \ |
173 | 0 | __typeof__(y) _b = (y); \ |
174 | 0 | (void) (&_a == &_b); \ |
175 | 0 | _a == _b ? 0 : _a > _b ? 1 : -1; }) |
176 | | #endif |
177 | | |
178 | | |
179 | | #ifndef cmp_timespec |
180 | | # define cmp_timespec(a, b, CMP) \ |
181 | | (((a)->tv_sec == (b)->tv_sec) \ |
182 | | ? ((a)->tv_nsec CMP (b)->tv_nsec) \ |
183 | | : ((a)->tv_sec CMP (b)->tv_sec)) |
184 | | #endif |
185 | | |
186 | | |
187 | | #ifndef cmp_stat_mtime |
188 | | # ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC |
189 | | # define cmp_stat_mtime(_a, _b, CMP) cmp_timespec(&(_a)->st_mtim, &(_b)->st_mtim, CMP) |
190 | | # else |
191 | | # define cmp_stat_mtime(_a, _b, CMP) ((_a)->st_mtime CMP (_b)->st_mtime) |
192 | | # endif |
193 | | #endif |
194 | | |
195 | | |
196 | | #ifndef offsetof |
197 | | #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) |
198 | | #endif |
199 | | |
200 | | #ifndef sizeof_member |
201 | | #define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER) |
202 | | #endif |
203 | | |
204 | | /* |
205 | | * container_of - cast a member of a structure out to the containing structure |
206 | | * @ptr: the pointer to the member. |
207 | | * @type: the type of the container struct this is embedded in. |
208 | | * @member: the name of the member within the struct. |
209 | | */ |
210 | | #ifndef container_of |
211 | 41.0k | #define container_of(ptr, type, member) __extension__ ({ \ |
212 | 41.0k | const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ |
213 | 41.0k | (type *)( (char *)__mptr - offsetof(type,member) );}) |
214 | | #endif |
215 | | |
216 | | #ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME |
217 | | # ifdef HAVE___PROGNAME |
218 | | extern char *__progname; |
219 | | # define program_invocation_short_name __progname |
220 | | # else |
221 | | # ifdef HAVE_GETEXECNAME |
222 | | # define program_invocation_short_name \ |
223 | | prog_inv_sh_nm_from_file(getexecname(), 0) |
224 | | # else |
225 | | # define program_invocation_short_name \ |
226 | | prog_inv_sh_nm_from_file(__FILE__, 1) |
227 | | # endif |
228 | | static char prog_inv_sh_nm_buf[256]; |
229 | | static inline char * |
230 | | prog_inv_sh_nm_from_file(char *f, char stripext) |
231 | | { |
232 | | char *t; |
233 | | |
234 | | if ((t = strrchr(f, '/')) != NULL) |
235 | | t++; |
236 | | else |
237 | | t = f; |
238 | | |
239 | | strncpy(prog_inv_sh_nm_buf, t, sizeof(prog_inv_sh_nm_buf) - 1); |
240 | | prog_inv_sh_nm_buf[sizeof(prog_inv_sh_nm_buf) - 1] = '\0'; |
241 | | |
242 | | if (stripext && (t = strrchr(prog_inv_sh_nm_buf, '.')) != NULL) |
243 | | *t = '\0'; |
244 | | |
245 | | return prog_inv_sh_nm_buf; |
246 | | } |
247 | | # endif |
248 | | #endif |
249 | | |
250 | | |
251 | | #ifndef HAVE_ERR_H |
252 | | static inline void __attribute__ ((__format__ (__printf__, 4, 5))) |
253 | | errmsg(char doexit, int excode, char adderr, const char *fmt, ...) |
254 | | { |
255 | | fprintf(stderr, "%s: ", program_invocation_short_name); |
256 | | if (fmt != NULL) { |
257 | | va_list argp; |
258 | | va_start(argp, fmt); |
259 | | vfprintf(stderr, fmt, argp); |
260 | | va_end(argp); |
261 | | if (adderr) |
262 | | fprintf(stderr, ": "); |
263 | | } |
264 | | if (adderr) |
265 | | fprintf(stderr, "%m"); |
266 | | fprintf(stderr, "\n"); |
267 | | if (doexit) |
268 | | exit(excode); |
269 | | } |
270 | | |
271 | | #ifndef HAVE_ERR |
272 | | # define err(E, FMT...) errmsg(1, E, 1, FMT) |
273 | | #endif |
274 | | |
275 | | #ifndef HAVE_ERRX |
276 | | # define errx(E, FMT...) errmsg(1, E, 0, FMT) |
277 | | #endif |
278 | | |
279 | | #ifndef HAVE_WARN |
280 | | # define warn(FMT...) errmsg(0, 0, 1, FMT) |
281 | | #endif |
282 | | |
283 | | #ifndef HAVE_WARNX |
284 | | # define warnx(FMT...) errmsg(0, 0, 0, FMT) |
285 | | #endif |
286 | | #endif /* !HAVE_ERR_H */ |
287 | | |
288 | | |
289 | | static inline |
290 | | __attribute__((__noreturn__)) |
291 | | void __err_oom(const char *file, unsigned int line) |
292 | 0 | { |
293 | 0 | err(EXIT_FAILURE, "%s: %u: cannot allocate memory", file, line); |
294 | 0 | } Unexecuted instantiation: script.c:__err_oom Unexecuted instantiation: fileutils.c:__err_oom Unexecuted instantiation: jsonwrt.c:__err_oom Unexecuted instantiation: mangle.c:__err_oom Unexecuted instantiation: strutils.c:__err_oom Unexecuted instantiation: init.c:__err_oom Unexecuted instantiation: ask.c:__err_oom Unexecuted instantiation: alignment.c:__err_oom Unexecuted instantiation: label.c:__err_oom Unexecuted instantiation: utils.c:__err_oom Unexecuted instantiation: context.c:__err_oom Unexecuted instantiation: parttype.c:__err_oom Unexecuted instantiation: partition.c:__err_oom Unexecuted instantiation: table.c:__err_oom Unexecuted instantiation: iter.c:__err_oom Unexecuted instantiation: version.c:__err_oom Unexecuted instantiation: wipe.c:__err_oom Unexecuted instantiation: sun.c:__err_oom Unexecuted instantiation: sgi.c:__err_oom Unexecuted instantiation: dos.c:__err_oom Unexecuted instantiation: bsd.c:__err_oom Unexecuted instantiation: gpt.c:__err_oom Unexecuted instantiation: blkdev.c:__err_oom Unexecuted instantiation: canonicalize.c:__err_oom Unexecuted instantiation: encode.c:__err_oom Unexecuted instantiation: path.c:__err_oom Unexecuted instantiation: randutils.c:__err_oom Unexecuted instantiation: sysfs.c:__err_oom Unexecuted instantiation: item.c:__err_oom Unexecuted instantiation: buffer.c:__err_oom Unexecuted instantiation: cpuset.c:__err_oom Unexecuted instantiation: mbsalign.c:__err_oom Unexecuted instantiation: gen_uuid.c:__err_oom Unexecuted instantiation: parse.c:__err_oom Unexecuted instantiation: unparse.c:__err_oom Unexecuted instantiation: probe.c:__err_oom Unexecuted instantiation: tag.c:__err_oom Unexecuted instantiation: verify.c:__err_oom Unexecuted instantiation: partitions.c:__err_oom Unexecuted instantiation: solaris_x86.c:__err_oom Unexecuted instantiation: ultrix.c:__err_oom Unexecuted instantiation: unixware.c:__err_oom Unexecuted instantiation: superblocks.c:__err_oom Unexecuted instantiation: swap.c:__err_oom Unexecuted instantiation: sysv.c:__err_oom Unexecuted instantiation: ubi.c:__err_oom Unexecuted instantiation: ubifs.c:__err_oom Unexecuted instantiation: udf.c:__err_oom Unexecuted instantiation: ufs.c:__err_oom Unexecuted instantiation: vdo.c:__err_oom Unexecuted instantiation: vfat.c:__err_oom Unexecuted instantiation: via_raid.c:__err_oom Unexecuted instantiation: vmfs.c:__err_oom Unexecuted instantiation: vxfs.c:__err_oom Unexecuted instantiation: xfs.c:__err_oom Unexecuted instantiation: zfs.c:__err_oom Unexecuted instantiation: zonefs.c:__err_oom Unexecuted instantiation: erofs.c:__err_oom Unexecuted instantiation: topology.c:__err_oom Unexecuted instantiation: dm.c:__err_oom Unexecuted instantiation: evms.c:__err_oom Unexecuted instantiation: ioctl.c:__err_oom Unexecuted instantiation: lvm.c:__err_oom Unexecuted instantiation: md.c:__err_oom Unexecuted instantiation: dev.c:__err_oom Unexecuted instantiation: devname.c:__err_oom Unexecuted instantiation: devno.c:__err_oom Unexecuted instantiation: read.c:__err_oom Unexecuted instantiation: save.c:__err_oom Unexecuted instantiation: aix.c:__err_oom Unexecuted instantiation: atari.c:__err_oom Unexecuted instantiation: mac.c:__err_oom Unexecuted instantiation: minix.c:__err_oom Unexecuted instantiation: adaptec_raid.c:__err_oom Unexecuted instantiation: apfs.c:__err_oom Unexecuted instantiation: bcache.c:__err_oom Unexecuted instantiation: befs.c:__err_oom Unexecuted instantiation: bfs.c:__err_oom Unexecuted instantiation: bitlocker.c:__err_oom Unexecuted instantiation: bluestore.c:__err_oom Unexecuted instantiation: btrfs.c:__err_oom Unexecuted instantiation: cs_fvault2.c:__err_oom Unexecuted instantiation: cramfs.c:__err_oom Unexecuted instantiation: ddf_raid.c:__err_oom Unexecuted instantiation: drbd.c:__err_oom Unexecuted instantiation: drbdproxy_datalog.c:__err_oom Unexecuted instantiation: drbdmanage.c:__err_oom Unexecuted instantiation: exfat.c:__err_oom Unexecuted instantiation: exfs.c:__err_oom Unexecuted instantiation: ext.c:__err_oom Unexecuted instantiation: f2fs.c:__err_oom Unexecuted instantiation: gfs.c:__err_oom Unexecuted instantiation: hfs.c:__err_oom Unexecuted instantiation: highpoint_raid.c:__err_oom Unexecuted instantiation: hpfs.c:__err_oom Unexecuted instantiation: iso9660.c:__err_oom Unexecuted instantiation: isw_raid.c:__err_oom Unexecuted instantiation: jfs.c:__err_oom Unexecuted instantiation: jmicron_raid.c:__err_oom Unexecuted instantiation: linux_raid.c:__err_oom Unexecuted instantiation: lsi_raid.c:__err_oom Unexecuted instantiation: luks.c:__err_oom Unexecuted instantiation: mpool.c:__err_oom Unexecuted instantiation: netware.c:__err_oom Unexecuted instantiation: nilfs.c:__err_oom Unexecuted instantiation: ntfs.c:__err_oom Unexecuted instantiation: refs.c:__err_oom Unexecuted instantiation: nvidia_raid.c:__err_oom Unexecuted instantiation: ocfs.c:__err_oom Unexecuted instantiation: promise_raid.c:__err_oom Unexecuted instantiation: reiserfs.c:__err_oom Unexecuted instantiation: romfs.c:__err_oom Unexecuted instantiation: silicon_raid.c:__err_oom Unexecuted instantiation: squashfs.c:__err_oom Unexecuted instantiation: stratis.c:__err_oom Unexecuted instantiation: cache.c:__err_oom Unexecuted instantiation: config.c:__err_oom Unexecuted instantiation: env.c:__err_oom |
295 | | #define err_oom() __err_oom(__FILE__, __LINE__) |
296 | | |
297 | | |
298 | | /* Don't use inline function to avoid '#include "nls.h"' in c.h |
299 | | */ |
300 | | #define errtryhelp(eval) __extension__ ({ \ |
301 | | fprintf(stderr, _("Try '%s --help' for more information.\n"), \ |
302 | | program_invocation_short_name); \ |
303 | | exit(eval); \ |
304 | | }) |
305 | | |
306 | | /* After failed execvp() */ |
307 | | #define EX_EXEC_FAILED 126 /* Program located, but not usable. */ |
308 | | #define EX_EXEC_ENOENT 127 /* Could not find program to exec. */ |
309 | | #define errexec(name) err(errno == ENOENT ? EX_EXEC_ENOENT : EX_EXEC_FAILED, \ |
310 | | _("failed to execute %s"), name) |
311 | | |
312 | | static inline __attribute__((const)) int is_power_of_2(unsigned long num) |
313 | 0 | { |
314 | 0 | return (num != 0 && ((num & (num - 1)) == 0)); |
315 | 0 | } Unexecuted instantiation: script.c:is_power_of_2 Unexecuted instantiation: fileutils.c:is_power_of_2 Unexecuted instantiation: jsonwrt.c:is_power_of_2 Unexecuted instantiation: mangle.c:is_power_of_2 Unexecuted instantiation: strutils.c:is_power_of_2 Unexecuted instantiation: init.c:is_power_of_2 Unexecuted instantiation: ask.c:is_power_of_2 Unexecuted instantiation: alignment.c:is_power_of_2 Unexecuted instantiation: label.c:is_power_of_2 Unexecuted instantiation: utils.c:is_power_of_2 Unexecuted instantiation: context.c:is_power_of_2 Unexecuted instantiation: parttype.c:is_power_of_2 Unexecuted instantiation: partition.c:is_power_of_2 Unexecuted instantiation: table.c:is_power_of_2 Unexecuted instantiation: iter.c:is_power_of_2 Unexecuted instantiation: version.c:is_power_of_2 Unexecuted instantiation: wipe.c:is_power_of_2 Unexecuted instantiation: sun.c:is_power_of_2 Unexecuted instantiation: sgi.c:is_power_of_2 Unexecuted instantiation: dos.c:is_power_of_2 Unexecuted instantiation: bsd.c:is_power_of_2 Unexecuted instantiation: gpt.c:is_power_of_2 Unexecuted instantiation: blkdev.c:is_power_of_2 Unexecuted instantiation: canonicalize.c:is_power_of_2 Unexecuted instantiation: encode.c:is_power_of_2 Unexecuted instantiation: path.c:is_power_of_2 Unexecuted instantiation: randutils.c:is_power_of_2 Unexecuted instantiation: sysfs.c:is_power_of_2 Unexecuted instantiation: item.c:is_power_of_2 Unexecuted instantiation: buffer.c:is_power_of_2 Unexecuted instantiation: cpuset.c:is_power_of_2 Unexecuted instantiation: mbsalign.c:is_power_of_2 Unexecuted instantiation: gen_uuid.c:is_power_of_2 Unexecuted instantiation: parse.c:is_power_of_2 Unexecuted instantiation: unparse.c:is_power_of_2 Unexecuted instantiation: probe.c:is_power_of_2 Unexecuted instantiation: tag.c:is_power_of_2 Unexecuted instantiation: verify.c:is_power_of_2 Unexecuted instantiation: partitions.c:is_power_of_2 Unexecuted instantiation: solaris_x86.c:is_power_of_2 Unexecuted instantiation: ultrix.c:is_power_of_2 Unexecuted instantiation: unixware.c:is_power_of_2 Unexecuted instantiation: superblocks.c:is_power_of_2 Unexecuted instantiation: swap.c:is_power_of_2 Unexecuted instantiation: sysv.c:is_power_of_2 Unexecuted instantiation: ubi.c:is_power_of_2 Unexecuted instantiation: ubifs.c:is_power_of_2 Unexecuted instantiation: udf.c:is_power_of_2 Unexecuted instantiation: ufs.c:is_power_of_2 Unexecuted instantiation: vdo.c:is_power_of_2 Unexecuted instantiation: vfat.c:is_power_of_2 Unexecuted instantiation: via_raid.c:is_power_of_2 Unexecuted instantiation: vmfs.c:is_power_of_2 Unexecuted instantiation: vxfs.c:is_power_of_2 Unexecuted instantiation: xfs.c:is_power_of_2 Unexecuted instantiation: zfs.c:is_power_of_2 Unexecuted instantiation: zonefs.c:is_power_of_2 Unexecuted instantiation: erofs.c:is_power_of_2 Unexecuted instantiation: topology.c:is_power_of_2 Unexecuted instantiation: dm.c:is_power_of_2 Unexecuted instantiation: evms.c:is_power_of_2 Unexecuted instantiation: ioctl.c:is_power_of_2 Unexecuted instantiation: lvm.c:is_power_of_2 Unexecuted instantiation: md.c:is_power_of_2 Unexecuted instantiation: dev.c:is_power_of_2 Unexecuted instantiation: devname.c:is_power_of_2 Unexecuted instantiation: devno.c:is_power_of_2 Unexecuted instantiation: read.c:is_power_of_2 Unexecuted instantiation: save.c:is_power_of_2 Unexecuted instantiation: aix.c:is_power_of_2 Unexecuted instantiation: atari.c:is_power_of_2 Unexecuted instantiation: mac.c:is_power_of_2 Unexecuted instantiation: minix.c:is_power_of_2 Unexecuted instantiation: adaptec_raid.c:is_power_of_2 Unexecuted instantiation: apfs.c:is_power_of_2 Unexecuted instantiation: bcache.c:is_power_of_2 Unexecuted instantiation: befs.c:is_power_of_2 Unexecuted instantiation: bfs.c:is_power_of_2 Unexecuted instantiation: bitlocker.c:is_power_of_2 Unexecuted instantiation: bluestore.c:is_power_of_2 Unexecuted instantiation: btrfs.c:is_power_of_2 Unexecuted instantiation: cs_fvault2.c:is_power_of_2 Unexecuted instantiation: cramfs.c:is_power_of_2 Unexecuted instantiation: ddf_raid.c:is_power_of_2 Unexecuted instantiation: drbd.c:is_power_of_2 Unexecuted instantiation: drbdproxy_datalog.c:is_power_of_2 Unexecuted instantiation: drbdmanage.c:is_power_of_2 Unexecuted instantiation: exfat.c:is_power_of_2 Unexecuted instantiation: exfs.c:is_power_of_2 Unexecuted instantiation: ext.c:is_power_of_2 Unexecuted instantiation: f2fs.c:is_power_of_2 Unexecuted instantiation: gfs.c:is_power_of_2 Unexecuted instantiation: hfs.c:is_power_of_2 Unexecuted instantiation: highpoint_raid.c:is_power_of_2 Unexecuted instantiation: hpfs.c:is_power_of_2 Unexecuted instantiation: iso9660.c:is_power_of_2 Unexecuted instantiation: isw_raid.c:is_power_of_2 Unexecuted instantiation: jfs.c:is_power_of_2 Unexecuted instantiation: jmicron_raid.c:is_power_of_2 Unexecuted instantiation: linux_raid.c:is_power_of_2 Unexecuted instantiation: lsi_raid.c:is_power_of_2 Unexecuted instantiation: luks.c:is_power_of_2 Unexecuted instantiation: mpool.c:is_power_of_2 Unexecuted instantiation: netware.c:is_power_of_2 Unexecuted instantiation: nilfs.c:is_power_of_2 Unexecuted instantiation: ntfs.c:is_power_of_2 Unexecuted instantiation: refs.c:is_power_of_2 Unexecuted instantiation: nvidia_raid.c:is_power_of_2 Unexecuted instantiation: ocfs.c:is_power_of_2 Unexecuted instantiation: promise_raid.c:is_power_of_2 Unexecuted instantiation: reiserfs.c:is_power_of_2 Unexecuted instantiation: romfs.c:is_power_of_2 Unexecuted instantiation: silicon_raid.c:is_power_of_2 Unexecuted instantiation: squashfs.c:is_power_of_2 Unexecuted instantiation: stratis.c:is_power_of_2 Unexecuted instantiation: cache.c:is_power_of_2 Unexecuted instantiation: config.c:is_power_of_2 Unexecuted instantiation: env.c:is_power_of_2 |
316 | | |
317 | | #ifndef HAVE_LOFF_T |
318 | | typedef int64_t loff_t; |
319 | | #endif |
320 | | |
321 | | #if !defined(HAVE_DIRFD) \ |
322 | | && (!defined(HAVE_DECL_DIRFD) || HAVE_DECL_DIRFD == 0) \ |
323 | | && defined(HAVE_DIR_DD_FD) |
324 | | #include <dirent.h> |
325 | | static inline int dirfd(DIR *d) |
326 | | { |
327 | | return d->dd_fd; |
328 | | } |
329 | | #endif |
330 | | |
331 | | /* |
332 | | * Fallback defines for old versions of glibc |
333 | | */ |
334 | | #include <fcntl.h> |
335 | | |
336 | | #ifdef O_CLOEXEC |
337 | 2.04k | #define UL_CLOEXECSTR "e" |
338 | | #else |
339 | | #define UL_CLOEXECSTR "" |
340 | | #endif |
341 | | |
342 | | #ifndef O_CLOEXEC |
343 | | #define O_CLOEXEC 0 |
344 | | #endif |
345 | | |
346 | | #ifdef __FreeBSD_kernel__ |
347 | | #ifndef F_DUPFD_CLOEXEC |
348 | | #define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */ |
349 | | #endif |
350 | | #endif |
351 | | |
352 | | |
353 | | #ifndef AI_ADDRCONFIG |
354 | | #define AI_ADDRCONFIG 0x0020 |
355 | | #endif |
356 | | |
357 | | #ifndef IUTF8 |
358 | | #define IUTF8 0040000 |
359 | | #endif |
360 | | |
361 | | /* |
362 | | * MAXHOSTNAMELEN replacement |
363 | | */ |
364 | | static inline size_t get_hostname_max(void) |
365 | 0 | { |
366 | 0 | long len = sysconf(_SC_HOST_NAME_MAX); |
367 | 0 |
|
368 | 0 | if (0 < len) |
369 | 0 | return len; |
370 | 0 |
|
371 | 0 | #ifdef MAXHOSTNAMELEN |
372 | 0 | return MAXHOSTNAMELEN; |
373 | 0 | #elif HOST_NAME_MAX |
374 | 0 | return HOST_NAME_MAX; |
375 | 0 | #endif |
376 | 0 | return 64; |
377 | 0 | } Unexecuted instantiation: script.c:get_hostname_max Unexecuted instantiation: fileutils.c:get_hostname_max Unexecuted instantiation: jsonwrt.c:get_hostname_max Unexecuted instantiation: mangle.c:get_hostname_max Unexecuted instantiation: strutils.c:get_hostname_max Unexecuted instantiation: init.c:get_hostname_max Unexecuted instantiation: ask.c:get_hostname_max Unexecuted instantiation: alignment.c:get_hostname_max Unexecuted instantiation: label.c:get_hostname_max Unexecuted instantiation: utils.c:get_hostname_max Unexecuted instantiation: context.c:get_hostname_max Unexecuted instantiation: parttype.c:get_hostname_max Unexecuted instantiation: partition.c:get_hostname_max Unexecuted instantiation: table.c:get_hostname_max Unexecuted instantiation: iter.c:get_hostname_max Unexecuted instantiation: version.c:get_hostname_max Unexecuted instantiation: wipe.c:get_hostname_max Unexecuted instantiation: sun.c:get_hostname_max Unexecuted instantiation: sgi.c:get_hostname_max Unexecuted instantiation: dos.c:get_hostname_max Unexecuted instantiation: bsd.c:get_hostname_max Unexecuted instantiation: gpt.c:get_hostname_max Unexecuted instantiation: blkdev.c:get_hostname_max Unexecuted instantiation: canonicalize.c:get_hostname_max Unexecuted instantiation: encode.c:get_hostname_max Unexecuted instantiation: path.c:get_hostname_max Unexecuted instantiation: randutils.c:get_hostname_max Unexecuted instantiation: sysfs.c:get_hostname_max Unexecuted instantiation: item.c:get_hostname_max Unexecuted instantiation: buffer.c:get_hostname_max Unexecuted instantiation: cpuset.c:get_hostname_max Unexecuted instantiation: mbsalign.c:get_hostname_max Unexecuted instantiation: gen_uuid.c:get_hostname_max Unexecuted instantiation: parse.c:get_hostname_max Unexecuted instantiation: unparse.c:get_hostname_max Unexecuted instantiation: probe.c:get_hostname_max Unexecuted instantiation: tag.c:get_hostname_max Unexecuted instantiation: verify.c:get_hostname_max Unexecuted instantiation: partitions.c:get_hostname_max Unexecuted instantiation: solaris_x86.c:get_hostname_max Unexecuted instantiation: ultrix.c:get_hostname_max Unexecuted instantiation: unixware.c:get_hostname_max Unexecuted instantiation: superblocks.c:get_hostname_max Unexecuted instantiation: swap.c:get_hostname_max Unexecuted instantiation: sysv.c:get_hostname_max Unexecuted instantiation: ubi.c:get_hostname_max Unexecuted instantiation: ubifs.c:get_hostname_max Unexecuted instantiation: udf.c:get_hostname_max Unexecuted instantiation: ufs.c:get_hostname_max Unexecuted instantiation: vdo.c:get_hostname_max Unexecuted instantiation: vfat.c:get_hostname_max Unexecuted instantiation: via_raid.c:get_hostname_max Unexecuted instantiation: vmfs.c:get_hostname_max Unexecuted instantiation: vxfs.c:get_hostname_max Unexecuted instantiation: xfs.c:get_hostname_max Unexecuted instantiation: zfs.c:get_hostname_max Unexecuted instantiation: zonefs.c:get_hostname_max Unexecuted instantiation: erofs.c:get_hostname_max Unexecuted instantiation: topology.c:get_hostname_max Unexecuted instantiation: dm.c:get_hostname_max Unexecuted instantiation: evms.c:get_hostname_max Unexecuted instantiation: ioctl.c:get_hostname_max Unexecuted instantiation: lvm.c:get_hostname_max Unexecuted instantiation: md.c:get_hostname_max Unexecuted instantiation: dev.c:get_hostname_max Unexecuted instantiation: devname.c:get_hostname_max Unexecuted instantiation: devno.c:get_hostname_max Unexecuted instantiation: read.c:get_hostname_max Unexecuted instantiation: save.c:get_hostname_max Unexecuted instantiation: aix.c:get_hostname_max Unexecuted instantiation: atari.c:get_hostname_max Unexecuted instantiation: mac.c:get_hostname_max Unexecuted instantiation: minix.c:get_hostname_max Unexecuted instantiation: adaptec_raid.c:get_hostname_max Unexecuted instantiation: apfs.c:get_hostname_max Unexecuted instantiation: bcache.c:get_hostname_max Unexecuted instantiation: befs.c:get_hostname_max Unexecuted instantiation: bfs.c:get_hostname_max Unexecuted instantiation: bitlocker.c:get_hostname_max Unexecuted instantiation: bluestore.c:get_hostname_max Unexecuted instantiation: btrfs.c:get_hostname_max Unexecuted instantiation: cs_fvault2.c:get_hostname_max Unexecuted instantiation: cramfs.c:get_hostname_max Unexecuted instantiation: ddf_raid.c:get_hostname_max Unexecuted instantiation: drbd.c:get_hostname_max Unexecuted instantiation: drbdproxy_datalog.c:get_hostname_max Unexecuted instantiation: drbdmanage.c:get_hostname_max Unexecuted instantiation: exfat.c:get_hostname_max Unexecuted instantiation: exfs.c:get_hostname_max Unexecuted instantiation: ext.c:get_hostname_max Unexecuted instantiation: f2fs.c:get_hostname_max Unexecuted instantiation: gfs.c:get_hostname_max Unexecuted instantiation: hfs.c:get_hostname_max Unexecuted instantiation: highpoint_raid.c:get_hostname_max Unexecuted instantiation: hpfs.c:get_hostname_max Unexecuted instantiation: iso9660.c:get_hostname_max Unexecuted instantiation: isw_raid.c:get_hostname_max Unexecuted instantiation: jfs.c:get_hostname_max Unexecuted instantiation: jmicron_raid.c:get_hostname_max Unexecuted instantiation: linux_raid.c:get_hostname_max Unexecuted instantiation: lsi_raid.c:get_hostname_max Unexecuted instantiation: luks.c:get_hostname_max Unexecuted instantiation: mpool.c:get_hostname_max Unexecuted instantiation: netware.c:get_hostname_max Unexecuted instantiation: nilfs.c:get_hostname_max Unexecuted instantiation: ntfs.c:get_hostname_max Unexecuted instantiation: refs.c:get_hostname_max Unexecuted instantiation: nvidia_raid.c:get_hostname_max Unexecuted instantiation: ocfs.c:get_hostname_max Unexecuted instantiation: promise_raid.c:get_hostname_max Unexecuted instantiation: reiserfs.c:get_hostname_max Unexecuted instantiation: romfs.c:get_hostname_max Unexecuted instantiation: silicon_raid.c:get_hostname_max Unexecuted instantiation: squashfs.c:get_hostname_max Unexecuted instantiation: stratis.c:get_hostname_max Unexecuted instantiation: cache.c:get_hostname_max Unexecuted instantiation: config.c:get_hostname_max Unexecuted instantiation: env.c:get_hostname_max |
378 | | |
379 | | |
380 | | static inline int drop_permissions(void) |
381 | 0 | { |
382 | 0 | errno = 0; |
383 | | |
384 | | /* drop GID */ |
385 | 0 | if (setgid(getgid()) < 0) |
386 | 0 | goto fail; |
387 | | |
388 | | /* drop UID */ |
389 | 0 | if (setuid(getuid()) < 0) |
390 | 0 | goto fail; |
391 | | |
392 | 0 | return 0; |
393 | 0 | fail: |
394 | 0 | return errno ? -errno : -1; |
395 | 0 | } Unexecuted instantiation: script.c:drop_permissions Unexecuted instantiation: fileutils.c:drop_permissions Unexecuted instantiation: jsonwrt.c:drop_permissions Unexecuted instantiation: mangle.c:drop_permissions Unexecuted instantiation: strutils.c:drop_permissions Unexecuted instantiation: init.c:drop_permissions Unexecuted instantiation: ask.c:drop_permissions Unexecuted instantiation: alignment.c:drop_permissions Unexecuted instantiation: label.c:drop_permissions Unexecuted instantiation: utils.c:drop_permissions Unexecuted instantiation: context.c:drop_permissions Unexecuted instantiation: parttype.c:drop_permissions Unexecuted instantiation: partition.c:drop_permissions Unexecuted instantiation: table.c:drop_permissions Unexecuted instantiation: iter.c:drop_permissions Unexecuted instantiation: version.c:drop_permissions Unexecuted instantiation: wipe.c:drop_permissions Unexecuted instantiation: sun.c:drop_permissions Unexecuted instantiation: sgi.c:drop_permissions Unexecuted instantiation: dos.c:drop_permissions Unexecuted instantiation: bsd.c:drop_permissions Unexecuted instantiation: gpt.c:drop_permissions Unexecuted instantiation: blkdev.c:drop_permissions Unexecuted instantiation: canonicalize.c:drop_permissions Unexecuted instantiation: encode.c:drop_permissions Unexecuted instantiation: path.c:drop_permissions Unexecuted instantiation: randutils.c:drop_permissions Unexecuted instantiation: sysfs.c:drop_permissions Unexecuted instantiation: item.c:drop_permissions Unexecuted instantiation: buffer.c:drop_permissions Unexecuted instantiation: cpuset.c:drop_permissions Unexecuted instantiation: mbsalign.c:drop_permissions Unexecuted instantiation: gen_uuid.c:drop_permissions Unexecuted instantiation: parse.c:drop_permissions Unexecuted instantiation: unparse.c:drop_permissions Unexecuted instantiation: probe.c:drop_permissions Unexecuted instantiation: tag.c:drop_permissions Unexecuted instantiation: verify.c:drop_permissions Unexecuted instantiation: partitions.c:drop_permissions Unexecuted instantiation: solaris_x86.c:drop_permissions Unexecuted instantiation: ultrix.c:drop_permissions Unexecuted instantiation: unixware.c:drop_permissions Unexecuted instantiation: superblocks.c:drop_permissions Unexecuted instantiation: swap.c:drop_permissions Unexecuted instantiation: sysv.c:drop_permissions Unexecuted instantiation: ubi.c:drop_permissions Unexecuted instantiation: ubifs.c:drop_permissions Unexecuted instantiation: udf.c:drop_permissions Unexecuted instantiation: ufs.c:drop_permissions Unexecuted instantiation: vdo.c:drop_permissions Unexecuted instantiation: vfat.c:drop_permissions Unexecuted instantiation: via_raid.c:drop_permissions Unexecuted instantiation: vmfs.c:drop_permissions Unexecuted instantiation: vxfs.c:drop_permissions Unexecuted instantiation: xfs.c:drop_permissions Unexecuted instantiation: zfs.c:drop_permissions Unexecuted instantiation: zonefs.c:drop_permissions Unexecuted instantiation: erofs.c:drop_permissions Unexecuted instantiation: topology.c:drop_permissions Unexecuted instantiation: dm.c:drop_permissions Unexecuted instantiation: evms.c:drop_permissions Unexecuted instantiation: ioctl.c:drop_permissions Unexecuted instantiation: lvm.c:drop_permissions Unexecuted instantiation: md.c:drop_permissions Unexecuted instantiation: dev.c:drop_permissions Unexecuted instantiation: devname.c:drop_permissions Unexecuted instantiation: devno.c:drop_permissions Unexecuted instantiation: read.c:drop_permissions Unexecuted instantiation: save.c:drop_permissions Unexecuted instantiation: aix.c:drop_permissions Unexecuted instantiation: atari.c:drop_permissions Unexecuted instantiation: mac.c:drop_permissions Unexecuted instantiation: minix.c:drop_permissions Unexecuted instantiation: adaptec_raid.c:drop_permissions Unexecuted instantiation: apfs.c:drop_permissions Unexecuted instantiation: bcache.c:drop_permissions Unexecuted instantiation: befs.c:drop_permissions Unexecuted instantiation: bfs.c:drop_permissions Unexecuted instantiation: bitlocker.c:drop_permissions Unexecuted instantiation: bluestore.c:drop_permissions Unexecuted instantiation: btrfs.c:drop_permissions Unexecuted instantiation: cs_fvault2.c:drop_permissions Unexecuted instantiation: cramfs.c:drop_permissions Unexecuted instantiation: ddf_raid.c:drop_permissions Unexecuted instantiation: drbd.c:drop_permissions Unexecuted instantiation: drbdproxy_datalog.c:drop_permissions Unexecuted instantiation: drbdmanage.c:drop_permissions Unexecuted instantiation: exfat.c:drop_permissions Unexecuted instantiation: exfs.c:drop_permissions Unexecuted instantiation: ext.c:drop_permissions Unexecuted instantiation: f2fs.c:drop_permissions Unexecuted instantiation: gfs.c:drop_permissions Unexecuted instantiation: hfs.c:drop_permissions Unexecuted instantiation: highpoint_raid.c:drop_permissions Unexecuted instantiation: hpfs.c:drop_permissions Unexecuted instantiation: iso9660.c:drop_permissions Unexecuted instantiation: isw_raid.c:drop_permissions Unexecuted instantiation: jfs.c:drop_permissions Unexecuted instantiation: jmicron_raid.c:drop_permissions Unexecuted instantiation: linux_raid.c:drop_permissions Unexecuted instantiation: lsi_raid.c:drop_permissions Unexecuted instantiation: luks.c:drop_permissions Unexecuted instantiation: mpool.c:drop_permissions Unexecuted instantiation: netware.c:drop_permissions Unexecuted instantiation: nilfs.c:drop_permissions Unexecuted instantiation: ntfs.c:drop_permissions Unexecuted instantiation: refs.c:drop_permissions Unexecuted instantiation: nvidia_raid.c:drop_permissions Unexecuted instantiation: ocfs.c:drop_permissions Unexecuted instantiation: promise_raid.c:drop_permissions Unexecuted instantiation: reiserfs.c:drop_permissions Unexecuted instantiation: romfs.c:drop_permissions Unexecuted instantiation: silicon_raid.c:drop_permissions Unexecuted instantiation: squashfs.c:drop_permissions Unexecuted instantiation: stratis.c:drop_permissions Unexecuted instantiation: cache.c:drop_permissions Unexecuted instantiation: config.c:drop_permissions Unexecuted instantiation: env.c:drop_permissions |
396 | | |
397 | | /* |
398 | | * The usleep function was marked obsolete in POSIX.1-2001 and was removed |
399 | | * in POSIX.1-2008. It was replaced with nanosleep() that provides more |
400 | | * advantages (like no interaction with signals and other timer functions). |
401 | | */ |
402 | | #include <time.h> |
403 | | |
404 | | static inline int xusleep(useconds_t usec) |
405 | 0 | { |
406 | 0 | #ifdef HAVE_NANOSLEEP |
407 | 0 | struct timespec waittime = { |
408 | 0 | .tv_sec = usec / 1000000L, |
409 | 0 | .tv_nsec = (usec % 1000000L) * 1000 |
410 | 0 | }; |
411 | 0 | return nanosleep(&waittime, NULL); |
412 | | #elif defined(HAVE_USLEEP) |
413 | | return usleep(usec); |
414 | | #else |
415 | | # error "System with usleep() or nanosleep() required!" |
416 | | #endif |
417 | 0 | } Unexecuted instantiation: script.c:xusleep Unexecuted instantiation: fileutils.c:xusleep Unexecuted instantiation: jsonwrt.c:xusleep Unexecuted instantiation: mangle.c:xusleep Unexecuted instantiation: strutils.c:xusleep Unexecuted instantiation: init.c:xusleep Unexecuted instantiation: ask.c:xusleep Unexecuted instantiation: alignment.c:xusleep Unexecuted instantiation: label.c:xusleep Unexecuted instantiation: utils.c:xusleep Unexecuted instantiation: context.c:xusleep Unexecuted instantiation: parttype.c:xusleep Unexecuted instantiation: partition.c:xusleep Unexecuted instantiation: table.c:xusleep Unexecuted instantiation: iter.c:xusleep Unexecuted instantiation: version.c:xusleep Unexecuted instantiation: wipe.c:xusleep Unexecuted instantiation: sun.c:xusleep Unexecuted instantiation: sgi.c:xusleep Unexecuted instantiation: dos.c:xusleep Unexecuted instantiation: bsd.c:xusleep Unexecuted instantiation: gpt.c:xusleep Unexecuted instantiation: blkdev.c:xusleep Unexecuted instantiation: canonicalize.c:xusleep Unexecuted instantiation: encode.c:xusleep Unexecuted instantiation: path.c:xusleep Unexecuted instantiation: randutils.c:xusleep Unexecuted instantiation: sysfs.c:xusleep Unexecuted instantiation: item.c:xusleep Unexecuted instantiation: buffer.c:xusleep Unexecuted instantiation: cpuset.c:xusleep Unexecuted instantiation: mbsalign.c:xusleep Unexecuted instantiation: gen_uuid.c:xusleep Unexecuted instantiation: parse.c:xusleep Unexecuted instantiation: unparse.c:xusleep Unexecuted instantiation: probe.c:xusleep Unexecuted instantiation: tag.c:xusleep Unexecuted instantiation: verify.c:xusleep Unexecuted instantiation: partitions.c:xusleep Unexecuted instantiation: solaris_x86.c:xusleep Unexecuted instantiation: ultrix.c:xusleep Unexecuted instantiation: unixware.c:xusleep Unexecuted instantiation: superblocks.c:xusleep Unexecuted instantiation: swap.c:xusleep Unexecuted instantiation: sysv.c:xusleep Unexecuted instantiation: ubi.c:xusleep Unexecuted instantiation: ubifs.c:xusleep Unexecuted instantiation: udf.c:xusleep Unexecuted instantiation: ufs.c:xusleep Unexecuted instantiation: vdo.c:xusleep Unexecuted instantiation: vfat.c:xusleep Unexecuted instantiation: via_raid.c:xusleep Unexecuted instantiation: vmfs.c:xusleep Unexecuted instantiation: vxfs.c:xusleep Unexecuted instantiation: xfs.c:xusleep Unexecuted instantiation: zfs.c:xusleep Unexecuted instantiation: zonefs.c:xusleep Unexecuted instantiation: erofs.c:xusleep Unexecuted instantiation: topology.c:xusleep Unexecuted instantiation: dm.c:xusleep Unexecuted instantiation: evms.c:xusleep Unexecuted instantiation: ioctl.c:xusleep Unexecuted instantiation: lvm.c:xusleep Unexecuted instantiation: md.c:xusleep Unexecuted instantiation: dev.c:xusleep Unexecuted instantiation: devname.c:xusleep Unexecuted instantiation: devno.c:xusleep Unexecuted instantiation: read.c:xusleep Unexecuted instantiation: save.c:xusleep Unexecuted instantiation: aix.c:xusleep Unexecuted instantiation: atari.c:xusleep Unexecuted instantiation: mac.c:xusleep Unexecuted instantiation: minix.c:xusleep Unexecuted instantiation: adaptec_raid.c:xusleep Unexecuted instantiation: apfs.c:xusleep Unexecuted instantiation: bcache.c:xusleep Unexecuted instantiation: befs.c:xusleep Unexecuted instantiation: bfs.c:xusleep Unexecuted instantiation: bitlocker.c:xusleep Unexecuted instantiation: bluestore.c:xusleep Unexecuted instantiation: btrfs.c:xusleep Unexecuted instantiation: cs_fvault2.c:xusleep Unexecuted instantiation: cramfs.c:xusleep Unexecuted instantiation: ddf_raid.c:xusleep Unexecuted instantiation: drbd.c:xusleep Unexecuted instantiation: drbdproxy_datalog.c:xusleep Unexecuted instantiation: drbdmanage.c:xusleep Unexecuted instantiation: exfat.c:xusleep Unexecuted instantiation: exfs.c:xusleep Unexecuted instantiation: ext.c:xusleep Unexecuted instantiation: f2fs.c:xusleep Unexecuted instantiation: gfs.c:xusleep Unexecuted instantiation: hfs.c:xusleep Unexecuted instantiation: highpoint_raid.c:xusleep Unexecuted instantiation: hpfs.c:xusleep Unexecuted instantiation: iso9660.c:xusleep Unexecuted instantiation: isw_raid.c:xusleep Unexecuted instantiation: jfs.c:xusleep Unexecuted instantiation: jmicron_raid.c:xusleep Unexecuted instantiation: linux_raid.c:xusleep Unexecuted instantiation: lsi_raid.c:xusleep Unexecuted instantiation: luks.c:xusleep Unexecuted instantiation: mpool.c:xusleep Unexecuted instantiation: netware.c:xusleep Unexecuted instantiation: nilfs.c:xusleep Unexecuted instantiation: ntfs.c:xusleep Unexecuted instantiation: refs.c:xusleep Unexecuted instantiation: nvidia_raid.c:xusleep Unexecuted instantiation: ocfs.c:xusleep Unexecuted instantiation: promise_raid.c:xusleep Unexecuted instantiation: reiserfs.c:xusleep Unexecuted instantiation: romfs.c:xusleep Unexecuted instantiation: silicon_raid.c:xusleep Unexecuted instantiation: squashfs.c:xusleep Unexecuted instantiation: stratis.c:xusleep Unexecuted instantiation: cache.c:xusleep Unexecuted instantiation: config.c:xusleep Unexecuted instantiation: env.c:xusleep |
418 | | |
419 | | |
420 | | #define ul_err_write(_m) ignore_result( write(STDERR_FILENO, _m, strlen(_m)) ) |
421 | | |
422 | | /* |
423 | | * warn() for signal handlers |
424 | | */ |
425 | | static inline void ul_sig_warn(const char *mesg) |
426 | 0 | { |
427 | 0 | ul_err_write(program_invocation_short_name); |
428 | 0 | ul_err_write(": "); |
429 | 0 | ul_err_write(mesg); |
430 | 0 | ul_err_write("\n"); |
431 | 0 | } Unexecuted instantiation: script.c:ul_sig_warn Unexecuted instantiation: fileutils.c:ul_sig_warn Unexecuted instantiation: jsonwrt.c:ul_sig_warn Unexecuted instantiation: mangle.c:ul_sig_warn Unexecuted instantiation: strutils.c:ul_sig_warn Unexecuted instantiation: init.c:ul_sig_warn Unexecuted instantiation: ask.c:ul_sig_warn Unexecuted instantiation: alignment.c:ul_sig_warn Unexecuted instantiation: label.c:ul_sig_warn Unexecuted instantiation: utils.c:ul_sig_warn Unexecuted instantiation: context.c:ul_sig_warn Unexecuted instantiation: parttype.c:ul_sig_warn Unexecuted instantiation: partition.c:ul_sig_warn Unexecuted instantiation: table.c:ul_sig_warn Unexecuted instantiation: iter.c:ul_sig_warn Unexecuted instantiation: version.c:ul_sig_warn Unexecuted instantiation: wipe.c:ul_sig_warn Unexecuted instantiation: sun.c:ul_sig_warn Unexecuted instantiation: sgi.c:ul_sig_warn Unexecuted instantiation: dos.c:ul_sig_warn Unexecuted instantiation: bsd.c:ul_sig_warn Unexecuted instantiation: gpt.c:ul_sig_warn Unexecuted instantiation: blkdev.c:ul_sig_warn Unexecuted instantiation: canonicalize.c:ul_sig_warn Unexecuted instantiation: encode.c:ul_sig_warn Unexecuted instantiation: path.c:ul_sig_warn Unexecuted instantiation: randutils.c:ul_sig_warn Unexecuted instantiation: sysfs.c:ul_sig_warn Unexecuted instantiation: item.c:ul_sig_warn Unexecuted instantiation: buffer.c:ul_sig_warn Unexecuted instantiation: cpuset.c:ul_sig_warn Unexecuted instantiation: mbsalign.c:ul_sig_warn Unexecuted instantiation: gen_uuid.c:ul_sig_warn Unexecuted instantiation: parse.c:ul_sig_warn Unexecuted instantiation: unparse.c:ul_sig_warn Unexecuted instantiation: probe.c:ul_sig_warn Unexecuted instantiation: tag.c:ul_sig_warn Unexecuted instantiation: verify.c:ul_sig_warn Unexecuted instantiation: partitions.c:ul_sig_warn Unexecuted instantiation: solaris_x86.c:ul_sig_warn Unexecuted instantiation: ultrix.c:ul_sig_warn Unexecuted instantiation: unixware.c:ul_sig_warn Unexecuted instantiation: superblocks.c:ul_sig_warn Unexecuted instantiation: swap.c:ul_sig_warn Unexecuted instantiation: sysv.c:ul_sig_warn Unexecuted instantiation: ubi.c:ul_sig_warn Unexecuted instantiation: ubifs.c:ul_sig_warn Unexecuted instantiation: udf.c:ul_sig_warn Unexecuted instantiation: ufs.c:ul_sig_warn Unexecuted instantiation: vdo.c:ul_sig_warn Unexecuted instantiation: vfat.c:ul_sig_warn Unexecuted instantiation: via_raid.c:ul_sig_warn Unexecuted instantiation: vmfs.c:ul_sig_warn Unexecuted instantiation: vxfs.c:ul_sig_warn Unexecuted instantiation: xfs.c:ul_sig_warn Unexecuted instantiation: zfs.c:ul_sig_warn Unexecuted instantiation: zonefs.c:ul_sig_warn Unexecuted instantiation: erofs.c:ul_sig_warn Unexecuted instantiation: topology.c:ul_sig_warn Unexecuted instantiation: dm.c:ul_sig_warn Unexecuted instantiation: evms.c:ul_sig_warn Unexecuted instantiation: ioctl.c:ul_sig_warn Unexecuted instantiation: lvm.c:ul_sig_warn Unexecuted instantiation: md.c:ul_sig_warn Unexecuted instantiation: dev.c:ul_sig_warn Unexecuted instantiation: devname.c:ul_sig_warn Unexecuted instantiation: devno.c:ul_sig_warn Unexecuted instantiation: read.c:ul_sig_warn Unexecuted instantiation: save.c:ul_sig_warn Unexecuted instantiation: aix.c:ul_sig_warn Unexecuted instantiation: atari.c:ul_sig_warn Unexecuted instantiation: mac.c:ul_sig_warn Unexecuted instantiation: minix.c:ul_sig_warn Unexecuted instantiation: adaptec_raid.c:ul_sig_warn Unexecuted instantiation: apfs.c:ul_sig_warn Unexecuted instantiation: bcache.c:ul_sig_warn Unexecuted instantiation: befs.c:ul_sig_warn Unexecuted instantiation: bfs.c:ul_sig_warn Unexecuted instantiation: bitlocker.c:ul_sig_warn Unexecuted instantiation: bluestore.c:ul_sig_warn Unexecuted instantiation: btrfs.c:ul_sig_warn Unexecuted instantiation: cs_fvault2.c:ul_sig_warn Unexecuted instantiation: cramfs.c:ul_sig_warn Unexecuted instantiation: ddf_raid.c:ul_sig_warn Unexecuted instantiation: drbd.c:ul_sig_warn Unexecuted instantiation: drbdproxy_datalog.c:ul_sig_warn Unexecuted instantiation: drbdmanage.c:ul_sig_warn Unexecuted instantiation: exfat.c:ul_sig_warn Unexecuted instantiation: exfs.c:ul_sig_warn Unexecuted instantiation: ext.c:ul_sig_warn Unexecuted instantiation: f2fs.c:ul_sig_warn Unexecuted instantiation: gfs.c:ul_sig_warn Unexecuted instantiation: hfs.c:ul_sig_warn Unexecuted instantiation: highpoint_raid.c:ul_sig_warn Unexecuted instantiation: hpfs.c:ul_sig_warn Unexecuted instantiation: iso9660.c:ul_sig_warn Unexecuted instantiation: isw_raid.c:ul_sig_warn Unexecuted instantiation: jfs.c:ul_sig_warn Unexecuted instantiation: jmicron_raid.c:ul_sig_warn Unexecuted instantiation: linux_raid.c:ul_sig_warn Unexecuted instantiation: lsi_raid.c:ul_sig_warn Unexecuted instantiation: luks.c:ul_sig_warn Unexecuted instantiation: mpool.c:ul_sig_warn Unexecuted instantiation: netware.c:ul_sig_warn Unexecuted instantiation: nilfs.c:ul_sig_warn Unexecuted instantiation: ntfs.c:ul_sig_warn Unexecuted instantiation: refs.c:ul_sig_warn Unexecuted instantiation: nvidia_raid.c:ul_sig_warn Unexecuted instantiation: ocfs.c:ul_sig_warn Unexecuted instantiation: promise_raid.c:ul_sig_warn Unexecuted instantiation: reiserfs.c:ul_sig_warn Unexecuted instantiation: romfs.c:ul_sig_warn Unexecuted instantiation: silicon_raid.c:ul_sig_warn Unexecuted instantiation: squashfs.c:ul_sig_warn Unexecuted instantiation: stratis.c:ul_sig_warn Unexecuted instantiation: cache.c:ul_sig_warn Unexecuted instantiation: config.c:ul_sig_warn Unexecuted instantiation: env.c:ul_sig_warn |
432 | | |
433 | | /* |
434 | | * err() for signal handlers |
435 | | */ |
436 | | static inline void __attribute__((__noreturn__)) ul_sig_err(int excode, const char *mesg) |
437 | 0 | { |
438 | 0 | ul_sig_warn(mesg); |
439 | 0 | _exit(excode); |
440 | 0 | } Unexecuted instantiation: script.c:ul_sig_err Unexecuted instantiation: fileutils.c:ul_sig_err Unexecuted instantiation: jsonwrt.c:ul_sig_err Unexecuted instantiation: mangle.c:ul_sig_err Unexecuted instantiation: strutils.c:ul_sig_err Unexecuted instantiation: init.c:ul_sig_err Unexecuted instantiation: ask.c:ul_sig_err Unexecuted instantiation: alignment.c:ul_sig_err Unexecuted instantiation: label.c:ul_sig_err Unexecuted instantiation: utils.c:ul_sig_err Unexecuted instantiation: context.c:ul_sig_err Unexecuted instantiation: parttype.c:ul_sig_err Unexecuted instantiation: partition.c:ul_sig_err Unexecuted instantiation: table.c:ul_sig_err Unexecuted instantiation: iter.c:ul_sig_err Unexecuted instantiation: version.c:ul_sig_err Unexecuted instantiation: wipe.c:ul_sig_err Unexecuted instantiation: sun.c:ul_sig_err Unexecuted instantiation: sgi.c:ul_sig_err Unexecuted instantiation: dos.c:ul_sig_err Unexecuted instantiation: bsd.c:ul_sig_err Unexecuted instantiation: gpt.c:ul_sig_err Unexecuted instantiation: blkdev.c:ul_sig_err Unexecuted instantiation: canonicalize.c:ul_sig_err Unexecuted instantiation: encode.c:ul_sig_err Unexecuted instantiation: path.c:ul_sig_err Unexecuted instantiation: randutils.c:ul_sig_err Unexecuted instantiation: sysfs.c:ul_sig_err Unexecuted instantiation: item.c:ul_sig_err Unexecuted instantiation: buffer.c:ul_sig_err Unexecuted instantiation: cpuset.c:ul_sig_err Unexecuted instantiation: mbsalign.c:ul_sig_err Unexecuted instantiation: gen_uuid.c:ul_sig_err Unexecuted instantiation: parse.c:ul_sig_err Unexecuted instantiation: unparse.c:ul_sig_err Unexecuted instantiation: probe.c:ul_sig_err Unexecuted instantiation: tag.c:ul_sig_err Unexecuted instantiation: verify.c:ul_sig_err Unexecuted instantiation: partitions.c:ul_sig_err Unexecuted instantiation: solaris_x86.c:ul_sig_err Unexecuted instantiation: ultrix.c:ul_sig_err Unexecuted instantiation: unixware.c:ul_sig_err Unexecuted instantiation: superblocks.c:ul_sig_err Unexecuted instantiation: swap.c:ul_sig_err Unexecuted instantiation: sysv.c:ul_sig_err Unexecuted instantiation: ubi.c:ul_sig_err Unexecuted instantiation: ubifs.c:ul_sig_err Unexecuted instantiation: udf.c:ul_sig_err Unexecuted instantiation: ufs.c:ul_sig_err Unexecuted instantiation: vdo.c:ul_sig_err Unexecuted instantiation: vfat.c:ul_sig_err Unexecuted instantiation: via_raid.c:ul_sig_err Unexecuted instantiation: vmfs.c:ul_sig_err Unexecuted instantiation: vxfs.c:ul_sig_err Unexecuted instantiation: xfs.c:ul_sig_err Unexecuted instantiation: zfs.c:ul_sig_err Unexecuted instantiation: zonefs.c:ul_sig_err Unexecuted instantiation: erofs.c:ul_sig_err Unexecuted instantiation: topology.c:ul_sig_err Unexecuted instantiation: dm.c:ul_sig_err Unexecuted instantiation: evms.c:ul_sig_err Unexecuted instantiation: ioctl.c:ul_sig_err Unexecuted instantiation: lvm.c:ul_sig_err Unexecuted instantiation: md.c:ul_sig_err Unexecuted instantiation: dev.c:ul_sig_err Unexecuted instantiation: devname.c:ul_sig_err Unexecuted instantiation: devno.c:ul_sig_err Unexecuted instantiation: read.c:ul_sig_err Unexecuted instantiation: save.c:ul_sig_err Unexecuted instantiation: aix.c:ul_sig_err Unexecuted instantiation: atari.c:ul_sig_err Unexecuted instantiation: mac.c:ul_sig_err Unexecuted instantiation: minix.c:ul_sig_err Unexecuted instantiation: adaptec_raid.c:ul_sig_err Unexecuted instantiation: apfs.c:ul_sig_err Unexecuted instantiation: bcache.c:ul_sig_err Unexecuted instantiation: befs.c:ul_sig_err Unexecuted instantiation: bfs.c:ul_sig_err Unexecuted instantiation: bitlocker.c:ul_sig_err Unexecuted instantiation: bluestore.c:ul_sig_err Unexecuted instantiation: btrfs.c:ul_sig_err Unexecuted instantiation: cs_fvault2.c:ul_sig_err Unexecuted instantiation: cramfs.c:ul_sig_err Unexecuted instantiation: ddf_raid.c:ul_sig_err Unexecuted instantiation: drbd.c:ul_sig_err Unexecuted instantiation: drbdproxy_datalog.c:ul_sig_err Unexecuted instantiation: drbdmanage.c:ul_sig_err Unexecuted instantiation: exfat.c:ul_sig_err Unexecuted instantiation: exfs.c:ul_sig_err Unexecuted instantiation: ext.c:ul_sig_err Unexecuted instantiation: f2fs.c:ul_sig_err Unexecuted instantiation: gfs.c:ul_sig_err Unexecuted instantiation: hfs.c:ul_sig_err Unexecuted instantiation: highpoint_raid.c:ul_sig_err Unexecuted instantiation: hpfs.c:ul_sig_err Unexecuted instantiation: iso9660.c:ul_sig_err Unexecuted instantiation: isw_raid.c:ul_sig_err Unexecuted instantiation: jfs.c:ul_sig_err Unexecuted instantiation: jmicron_raid.c:ul_sig_err Unexecuted instantiation: linux_raid.c:ul_sig_err Unexecuted instantiation: lsi_raid.c:ul_sig_err Unexecuted instantiation: luks.c:ul_sig_err Unexecuted instantiation: mpool.c:ul_sig_err Unexecuted instantiation: netware.c:ul_sig_err Unexecuted instantiation: nilfs.c:ul_sig_err Unexecuted instantiation: ntfs.c:ul_sig_err Unexecuted instantiation: refs.c:ul_sig_err Unexecuted instantiation: nvidia_raid.c:ul_sig_err Unexecuted instantiation: ocfs.c:ul_sig_err Unexecuted instantiation: promise_raid.c:ul_sig_err Unexecuted instantiation: reiserfs.c:ul_sig_err Unexecuted instantiation: romfs.c:ul_sig_err Unexecuted instantiation: silicon_raid.c:ul_sig_err Unexecuted instantiation: squashfs.c:ul_sig_err Unexecuted instantiation: stratis.c:ul_sig_err Unexecuted instantiation: cache.c:ul_sig_err Unexecuted instantiation: config.c:ul_sig_err Unexecuted instantiation: env.c:ul_sig_err |
441 | | |
442 | | /* |
443 | | * Constant strings for usage() functions. For more info see |
444 | | * Documentation/{howto-usage-function.txt,boilerplate.c} |
445 | | */ |
446 | | #define USAGE_HEADER _("\nUsage:\n") |
447 | | #define USAGE_OPTIONS _("\nOptions:\n") |
448 | | #define USAGE_FUNCTIONS _("\nFunctions:\n") |
449 | | #define USAGE_COMMANDS _("\nCommands:\n") |
450 | | #define USAGE_ARGUMENTS _("\nArguments:\n") |
451 | | #define USAGE_COLUMNS _("\nAvailable output columns:\n") |
452 | | #define USAGE_SEPARATOR "\n" |
453 | | |
454 | | #define USAGE_OPTSTR_HELP _("display this help") |
455 | | #define USAGE_OPTSTR_VERSION _("display version") |
456 | | |
457 | | #define USAGE_HELP_OPTIONS(marg_dsc) \ |
458 | | "%-" #marg_dsc "s%s\n" \ |
459 | | "%-" #marg_dsc "s%s\n" \ |
460 | | , " -h, --help", USAGE_OPTSTR_HELP \ |
461 | | , " -V, --version", USAGE_OPTSTR_VERSION |
462 | | |
463 | | #define USAGE_ARG_SEPARATOR "\n" |
464 | | #define USAGE_ARG_SIZE(_name) \ |
465 | | _(" %s arguments may be followed by the suffixes for\n" \ |
466 | | " GiB, TiB, PiB, EiB, ZiB, and YiB (the \"iB\" is optional)\n"), _name |
467 | | |
468 | | #define USAGE_MAN_TAIL(_man) _("\nFor more details see %s.\n"), _man |
469 | | |
470 | | #define UTIL_LINUX_VERSION _("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING |
471 | | |
472 | | #define print_version(eval) __extension__ ({ \ |
473 | | printf(UTIL_LINUX_VERSION); \ |
474 | | exit(eval); \ |
475 | | }) |
476 | | |
477 | | static inline void print_features(const char **features, const char *prefix) |
478 | 0 | { |
479 | 0 | if (features && *features) { |
480 | 0 | const char **p = features; |
481 | 0 | while (p && *p) { |
482 | 0 | if (prefix && p == features) |
483 | 0 | printf(" (%s ", prefix); |
484 | 0 | else |
485 | 0 | fputs(p == features ? " (" : ", ", stdout); |
486 | 0 | fputs(*p++, stdout); |
487 | 0 | } |
488 | 0 | fputc(')', stdout); |
489 | 0 | } |
490 | 0 | } Unexecuted instantiation: script.c:print_features Unexecuted instantiation: fileutils.c:print_features Unexecuted instantiation: jsonwrt.c:print_features Unexecuted instantiation: mangle.c:print_features Unexecuted instantiation: strutils.c:print_features Unexecuted instantiation: init.c:print_features Unexecuted instantiation: ask.c:print_features Unexecuted instantiation: alignment.c:print_features Unexecuted instantiation: label.c:print_features Unexecuted instantiation: utils.c:print_features Unexecuted instantiation: context.c:print_features Unexecuted instantiation: parttype.c:print_features Unexecuted instantiation: partition.c:print_features Unexecuted instantiation: table.c:print_features Unexecuted instantiation: iter.c:print_features Unexecuted instantiation: version.c:print_features Unexecuted instantiation: wipe.c:print_features Unexecuted instantiation: sun.c:print_features Unexecuted instantiation: sgi.c:print_features Unexecuted instantiation: dos.c:print_features Unexecuted instantiation: bsd.c:print_features Unexecuted instantiation: gpt.c:print_features Unexecuted instantiation: blkdev.c:print_features Unexecuted instantiation: canonicalize.c:print_features Unexecuted instantiation: encode.c:print_features Unexecuted instantiation: path.c:print_features Unexecuted instantiation: randutils.c:print_features Unexecuted instantiation: sysfs.c:print_features Unexecuted instantiation: item.c:print_features Unexecuted instantiation: buffer.c:print_features Unexecuted instantiation: cpuset.c:print_features Unexecuted instantiation: mbsalign.c:print_features Unexecuted instantiation: gen_uuid.c:print_features Unexecuted instantiation: parse.c:print_features Unexecuted instantiation: unparse.c:print_features Unexecuted instantiation: probe.c:print_features Unexecuted instantiation: tag.c:print_features Unexecuted instantiation: verify.c:print_features Unexecuted instantiation: partitions.c:print_features Unexecuted instantiation: solaris_x86.c:print_features Unexecuted instantiation: ultrix.c:print_features Unexecuted instantiation: unixware.c:print_features Unexecuted instantiation: superblocks.c:print_features Unexecuted instantiation: swap.c:print_features Unexecuted instantiation: sysv.c:print_features Unexecuted instantiation: ubi.c:print_features Unexecuted instantiation: ubifs.c:print_features Unexecuted instantiation: udf.c:print_features Unexecuted instantiation: ufs.c:print_features Unexecuted instantiation: vdo.c:print_features Unexecuted instantiation: vfat.c:print_features Unexecuted instantiation: via_raid.c:print_features Unexecuted instantiation: vmfs.c:print_features Unexecuted instantiation: vxfs.c:print_features Unexecuted instantiation: xfs.c:print_features Unexecuted instantiation: zfs.c:print_features Unexecuted instantiation: zonefs.c:print_features Unexecuted instantiation: erofs.c:print_features Unexecuted instantiation: topology.c:print_features Unexecuted instantiation: dm.c:print_features Unexecuted instantiation: evms.c:print_features Unexecuted instantiation: ioctl.c:print_features Unexecuted instantiation: lvm.c:print_features Unexecuted instantiation: md.c:print_features Unexecuted instantiation: dev.c:print_features Unexecuted instantiation: devname.c:print_features Unexecuted instantiation: devno.c:print_features Unexecuted instantiation: read.c:print_features Unexecuted instantiation: save.c:print_features Unexecuted instantiation: aix.c:print_features Unexecuted instantiation: atari.c:print_features Unexecuted instantiation: mac.c:print_features Unexecuted instantiation: minix.c:print_features Unexecuted instantiation: adaptec_raid.c:print_features Unexecuted instantiation: apfs.c:print_features Unexecuted instantiation: bcache.c:print_features Unexecuted instantiation: befs.c:print_features Unexecuted instantiation: bfs.c:print_features Unexecuted instantiation: bitlocker.c:print_features Unexecuted instantiation: bluestore.c:print_features Unexecuted instantiation: btrfs.c:print_features Unexecuted instantiation: cs_fvault2.c:print_features Unexecuted instantiation: cramfs.c:print_features Unexecuted instantiation: ddf_raid.c:print_features Unexecuted instantiation: drbd.c:print_features Unexecuted instantiation: drbdproxy_datalog.c:print_features Unexecuted instantiation: drbdmanage.c:print_features Unexecuted instantiation: exfat.c:print_features Unexecuted instantiation: exfs.c:print_features Unexecuted instantiation: ext.c:print_features Unexecuted instantiation: f2fs.c:print_features Unexecuted instantiation: gfs.c:print_features Unexecuted instantiation: hfs.c:print_features Unexecuted instantiation: highpoint_raid.c:print_features Unexecuted instantiation: hpfs.c:print_features Unexecuted instantiation: iso9660.c:print_features Unexecuted instantiation: isw_raid.c:print_features Unexecuted instantiation: jfs.c:print_features Unexecuted instantiation: jmicron_raid.c:print_features Unexecuted instantiation: linux_raid.c:print_features Unexecuted instantiation: lsi_raid.c:print_features Unexecuted instantiation: luks.c:print_features Unexecuted instantiation: mpool.c:print_features Unexecuted instantiation: netware.c:print_features Unexecuted instantiation: nilfs.c:print_features Unexecuted instantiation: ntfs.c:print_features Unexecuted instantiation: refs.c:print_features Unexecuted instantiation: nvidia_raid.c:print_features Unexecuted instantiation: ocfs.c:print_features Unexecuted instantiation: promise_raid.c:print_features Unexecuted instantiation: reiserfs.c:print_features Unexecuted instantiation: romfs.c:print_features Unexecuted instantiation: silicon_raid.c:print_features Unexecuted instantiation: squashfs.c:print_features Unexecuted instantiation: stratis.c:print_features Unexecuted instantiation: cache.c:print_features Unexecuted instantiation: config.c:print_features Unexecuted instantiation: env.c:print_features |
491 | | |
492 | | #define UTIL_LINUX_VERSION_NOBREAK _("%s from %s"), program_invocation_short_name, PACKAGE_STRING |
493 | | |
494 | | #define print_version_with_features(eval, features) __extension__ ({ \ |
495 | | printf(UTIL_LINUX_VERSION_NOBREAK); \ |
496 | | print_features(features, _("features:")); \ |
497 | | fputc('\n', stdout); \ |
498 | | exit(eval); \ |
499 | | }) |
500 | | |
501 | | /* |
502 | | * seek stuff |
503 | | */ |
504 | | #ifndef SEEK_DATA |
505 | | # define SEEK_DATA 3 |
506 | | #endif |
507 | | #ifndef SEEK_HOLE |
508 | | # define SEEK_HOLE 4 |
509 | | #endif |
510 | | |
511 | | |
512 | | /* |
513 | | * Macros to convert #define'itions to strings, for example |
514 | | * #define XYXXY 42 |
515 | | * printf ("%s=%s\n", stringify(XYXXY), stringify_value(XYXXY)); |
516 | | */ |
517 | | #define stringify_value(s) stringify(s) |
518 | | #define stringify(s) #s |
519 | | |
520 | | /* Detect if we're compiled with Address Sanitizer |
521 | | * - gcc (__SANITIZE_ADDRESS__) |
522 | | * - clang (__has_feature(address_sanitizer)) |
523 | | */ |
524 | | #if !defined(HAS_FEATURE_ADDRESS_SANITIZER) |
525 | | # ifdef __SANITIZE_ADDRESS__ |
526 | | # define HAS_FEATURE_ADDRESS_SANITIZER 1 |
527 | | # elif defined(__has_feature) |
528 | | # if __has_feature(address_sanitizer) |
529 | | # define HAS_FEATURE_ADDRESS_SANITIZER 1 |
530 | | # endif |
531 | | # endif |
532 | | # if !defined(HAS_FEATURE_ADDRESS_SANITIZER) |
533 | | # define HAS_FEATURE_ADDRESS_SANITIZER 0 |
534 | | # endif |
535 | | #endif |
536 | | |
537 | | /* |
538 | | * UL_ASAN_BLACKLIST is a macro to tell AddressSanitizer (a compile-time |
539 | | * instrumentation shipped with Clang and GCC) to not instrument the |
540 | | * annotated function. Furthermore, it will prevent the compiler from |
541 | | * inlining the function because inlining currently breaks the blacklisting |
542 | | * mechanism of AddressSanitizer. |
543 | | */ |
544 | | #if __has_feature(address_sanitizer) && __has_attribute(no_sanitize_memory) && __has_attribute(no_sanitize_address) |
545 | | # define UL_ASAN_BLACKLIST __attribute__((noinline)) __attribute__((no_sanitize_memory)) __attribute__((no_sanitize_address)) |
546 | | #else |
547 | | # define UL_ASAN_BLACKLIST /* nothing */ |
548 | | #endif |
549 | | |
550 | | /* |
551 | | * Note that sysconf(_SC_GETPW_R_SIZE_MAX) returns *initial* suggested size for |
552 | | * pwd buffer and in some cases it is not large enough. See POSIX and |
553 | | * getpwnam_r man page for more details. |
554 | | */ |
555 | | #define UL_GETPW_BUFSIZ (16 * 1024) |
556 | | |
557 | | /* |
558 | | * Darwin or other BSDs may only have MAP_ANON. To get it on Darwin we must |
559 | | * define _DARWIN_C_SOURCE before including sys/mman.h. We do this in config.h. |
560 | | */ |
561 | | #if !defined MAP_ANONYMOUS && defined MAP_ANON |
562 | | # define MAP_ANONYMOUS (MAP_ANON) |
563 | | #endif |
564 | | |
565 | 0 | #define SINT_MAX(t) (((t)1 << (sizeof(t) * 8 - 2)) - (t)1 + ((t)1 << (sizeof(t) * 8 - 2))) |
566 | | |
567 | | #endif /* UTIL_LINUX_C_H */ |