line |
true |
false |
branch |
418
|
30 |
26 |
while (grp->size < grp->int2 && !EIO_CANCELLED (grp)) |
|
30 |
0 |
while (grp->size < grp->int2 && !EIO_CANCELLED (grp)) |
422
|
21 |
9 |
EIO_FEED (grp); |
425
|
11 |
19 |
if (!(grp->flags & ETP_FLAG_GROUPADD)) |
442
|
5 |
27 |
if (!grp->size && grp->flags & ETP_FLAG_DELAYED) |
|
5 |
0 |
if (!grp->size && grp->flags & ETP_FLAG_DELAYED) |
451
|
4 |
57 |
if ((req)->flags & EIO_FLAG_PTR1_FREE) free (req->ptr1); |
452
|
27 |
34 |
if ((req)->flags & EIO_FLAG_PTR2_FREE) free (req->ptr2); |
462
|
32 |
29 |
if (req->grp) |
468
|
14 |
18 |
if (req->grp_next) req->grp_next->grp_prev = req->grp_prev; |
469
|
25 |
7 |
if (req->grp_prev) req->grp_prev->grp_next = req->grp_next; |
471
|
7 |
25 |
if (grp->grp_first == req) |
476
|
32 |
0 |
if (!res) |
639
|
0 |
0 |
if (res < 0 && errno == ENOSYS && fd >= 0) |
|
0 |
0 |
if (res < 0 && errno == ENOSYS && fd >= 0) |
|
0 |
0 |
if (res < 0 && errno == ENOSYS && fd >= 0) |
664
|
0 |
0 |
if (!res || errno != ENOSYS) |
|
0 |
0 |
if (!res || errno != ENOSYS) |
718
|
0 |
0 |
if (!count) |
792
|
0 |
0 |
if (res <= 128 * 1024 * 1024) |
794
|
0 |
0 |
if (res > 0) |
797
|
0 |
0 |
if (written) |
809
|
0 |
0 |
if (!count) |
814
|
0 |
0 |
if (res < 0 |
815
|
0 |
0 |
&& (errno == ENOSYS || errno == EINVAL || errno == ENOTSOCK |
|
0 |
0 |
&& (errno == ENOSYS || errno == EINVAL || errno == ENOTSOCK |
|
0 |
0 |
&& (errno == ENOSYS || errno == EINVAL || errno == ENOTSOCK |
818
|
0 |
0 |
|| errno == ENOTSUP |
821
|
0 |
0 |
|| errno == EOPNOTSUPP /* BSDs */ |
830
|
0 |
0 |
dBUF; |
834
|
0 |
0 |
while (count) |
840
|
0 |
0 |
if (cnt <= 0) |
842
|
0 |
0 |
if (cnt && !res) res = -1; |
|
0 |
0 |
if (cnt && !res) res = -1; |
848
|
0 |
0 |
if (cnt <= 0) |
850
|
0 |
0 |
if (cnt && !res) res = -1; |
|
0 |
0 |
if (cnt && !res) res = -1; |
873
|
0 |
0 |
if (!page) |
980
|
0 |
0 |
if (addr < end) |
981
|
0 |
0 |
if (flags & EIO_MT_MODIFY) /* modify */ |
982
|
0 |
0 |
do { *((volatile sig_atomic_t *)addr) |= 0; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
|
0 |
0 |
do { *((volatile sig_atomic_t *)addr) |= 0; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
984
|
0 |
0 |
do { *((volatile sig_atomic_t *)addr) ; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
|
0 |
0 |
do { *((volatile sig_atomic_t *)addr) ; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
1004
|
0 |
0 |
req->result = req->offs == (off_t)-1 ? -1 : 0; |
1021
|
0 |
1 |
if (!rel) |
1025
|
0 |
1 |
if (!*rel) |
1071
|
1 |
0 |
if (*rel != '/') |
1076
|
0 |
1 |
if (wd == EIO_INVALID_WD) |
1079
|
1 |
0 |
if (wd == EIO_CWD) |
1081
|
0 |
1 |
if (!getcwd (res, EIO_PATH_MAX)) |
1089
|
1 |
0 |
if (res [1]) /* only use if not / */ |
1093
|
1 |
1 |
while (*rel) |
1098
|
1 |
1 |
while (*rel && *rel != '/') |
|
1 |
0 |
while (*rel && *rel != '/') |
1103
|
0 |
1 |
if (!len) /* skip slashes */ |
1109
|
1 |
0 |
if (beg [0] == '.') |
1111
|
1 |
0 |
if (len == 1) |
1114
|
0 |
0 |
if (beg [1] == '.' && len == 2) |
|
0 |
0 |
if (beg [1] == '.' && len == 2) |
1118
|
0 |
0 |
while (res != tmpbuf->ptr) |
1119
|
0 |
0 |
if (*--res == '/') |
1127
|
0 |
0 |
if (res + 1 + len + 1 >= tmp1) |
1140
|
0 |
0 |
if (linklen < 0) |
1142
|
0 |
0 |
if (errno != EINVAL) |
1154
|
0 |
0 |
if (linklen + 1 + rellen >= EIO_PATH_MAX) /* also catch linklen >= EIO_PATH_MAX */ |
1158
|
0 |
0 |
if (!--symlinks) |
1161
|
0 |
0 |
if (*tmp1 == '/') |
1174
|
0 |
1 |
if (res == tmpbuf->ptr) |
1184
|
0 |
725 |
return a->score - b->score ? a->score - b->score /* works because our signed char is always 0..100 */ |
|
647 |
78 |
return a->score - b->score ? a->score - b->score /* works because our signed char is always 0..100 */ |
1206
|
3 |
0 |
if (size <= EIO_SORT_FAST) |
1218
|
0 |
0 |
for (i = 0; i < sizeof (eio_ino_t); ++i) |
1223
|
0 |
0 |
for (i = 0; i < sizeof (eio_ino_t); ++i) |
1229
|
0 |
0 |
for (j = 0; j < 8; ++j) |
1230
|
0 |
0 |
if (inode_bits & (((eio_ino_t)1) << (i * 8 + j))) |
1234
|
0 |
0 |
for (j = 0; j < 8; ++j) |
1235
|
0 |
0 |
if (score_bits & (1 << j)) |
1264
|
0 |
0 |
if (b - a < EIO_SORT_CUTOFF) |
1271
|
0 |
0 |
if (!(((unsigned char *)a)[O] & M)) |
1273
|
0 |
0 |
else if (!(((unsigned char *)--b)[O] & M)) |
1278
|
0 |
0 |
while (b > a); |
1281
|
0 |
0 |
if (!*--bit) |
1292
|
0 |
0 |
while (stk_idx--); |
1305
|
3 |
0 |
for (i = size > EIO_SORT_FAST ? EIO_SORT_CUTOFF + 1 : size; --i; ) |
|
72 |
3 |
for (i = size > EIO_SORT_FAST ? EIO_SORT_CUTOFF + 1 : size; --i; ) |
1306
|
6 |
66 |
if (EIO_DENT_CMP (dents [i], <, *min)) |
1319
|
72 |
3 |
for (i = dents + 1; i < dents + size; ++i) |
1323
|
581 |
72 |
for (j = i - 1; EIO_DENT_CMP (*j, >, value); --j) |
1334
|
0 |
3 |
if (size <= 1) |
1368
|
1 |
3 |
if (!(flags & EIO_READDIR_DENTS)) |
1419
|
1 |
3 |
int fd = openat (WD2FD (req->wd), req->ptr1, O_CLOEXEC | O_SEARCH | O_DIRECTORY | O_NONBLOCK); |
1421
|
0 |
4 |
if (fd < 0) |
1426
|
0 |
4 |
if (!dirp) |
1440
|
0 |
4 |
if (req->flags & EIO_FLAG_PTR1_FREE) |
1444
|
3 |
1 |
req->ptr1 = dents = flags ? malloc (dentalloc * sizeof (eio_dirent)) : 0; |
1447
|
4 |
0 |
if (!names || (flags && !dents)) |
|
3 |
1 |
if (!names || (flags && !dents)) |
|
0 |
3 |
if (!names || (flags && !dents)) |
1462
|
4 |
148 |
if (done) |
1469
|
0 |
4 |
if (errno) |
1477
|
2 |
2 |
if (flags & EIO_READDIR_STAT_ORDER) |
1478
|
0 |
2 |
eio_dent_sort (dents, dentoffs, flags & EIO_READDIR_DIRS_FIRST ? 7 : 0, inode_bits); |
1479
|
1 |
1 |
else if (flags & EIO_READDIR_DIRS_FIRST) |
1480
|
0 |
1 |
if (flags & EIO_READDIR_FOUND_UNKNOWN) |
1490
|
32 |
1 |
while (oth > dir) |
1492
|
2 |
30 |
if (dir->type == EIO_DT_DIR) |
1494
|
3 |
27 |
else if ((--oth)->type == EIO_DT_DIR) |
1513
|
8 |
140 |
if (name [0] != '.' || (name [1] && (name [1] != '.' || name [2]))) |
|
4 |
4 |
if (name [0] != '.' || (name [1] && (name [1] != '.' || name [2]))) |
|
4 |
0 |
if (name [0] != '.' || (name [1] && (name [1] != '.' || name [2]))) |
|
0 |
4 |
if (name [0] != '.' || (name [1] && (name [1] != '.' || name [2]))) |
1517
|
0 |
140 |
while (ecb_expect_false (namesoffs + len > namesalloc)) |
1522
|
0 |
0 |
if (!names) |
1528
|
105 |
35 |
if (dents) |
1532
|
0 |
105 |
if (ecb_expect_false (dentoffs == dentalloc)) |
1537
|
0 |
0 |
if (!dents) |
1602
|
35 |
70 |
if (flags & EIO_READDIR_DIRS_FIRST) |
1604
|
0 |
35 |
if (ent->type == EIO_DT_UNKNOWN) |
1606
|
0 |
0 |
if (*name == '.') /* leading dots are likely directories, and, in any case, rare */ |
1608
|
0 |
0 |
else if (!strchr (name, '.')) /* absence of dots indicate likely dirs */ |
1609
|
0 |
0 |
ent->score = len <= 2 ? 4 - len : len <= 4 ? 4 : len <= 7 ? 5 : 6; /* shorter == more likely dir, but avoid too many classes */ |
|
0 |
0 |
ent->score = len <= 2 ? 4 - len : len <= 4 ? 4 : len <= 7 ? 5 : 6; /* shorter == more likely dir, but avoid too many classes */ |
|
0 |
0 |
ent->score = len <= 2 ? 4 - len : len <= 4 ? 4 : len <= 7 ? 5 : 6; /* shorter == more likely dir, but avoid too many classes */ |
1611
|
5 |
30 |
else if (ent->type == EIO_DT_DIR) |
1620
|
0 |
148 |
if (EIO_CANCELLED (req)) |
1678
|
0 |
1 |
if (len < 0) |
1682
|
0 |
1 |
fd = openat (WD2FD (wd), path, O_CLOEXEC | O_SEARCH | O_DIRECTORY | O_NONBLOCK); |
1690
|
0 |
1 |
if (ecb_expect_false (fd == 0)) |
1698
|
0 |
1 |
if (fd < 0) |
1728
|
9 |
0 |
if (wd != EIO_INVALID_WD && wd != EIO_CWD) |
|
1 |
8 |
if (wd != EIO_INVALID_WD && wd != EIO_CWD) |
1760
|
0 |
0 |
if (fd < 0) |
1774
|
0 |
0 |
if (fd < 0) |
1808
|
0 |
0 |
if (fd < 0) |
1811
|
0 |
0 |
if (req->offs < 0 || !req->size) /* do we need the size? */ |
|
0 |
0 |
if (req->offs < 0 || !req->size) /* do we need the size? */ |
1815
|
0 |
0 |
if (req->offs < 0) |
1818
|
0 |
0 |
if (!req->size) |
1822
|
0 |
0 |
ALLOC (req->size); |
|
0 |
0 |
ALLOC (req->size); |
1881
|
2 |
71 |
if (ecb_expect_false (EIO_CANCELLED (req))) |
1888
|
8 |
63 |
if (ecb_expect_false (req->wd == EIO_INVALID_WD)) |
1895
|
30 |
33 |
if (req->type >= EIO_OPEN) |
1898
|
16 |
14 |
dirfd = WD2FD (req->wd); |
1907
|
0 |
1 |
req->result = req->wd == EIO_INVALID_WD ? -1 : 0; |
1913
|
0 |
1 |
case EIO_READ: ALLOC (req->size); |
|
0 |
0 |
case EIO_READ: ALLOC (req->size); |
1916
|
1 |
0 |
: read (req->int1, req->ptr2, req->size); break; |
1919
|
0 |
0 |
: write (req->int1, req->ptr2, req->size); break; |
1929
|
16 |
0 |
case EIO_STAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
|
0 |
16 |
case EIO_STAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
1931
|
6 |
0 |
case EIO_LSTAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
|
0 |
6 |
case EIO_LSTAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
1941
|
0 |
1 |
req->result = req->wd && SINGLEDOT (req->ptr1) |
|
0 |
0 |
req->result = req->wd && SINGLEDOT (req->ptr1) |
|
0 |
0 |
req->result = req->wd && SINGLEDOT (req->ptr1) |
1945
|
0 |
0 |
case EIO_RENAME: req->result = eio__renameat2 ( |
|
0 |
0 |
case EIO_RENAME: req->result = eio__renameat2 ( |
1948
|
0 |
0 |
req->wd && SINGLEDOT (req->ptr1) ? req->wd->str : req->ptr1, |
|
0 |
0 |
req->wd && SINGLEDOT (req->ptr1) ? req->wd->str : req->ptr1, |
1954
|
0 |
0 |
case EIO_LINK: req->result = linkat (dirfd, req->ptr1, WD2FD ((eio_wd)req->int3), req->ptr2, 0); break; |
1957
|
0 |
0 |
case EIO_STATVFS: ALLOC (sizeof (EIO_STRUCT_STATVFS)); |
|
0 |
0 |
case EIO_STATVFS: ALLOC (sizeof (EIO_STRUCT_STATVFS)); |
1959
|
0 |
0 |
case EIO_READLINK: ALLOC (EIO_PATH_MAX); |
|
0 |
0 |
case EIO_READLINK: ALLOC (EIO_PATH_MAX); |
1961
|
0 |
0 |
if (req->result == EIO_PATH_MAX) |
1973
|
0 |
0 |
if (req->nv1 != -1. || req->nv2 != -1.) |
|
0 |
0 |
if (req->nv1 != -1. || req->nv2 != -1.) |
1985
|
0 |
0 |
req->result = req->type == EIO_FUTIME |
2047
|
0 |
0 |
case EIO_REALPATH: if (0 <= (req->result = eio__realpath (&self->tmpbuf, req->wd, req->ptr1))) |
2049
|
0 |
0 |
ALLOC (req->result); |
|
0 |
0 |
ALLOC (req->result); |
2054
|
1 |
0 |
case EIO_FSTAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
|
0 |
1 |
case EIO_FSTAT: ALLOC (sizeof (EIO_STRUCT_STAT)); |
2057
|
0 |
0 |
case EIO_FSTATVFS: ALLOC (sizeof (EIO_STRUCT_STATVFS)); |
|
0 |
0 |
case EIO_FSTATVFS: ALLOC (sizeof (EIO_STRUCT_STATVFS)); |
2391
|
0 |
0 |
REQ (EIO_GROUP); SEND; |
2431
|
27 |
5 |
if (grp->grp_first) |