Coverage Report

Created: 2025-12-10 06:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
vfat.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
hfs.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
ntfs.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 */