/src/util-linux/include/c.h
Line | Count | Source |
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 | | 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 | | #ifndef __has_extension |
137 | | #define __has_extension __has_feature |
138 | | #endif |
139 | | |
140 | | /* |
141 | | * Function attributes |
142 | | */ |
143 | | #ifndef __ul_alloc_size |
144 | | # if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3) |
145 | | # define __ul_alloc_size(s) __attribute__((alloc_size(s), warn_unused_result)) |
146 | | # else |
147 | | # define __ul_alloc_size(s) |
148 | | # endif |
149 | | #endif |
150 | | |
151 | | #ifndef __ul_calloc_size |
152 | | # if (__has_attribute(alloc_size) && __has_attribute(warn_unused_result)) || __GNUC_PREREQ (4, 3) |
153 | | # define __ul_calloc_size(n, s) __attribute__((alloc_size(n, s), warn_unused_result)) |
154 | | # else |
155 | | # define __ul_calloc_size(n, s) |
156 | | # endif |
157 | | #endif |
158 | | |
159 | | #if __has_attribute(returns_nonnull) || __GNUC_PREREQ (4, 9) |
160 | | # define __ul_returns_nonnull __attribute__((returns_nonnull)) |
161 | | #else |
162 | | # define __ul_returns_nonnull |
163 | | #endif |
164 | | |
165 | | #if __has_attribute(__nonstring__) |
166 | | # define __ul_nonstring __attribute__((__nonstring__)) |
167 | | #else |
168 | | # define __ul_nonstring |
169 | | #endif |
170 | | |
171 | | /* |
172 | | * Force a compilation error if condition is true, but also produce a |
173 | | * result (of value 0 and type size_t), so the expression can be used |
174 | | * e.g. in a structure initializer (or wherever else comma expressions |
175 | | * aren't permitted). |
176 | | */ |
177 | | #define UL_BUILD_BUG_ON_ZERO(e) __extension__ (sizeof(struct { int:-!!(e); })) |
178 | | #define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); })) |
179 | | |
180 | | #if __has_include(<stdcountof.h>) |
181 | | #include <stdcountof.h> |
182 | 889k | #define ARRAY_SIZE(arr) countof(arr) |
183 | | #endif |
184 | | |
185 | | #if !defined(ARRAY_SIZE) && __has_extension(c_countof) |
186 | | #define ARRAY_SIZE(arr) _Countof(arr) |
187 | | #endif |
188 | | |
189 | | #ifndef ARRAY_SIZE |
190 | | # define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) |
191 | | #endif |
192 | | |
193 | | #ifndef PATH_MAX |
194 | | # define PATH_MAX 4096 |
195 | | #endif |
196 | | |
197 | | #ifndef TRUE |
198 | 6.36k | # define TRUE 1 |
199 | | #endif |
200 | | |
201 | | #ifndef FALSE |
202 | 16.8k | # define FALSE 0 |
203 | | #endif |
204 | | |
205 | | #ifndef min |
206 | 11.3k | # define min(x, y) __extension__ ({ \ |
207 | 11.3k | __typeof__(x) _min1 = (x); \ |
208 | 11.3k | __typeof__(y) _min2 = (y); \ |
209 | 11.3k | (void) (&_min1 == &_min2); \ |
210 | 11.3k | _min1 < _min2 ? _min1 : _min2; }) |
211 | | #endif |
212 | | |
213 | | #ifndef max |
214 | 7.15k | # define max(x, y) __extension__ ({ \ |
215 | 7.15k | __typeof__(x) _max1 = (x); \ |
216 | 7.15k | __typeof__(y) _max2 = (y); \ |
217 | 7.15k | (void) (&_max1 == &_max2); \ |
218 | 7.15k | _max1 > _max2 ? _max1 : _max2; }) |
219 | | #endif |
220 | | |
221 | | #ifndef abs_diff |
222 | | # define abs_diff(x, y) __extension__ ({ \ |
223 | | __typeof__(x) _a = (x); \ |
224 | | __typeof__(y) _b = (y); \ |
225 | | (void) (&_a == &_b); \ |
226 | | _a > _b ? _a - _b : _b - _a; }) |
227 | | #endif |
228 | | |
229 | | #ifndef cmp_numbers |
230 | | # define cmp_numbers(x, y) __extension__ ({ \ |
231 | | __typeof__(x) _a = (x); \ |
232 | | __typeof__(y) _b = (y); \ |
233 | | (void) (&_a == &_b); \ |
234 | | _a == _b ? 0 : _a > _b ? 1 : -1; }) |
235 | | #endif |
236 | | |
237 | | |
238 | | #ifndef cmp_timespec |
239 | | # define cmp_timespec(a, b, CMP) \ |
240 | | (((a)->tv_sec == (b)->tv_sec) \ |
241 | | ? ((a)->tv_nsec CMP (b)->tv_nsec) \ |
242 | | : ((a)->tv_sec CMP (b)->tv_sec)) |
243 | | #endif |
244 | | |
245 | | |
246 | | #ifndef cmp_stat_mtime |
247 | | # ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC |
248 | | # define cmp_stat_mtime(_a, _b, CMP) cmp_timespec(&(_a)->st_mtim, &(_b)->st_mtim, CMP) |
249 | | # else |
250 | | # define cmp_stat_mtime(_a, _b, CMP) ((_a)->st_mtime CMP (_b)->st_mtime) |
251 | | # endif |
252 | | #endif |
253 | | |
254 | | |
255 | | #ifndef offsetof |
256 | | #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) |
257 | | #endif |
258 | | |
259 | | #ifndef sizeof_member |
260 | 55 | #define sizeof_member(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER) |
261 | | #endif |
262 | | |
263 | | /* |
264 | | * container_of - cast a member of a structure out to the containing structure |
265 | | * @ptr: the pointer to the member. |
266 | | * @type: the type of the container struct this is embedded in. |
267 | | * @member: the name of the member within the struct. |
268 | | */ |
269 | | #ifndef container_of |
270 | 26.2M | #define container_of(ptr, type, member) __extension__ ({ \ |
271 | 26.2M | const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ |
272 | 26.2M | (type *)( (char *)__mptr - offsetof(type,member) );}) |
273 | | #endif |
274 | | |
275 | | #define read_unaligned_member(p, m) __extension__ ({ \ |
276 | | size_t offset = offsetof(__typeof__(* p), m); \ |
277 | | __typeof__(p->m + 0) v; \ |
278 | | memcpy(&v, ((unsigned char *)p) + offset, sizeof(v)); \ |
279 | | v; }) |
280 | | |
281 | 0 | #define member_ptr(p, m) (((unsigned char *)p) + offsetof(__typeof__(*p), m)) |
282 | | |
283 | | #ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME |
284 | | # ifdef HAVE___PROGNAME |
285 | | extern char *__progname; |
286 | | # define program_invocation_short_name __progname |
287 | | # else |
288 | | # ifdef HAVE_GETEXECNAME |
289 | | # define program_invocation_short_name \ |
290 | | prog_inv_sh_nm_from_file(getexecname(), 0) |
291 | | # else |
292 | | # define program_invocation_short_name \ |
293 | | prog_inv_sh_nm_from_file(__FILE__, 1) |
294 | | # endif |
295 | | static char prog_inv_sh_nm_buf[256]; |
296 | | static inline char * |
297 | | prog_inv_sh_nm_from_file(char *f, char stripext) |
298 | | { |
299 | | char *t; |
300 | | |
301 | | if ((t = strrchr(f, '/')) != NULL) |
302 | | t++; |
303 | | else |
304 | | t = f; |
305 | | |
306 | | strncpy(prog_inv_sh_nm_buf, t, sizeof(prog_inv_sh_nm_buf) - 1); |
307 | | prog_inv_sh_nm_buf[sizeof(prog_inv_sh_nm_buf) - 1] = '\0'; |
308 | | |
309 | | if (stripext && (t = strrchr(prog_inv_sh_nm_buf, '.')) != NULL) |
310 | | *t = '\0'; |
311 | | |
312 | | return prog_inv_sh_nm_buf; |
313 | | } |
314 | | # endif |
315 | | #endif |
316 | | |
317 | | |
318 | | #ifndef HAVE_ERR_H |
319 | | static inline void __attribute__ ((__format__ (__printf__, 4, 5))) |
320 | | errmsg(char doexit, int excode, char adderr, const char *fmt, ...) |
321 | | { |
322 | | fprintf(stderr, "%s: ", program_invocation_short_name); |
323 | | if (fmt != NULL) { |
324 | | va_list argp; |
325 | | va_start(argp, fmt); |
326 | | vfprintf(stderr, fmt, argp); |
327 | | va_end(argp); |
328 | | if (adderr) |
329 | | fprintf(stderr, ": "); |
330 | | } |
331 | | if (adderr) |
332 | | fprintf(stderr, "%m"); |
333 | | fprintf(stderr, "\n"); |
334 | | if (doexit) |
335 | | exit(excode); |
336 | | } |
337 | | |
338 | | #ifndef HAVE_ERR |
339 | | # define err(E, FMT...) errmsg(1, E, 1, FMT) |
340 | | #endif |
341 | | |
342 | | #ifndef HAVE_ERRX |
343 | | # define errx(E, FMT...) errmsg(1, E, 0, FMT) |
344 | | #endif |
345 | | |
346 | | #ifndef HAVE_WARN |
347 | | # define warn(FMT...) errmsg(0, 0, 1, FMT) |
348 | | #endif |
349 | | |
350 | | #ifndef HAVE_WARNX |
351 | | # define warnx(FMT...) errmsg(0, 0, 0, FMT) |
352 | | #endif |
353 | | #endif /* !HAVE_ERR_H */ |
354 | | |
355 | | |
356 | | static inline |
357 | | __attribute__((__noreturn__)) |
358 | | void __err_oom(const char *file, unsigned int line) |
359 | 0 | { |
360 | 0 | err(EXIT_FAILURE, "%s: %u: cannot allocate memory", file, line); |
361 | 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 |
362 | | #define err_oom() __err_oom(__FILE__, __LINE__) |
363 | | |
364 | | #define err_nosys(exitcode, ...) \ |
365 | | err(errno == ENOSYS ? EXIT_NOTSUPP : exitcode, __VA_ARGS__) |
366 | | |
367 | | |
368 | | /* Don't use inline function to avoid '#include "nls.h"' in c.h |
369 | | */ |
370 | | #define errtryhelp(eval) __extension__ ({ \ |
371 | | fprintf(stderr, _("Try '%s --help' for more information.\n"), \ |
372 | | program_invocation_short_name); \ |
373 | | exit(eval); \ |
374 | | }) |
375 | | |
376 | | /* After failed execvp() */ |
377 | | #define EX_EXEC_FAILED 126 /* Program located, but not usable. */ |
378 | | #define EX_EXEC_ENOENT 127 /* Could not find program to exec. */ |
379 | | #define errexec(name) err(errno == ENOENT ? EX_EXEC_ENOENT : EX_EXEC_FAILED, \ |
380 | | _("failed to execute %s"), name) |
381 | | |
382 | | static inline __attribute__((const)) int is_power_of_2(unsigned long num) |
383 | 2.87k | { |
384 | 2.87k | return (num != 0 && ((num & (num - 1)) == 0)); |
385 | 2.87k | } 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 | 383 | 2.05k | { | 384 | 2.05k | return (num != 0 && ((num & (num - 1)) == 0)); | 385 | 2.05k | } |
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 | 383 | 304 | { | 384 | 304 | return (num != 0 && ((num & (num - 1)) == 0)); | 385 | 304 | } |
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 | 383 | 517 | { | 384 | 517 | return (num != 0 && ((num & (num - 1)) == 0)); | 385 | 517 | } |
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 |
386 | | |
387 | | #ifndef HAVE_LOFF_T |
388 | | typedef int64_t loff_t; |
389 | | #endif |
390 | | |
391 | | #if !defined(HAVE_DIRFD) \ |
392 | | && (!defined(HAVE_DECL_DIRFD) || HAVE_DECL_DIRFD == 0) \ |
393 | | && defined(HAVE_DIR_DD_FD) |
394 | | #include <dirent.h> |
395 | | static inline int dirfd(DIR *d) |
396 | | { |
397 | | return d->dd_fd; |
398 | | } |
399 | | #endif |
400 | | |
401 | | /* |
402 | | * Fallback defines for old versions of glibc |
403 | | */ |
404 | | #include <fcntl.h> |
405 | | |
406 | | #ifdef O_CLOEXEC |
407 | 0 | #define UL_CLOEXECSTR "e" |
408 | | #else |
409 | | #define UL_CLOEXECSTR "" |
410 | | #endif |
411 | | |
412 | | #ifndef O_CLOEXEC |
413 | | #define O_CLOEXEC 0 |
414 | | #endif |
415 | | |
416 | | #ifdef __FreeBSD_kernel__ |
417 | | #ifndef F_DUPFD_CLOEXEC |
418 | | #define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */ |
419 | | #endif |
420 | | #endif |
421 | | |
422 | | |
423 | | #ifndef AI_ADDRCONFIG |
424 | | #define AI_ADDRCONFIG 0x0020 |
425 | | #endif |
426 | | |
427 | | #ifndef IUTF8 |
428 | | #define IUTF8 0040000 |
429 | | #endif |
430 | | |
431 | | /* |
432 | | * MAXHOSTNAMELEN replacement |
433 | | */ |
434 | | static inline size_t get_hostname_max(void) |
435 | 0 | { |
436 | 0 | long len = sysconf(_SC_HOST_NAME_MAX); |
437 | 0 |
|
438 | 0 | if (0 < len) |
439 | 0 | return len; |
440 | 0 |
|
441 | 0 | #ifdef MAXHOSTNAMELEN |
442 | 0 | return MAXHOSTNAMELEN; |
443 | 0 | #elif HOST_NAME_MAX |
444 | 0 | return HOST_NAME_MAX; |
445 | 0 | #endif |
446 | 0 | return 64; |
447 | 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 |
448 | | |
449 | | |
450 | | static inline int drop_permissions(void) |
451 | 0 | { |
452 | 0 | errno = 0; |
453 | | |
454 | | /* drop GID */ |
455 | 0 | if (setgid(getgid()) < 0) |
456 | 0 | goto fail; |
457 | | |
458 | | /* drop UID */ |
459 | 0 | if (setuid(getuid()) < 0) |
460 | 0 | goto fail; |
461 | | |
462 | 0 | return 0; |
463 | 0 | fail: |
464 | 0 | return errno ? -errno : -1; |
465 | 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 |
466 | | |
467 | | static inline bool is_privileged_execution(void) |
468 | 0 | { |
469 | | #if defined(HAVE_GETAUXVAL) && defined(AT_SECURE) |
470 | | return getauxval(AT_SECURE) != 0; |
471 | | #else |
472 | 0 | return (geteuid() != getuid()) || (getegid() != getgid()); |
473 | 0 | #endif |
474 | 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 |
475 | | |
476 | | /* |
477 | | * The usleep function was marked obsolete in POSIX.1-2001 and was removed |
478 | | * in POSIX.1-2008. It was replaced with nanosleep() that provides more |
479 | | * advantages (like no interaction with signals and other timer functions). |
480 | | */ |
481 | | #include <time.h> |
482 | | |
483 | | static inline int xusleep(useconds_t usec) |
484 | 0 | { |
485 | 0 | #ifdef HAVE_NANOSLEEP |
486 | 0 | struct timespec waittime = { |
487 | 0 | .tv_sec = usec / 1000000L, |
488 | 0 | .tv_nsec = (usec % 1000000L) * 1000 |
489 | 0 | }; |
490 | 0 | return nanosleep(&waittime, NULL); |
491 | | #elif defined(HAVE_USLEEP) |
492 | | return usleep(usec); |
493 | | #else |
494 | | # error "System with usleep() or nanosleep() required!" |
495 | | #endif |
496 | 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 |
497 | | |
498 | | /* ul_sig_printf is signal safe as long you don't use floating point formats, |
499 | | positional arguments or wide characters.*/ |
500 | | #define ul_sig_printf(fmt, ...) ignore_result(dprintf(STDERR_FILENO, fmt, __VA_ARGS__)) |
501 | | |
502 | | /* |
503 | | * warn() for signal handlers |
504 | | */ |
505 | | static inline void ul_sig_warn(const char *mesg) |
506 | 0 | { |
507 | 0 | ul_sig_printf("%s: %s\n", program_invocation_short_name, mesg); |
508 | 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 |
509 | | |
510 | | /* |
511 | | * err() for signal handlers |
512 | | */ |
513 | | static inline void __attribute__((__noreturn__)) ul_sig_err(int excode, const char *mesg) |
514 | 0 | { |
515 | 0 | ul_sig_warn(mesg); |
516 | 0 | _exit(excode); |
517 | 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 |
518 | | |
519 | | /* |
520 | | * Constant strings for usage() functions. For more info see |
521 | | * Documentation/{howto-usage-function.txt,boilerplate.c} |
522 | | */ |
523 | | #define USAGE_HEADER _("\nUsage:\n") |
524 | | #define USAGE_OPTIONS _("\nOptions:\n") |
525 | | #define USAGE_FUNCTIONS _("\nFunctions:\n") |
526 | | #define USAGE_COMMANDS _("\nCommands:\n") |
527 | | #define USAGE_ARGUMENTS _("\nArguments:\n") |
528 | | #define USAGE_COLUMNS _("\nAvailable output columns:\n") |
529 | | #define USAGE_DEFAULT_COLUMNS _("\nDefault columns:\n") |
530 | | #define USAGE_SEPARATOR "\n" |
531 | | |
532 | | #define USAGE_OPTSTR_LIST_COLUMNS _("list the available columns") |
533 | | #define USAGE_OPTSTR_HELP _("display this help") |
534 | | #define USAGE_OPTSTR_VERSION _("display version") |
535 | | |
536 | | #define USAGE_LIST_COLUMNS_OPTION(marg_dsc) \ |
537 | | "%-" #marg_dsc "s%s\n" \ |
538 | | , " -H, --list-columns", USAGE_OPTSTR_LIST_COLUMNS |
539 | | |
540 | | #define USAGE_HELP_OPTIONS(marg_dsc) \ |
541 | | "%-" #marg_dsc "s%s\n" \ |
542 | | "%-" #marg_dsc "s%s\n" \ |
543 | | , " -h, --help", USAGE_OPTSTR_HELP \ |
544 | | , " -V, --version", USAGE_OPTSTR_VERSION |
545 | | |
546 | | #define USAGE_ARG_SEPARATOR "\n" |
547 | | #define USAGE_ARG_SIZE(_name) \ |
548 | | _(" Values for %s may be followed by a suffix: KiB, MiB,\n" \ |
549 | | " GiB, TiB, PiB, EiB, ZiB, or YiB (where the \"iB\" is optional).\n"), _name |
550 | | |
551 | | #define USAGE_MAN_TAIL(_man) _("\nFor more details see %s.\n"), _man |
552 | | |
553 | | #define UTIL_LINUX_VERSION _("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING |
554 | | |
555 | | #define print_version(eval) __extension__ ({ \ |
556 | | printf(UTIL_LINUX_VERSION); \ |
557 | | exit(eval); \ |
558 | | }) |
559 | | |
560 | | static inline void print_features(const char *const*features, const char *prefix) |
561 | 0 | { |
562 | 0 | if (features && *features) { |
563 | 0 | const char *const*p = features; |
564 | 0 | while (p && *p) { |
565 | 0 | if (prefix && p == features) |
566 | 0 | printf(" (%s ", prefix); |
567 | 0 | else |
568 | 0 | fputs(p == features ? " (" : ", ", stdout); |
569 | 0 | fputs(*p++, stdout); |
570 | 0 | } |
571 | 0 | fputc(')', stdout); |
572 | 0 | } |
573 | 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 |
574 | | |
575 | | #define UTIL_LINUX_VERSION_NOBREAK _("%s from %s"), program_invocation_short_name, PACKAGE_STRING |
576 | | |
577 | | #define print_version_with_features(eval, features) __extension__ ({ \ |
578 | | printf(UTIL_LINUX_VERSION_NOBREAK); \ |
579 | | print_features(features, _("features:")); \ |
580 | | fputc('\n', stdout); \ |
581 | | exit(eval); \ |
582 | | }) |
583 | | |
584 | 0 | static inline int fputsln(const char *s, FILE *stream) { |
585 | 0 | if (fputs(s, stream) == EOF) |
586 | 0 | return EOF; |
587 | 0 | return fputc('\n', stdout); |
588 | 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 |
589 | | |
590 | | /* |
591 | | * seek stuff |
592 | | */ |
593 | | #ifndef SEEK_DATA |
594 | | # define SEEK_DATA 3 |
595 | | #endif |
596 | | #ifndef SEEK_HOLE |
597 | | # define SEEK_HOLE 4 |
598 | | #endif |
599 | | |
600 | | |
601 | | /* |
602 | | * Macros to convert #define'itions to strings, for example |
603 | | * #define XYXXY 42 |
604 | | * printf ("%s=%s\n", stringify(XYXXY), stringify_value(XYXXY)); |
605 | | */ |
606 | | #define stringify_value(s) stringify(s) |
607 | | #define stringify(s) #s |
608 | | |
609 | | /* Detect if we're compiled with Address Sanitizer |
610 | | * - gcc (__SANITIZE_ADDRESS__) |
611 | | * - clang (__has_feature(address_sanitizer)) |
612 | | */ |
613 | | #if !defined(HAS_FEATURE_ADDRESS_SANITIZER) |
614 | | # ifdef __SANITIZE_ADDRESS__ |
615 | | # define HAS_FEATURE_ADDRESS_SANITIZER 1 |
616 | | # elif defined(__has_feature) |
617 | | # if __has_feature(address_sanitizer) |
618 | | # define HAS_FEATURE_ADDRESS_SANITIZER 1 |
619 | | # endif |
620 | | # endif |
621 | | # if !defined(HAS_FEATURE_ADDRESS_SANITIZER) |
622 | | # define HAS_FEATURE_ADDRESS_SANITIZER 0 |
623 | | # endif |
624 | | #endif |
625 | | |
626 | | /* |
627 | | * UL_ASAN_BLACKLIST is a macro to tell AddressSanitizer (a compile-time |
628 | | * instrumentation shipped with Clang and GCC) to not instrument the |
629 | | * annotated function. Furthermore, it will prevent the compiler from |
630 | | * inlining the function because inlining currently breaks the blacklisting |
631 | | * mechanism of AddressSanitizer. |
632 | | */ |
633 | | #if __has_feature(address_sanitizer) && __has_attribute(no_sanitize_memory) && __has_attribute(no_sanitize_address) |
634 | | # define UL_ASAN_BLACKLIST __attribute__((noinline)) __attribute__((no_sanitize_memory)) __attribute__((no_sanitize_address)) |
635 | | #else |
636 | | # define UL_ASAN_BLACKLIST /* nothing */ |
637 | | #endif |
638 | | |
639 | | /* |
640 | | * Note that sysconf(_SC_GETPW_R_SIZE_MAX) returns *initial* suggested size for |
641 | | * pwd buffer and in some cases it is not large enough. See POSIX and |
642 | | * getpwnam_r man page for more details. |
643 | | */ |
644 | | #define UL_GETPW_BUFSIZ (16 * 1024) |
645 | | |
646 | | /* |
647 | | * Darwin or other BSDs may only have MAP_ANON. To get it on Darwin we must |
648 | | * define _DARWIN_C_SOURCE before including sys/mman.h. We do this in config.h. |
649 | | */ |
650 | | #if !defined MAP_ANONYMOUS && defined MAP_ANON |
651 | | # define MAP_ANONYMOUS (MAP_ANON) |
652 | | #endif |
653 | | |
654 | 0 | #define SINT_MAX(t) (((t)1 << (sizeof(t) * 8 - 2)) - (t)1 + ((t)1 << (sizeof(t) * 8 - 2))) |
655 | | |
656 | | #ifndef HAVE_REALLOCARRAY |
657 | | static inline void *reallocarray(void *ptr, size_t nmemb, size_t size) |
658 | | { |
659 | | size_t s = nmemb * size; |
660 | | |
661 | | if (nmemb != 0 && s / nmemb != size) { |
662 | | errno = ENOMEM; |
663 | | return NULL; |
664 | | } |
665 | | return realloc(ptr, s); |
666 | | } |
667 | | #endif |
668 | | |
669 | 0 | static inline void ul_reset_errno(int *saved_errno) { |
670 | 0 | if (*saved_errno < 0) |
671 | 0 | return; |
672 | 0 |
|
673 | 0 | errno = *saved_errno; |
674 | 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 |
675 | | |
676 | | #define UL_PROTECT_ERRNO __attribute__((__cleanup__(ul_reset_errno))) \ |
677 | | __attribute__((__unused__)) int __ul_saved_errno = errno |
678 | | |
679 | | |
680 | | /* |
681 | | * thread-local storage |
682 | | */ |
683 | | #ifdef HAVE_TLS |
684 | 0 | # define THREAD_LOCAL static __thread |
685 | | #else |
686 | | # define THREAD_LOCAL static |
687 | | #endif |
688 | | |
689 | | #endif /* UTIL_LINUX_C_H */ |