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