Compare commits
9 Commits
8e4a44c585
...
7c57a030e0
Author | SHA1 | Date |
---|---|---|
Lucas Werkmeister | 7c57a030e0 | |
Zbigniew Jędrzejewski-Szmek | 12bab3579f | |
Frantisek Sumsal | 1d6cc5d0e5 | |
Frantisek Sumsal | 135a9868a7 | |
Frantisek Sumsal | 1813613fed | |
Frantisek Sumsal | cb60571b31 | |
Frantisek Sumsal | aad54dbc74 | |
Frantisek Sumsal | 473de9b708 | |
Frantisek Sumsal | 3bc3c734c6 |
|
@ -2,13 +2,28 @@
|
||||||
expression e;
|
expression e;
|
||||||
statement s;
|
statement s;
|
||||||
@@
|
@@
|
||||||
- if (e == NULL)
|
if (
|
||||||
+ if (!e)
|
(
|
||||||
s
|
!e
|
||||||
|
|
|
||||||
|
- e == NULL
|
||||||
|
+ !e
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{...}
|
||||||
|
else s
|
||||||
|
|
||||||
@@
|
@@
|
||||||
expression e;
|
expression e;
|
||||||
statement s;
|
statement s;
|
||||||
@@
|
@@
|
||||||
- if (e != NULL)
|
if (
|
||||||
+ if (e)
|
(
|
||||||
s
|
e
|
||||||
|
|
|
||||||
|
- e != NULL
|
||||||
|
+ e
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{...}
|
||||||
|
else s
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
@@
|
@@
|
||||||
/* Disable this transformation for the securebits-util.h, as it makes
|
/* Disable this transformation in cases where it doesn't make sense or
|
||||||
* the expression there confusing. */
|
* where it makes the resulting expression more confusing
|
||||||
position p : script:python() { p[0].file != "src/shared/securebits-util.h" };
|
*/
|
||||||
|
position p : script:python() {
|
||||||
|
not (p[0].file == "src/shared/securebits-util.h" or
|
||||||
|
p[0].file == "src/core/manager.h" or
|
||||||
|
p[0].current_element == "log_set_max_level_realm" or
|
||||||
|
p[0].current_element == "unichar_is_valid")
|
||||||
|
};
|
||||||
expression x, y;
|
expression x, y;
|
||||||
@@
|
@@
|
||||||
(
|
(
|
||||||
|
|
|
@ -1,25 +1,13 @@
|
||||||
|
/* Limit the number of expressions to 6 for performance reasons */
|
||||||
@@
|
@@
|
||||||
expression e;
|
expression e;
|
||||||
/* Exclude JsonVariant * from the transformation, as it can't work with the
|
/* Exclude JsonVariant * from the transformation, as it can't work with the
|
||||||
* current version of the IN_SET macro */
|
* current version of the IN_SET macro */
|
||||||
typedef JsonVariant;
|
typedef JsonVariant;
|
||||||
type T != JsonVariant*;
|
type T != JsonVariant*;
|
||||||
constant T n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
|
constant T n0, n1, n2, n3, n4, n5;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
(
|
(
|
||||||
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5 || e == n6 || e == n7 || e == n8 || e == n9
|
|
||||||
+ IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7, n8, n9)
|
|
||||||
|
|
|
||||||
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5 || e == n6 || e == n7 || e == n8
|
|
||||||
+ IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7, n8)
|
|
||||||
|
|
|
||||||
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5 || e == n6 || e == n7
|
|
||||||
+ IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7)
|
|
||||||
|
|
|
||||||
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5 || e == n6
|
|
||||||
+ IN_SET(e, n0, n1, n2, n3, n4, n5, n6)
|
|
||||||
|
|
|
||||||
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5
|
- e == n0 || e == n1 || e == n2 || e == n3 || e == n4 || e == n5
|
||||||
+ IN_SET(e, n0, n1, n2, n3, n4, n5)
|
+ IN_SET(e, n0, n1, n2, n3, n4, n5)
|
||||||
|
|
|
|
||||||
|
|
|
@ -1,22 +1,11 @@
|
||||||
|
/* Limit the number of expressions to 6 for performance reasons */
|
||||||
@@
|
@@
|
||||||
expression e;
|
expression e;
|
||||||
typedef JsonVariant;
|
typedef JsonVariant;
|
||||||
type T != JsonVariant*;
|
type T != JsonVariant*;
|
||||||
constant T n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
|
constant T n0, n1, n2, n3, n4, n5;
|
||||||
@@
|
@@
|
||||||
(
|
(
|
||||||
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5 && e != n6 && e != n7 && e != n8 && e != n9
|
|
||||||
+ !IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7, n8, n9)
|
|
||||||
|
|
|
||||||
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5 && e != n6 && e != n7 && e != n8
|
|
||||||
+ !IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7, n8)
|
|
||||||
|
|
|
||||||
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5 && e != n6 && e != n7
|
|
||||||
+ !IN_SET(e, n0, n1, n2, n3, n4, n5, n6, n7)
|
|
||||||
|
|
|
||||||
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5 && e != n6
|
|
||||||
+ !IN_SET(e, n0, n1, n2, n3, n4, n5, n6)
|
|
||||||
|
|
|
||||||
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5
|
- e != n0 && e != n1 && e != n2 && e != n3 && e != n4 && e != n5
|
||||||
+ !IN_SET(e, n0, n1, n2, n3, n4, n5)
|
+ !IN_SET(e, n0, n1, n2, n3, n4, n5)
|
||||||
|
|
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ EXCLUDED_PATHS=(
|
||||||
)
|
)
|
||||||
|
|
||||||
top="$(git rev-parse --show-toplevel)"
|
top="$(git rev-parse --show-toplevel)"
|
||||||
iso_defs="$top/coccinelle/systemd-definitions.iso"
|
|
||||||
args=
|
args=
|
||||||
|
|
||||||
# Create an array from files tracked by git...
|
# Create an array from files tracked by git...
|
||||||
|
@ -37,7 +36,7 @@ for SCRIPT in ${@-$top/coccinelle/*.cocci} ; do
|
||||||
TMPFILE=`mktemp`
|
TMPFILE=`mktemp`
|
||||||
echo "+ spatch --sp-file $SCRIPT $args ..."
|
echo "+ spatch --sp-file $SCRIPT $args ..."
|
||||||
parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \
|
parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \
|
||||||
spatch --iso-file $iso_defs --sp-file $SCRIPT $args ::: "${files[@]}" \
|
spatch --sp-file $SCRIPT $args ::: "${files[@]}" \
|
||||||
2>"$TMPFILE" || cat "$TMPFILE"
|
2>"$TMPFILE" || cat "$TMPFILE"
|
||||||
echo -e "--x-- Processed $SCRIPT --x--\n"
|
echo -e "--x-- Processed $SCRIPT --x--\n"
|
||||||
done
|
done
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
@@
|
@@
|
||||||
expression list args;
|
position p : script:python() { p[0].current_element != "test_strjoin" };
|
||||||
@@
|
|
||||||
- strjoin(args, NULL);
|
|
||||||
+ strjoin(args);
|
|
||||||
@@
|
|
||||||
expression t;
|
expression t;
|
||||||
expression list args;
|
expression list args;
|
||||||
@@
|
@@
|
||||||
- t = strjoin(args, NULL);
|
(
|
||||||
|
- strjoin@p(args, NULL);
|
||||||
|
+ strjoin(args);
|
||||||
|
|
|
||||||
|
- t = strjoin@p(args, NULL);
|
||||||
+ t = strjoin(args);
|
+ t = strjoin(args);
|
||||||
@@
|
|
|
||||||
expression list args;
|
- return strjoin@p(args, NULL);
|
||||||
@@
|
|
||||||
- return strjoin(args, NULL);
|
|
||||||
+ return strjoin(args);
|
+ return strjoin(args);
|
||||||
|
)
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
/* Statement isomorphisms - replace explicit checks against NULL with a
|
|
||||||
* shorter variant, which relies on C's downgrade-to-bool feature.
|
|
||||||
* The expression metavariables should be declared as pointers, however,
|
|
||||||
* that doesn't work well with complex expressions like:
|
|
||||||
* if (UNIT(p)->default_dependencies != NULL)
|
|
||||||
*/
|
|
||||||
|
|
||||||
Statement
|
|
||||||
@@
|
|
||||||
expression X;
|
|
||||||
statement S;
|
|
||||||
@@
|
|
||||||
if (X == NULL) S => if (!X) S
|
|
||||||
|
|
||||||
Statement
|
|
||||||
@@
|
|
||||||
expression X;
|
|
||||||
statement S;
|
|
||||||
@@
|
|
||||||
if (X != NULL) S => if (X) S
|
|
|
@ -1,6 +1,7 @@
|
||||||
@@
|
@@
|
||||||
|
position p : script:python() { not p[0].file.startswith("man/") };
|
||||||
expression e, fmt;
|
expression e, fmt;
|
||||||
expression list vaargs;
|
expression list vaargs;
|
||||||
@@
|
@@
|
||||||
- snprintf(e, sizeof(e), fmt, vaargs);
|
- snprintf@p(e, sizeof(e), fmt, vaargs);
|
||||||
+ xsprintf(e, fmt, vaargs);
|
+ xsprintf(e, fmt, vaargs);
|
||||||
|
|
|
@ -24,6 +24,7 @@ if bashcompletiondir != 'no'
|
||||||
['systemd-cgtop', ''],
|
['systemd-cgtop', ''],
|
||||||
['systemd-delta', ''],
|
['systemd-delta', ''],
|
||||||
['systemd-detect-virt', ''],
|
['systemd-detect-virt', ''],
|
||||||
|
['systemd-id128', ''],
|
||||||
['systemd-nspawn', ''],
|
['systemd-nspawn', ''],
|
||||||
['systemd-path', ''],
|
['systemd-path', ''],
|
||||||
['systemd-run', ''],
|
['systemd-run', ''],
|
||||||
|
@ -32,6 +33,7 @@ if bashcompletiondir != 'no'
|
||||||
[bash_systemctl, ''],
|
[bash_systemctl, ''],
|
||||||
['bootctl', 'ENABLE_EFI'],
|
['bootctl', 'ENABLE_EFI'],
|
||||||
['coredumpctl', 'ENABLE_COREDUMP'],
|
['coredumpctl', 'ENABLE_COREDUMP'],
|
||||||
|
['homectl', 'ENABLE_HOMED'],
|
||||||
['hostnamectl', 'ENABLE_HOSTNAMED'],
|
['hostnamectl', 'ENABLE_HOSTNAMED'],
|
||||||
['localectl', 'ENABLE_LOCALED'],
|
['localectl', 'ENABLE_LOCALED'],
|
||||||
['loginctl', 'ENABLE_LOGIND'],
|
['loginctl', 'ENABLE_LOGIND'],
|
||||||
|
|
|
@ -45,7 +45,7 @@ static int unlinkat_harder(
|
||||||
return -errno;
|
return -errno;
|
||||||
if (!S_ISDIR(st.st_mode))
|
if (!S_ISDIR(st.st_mode))
|
||||||
return -ENOTDIR;
|
return -ENOTDIR;
|
||||||
if ((st.st_mode & 0700) == 0700) /* Already set? */
|
if (FLAGS_SET(st.st_mode, 0700)) /* Already set? */
|
||||||
return -EACCES; /* original error */
|
return -EACCES; /* original error */
|
||||||
if (st.st_uid != geteuid()) /* this only works if the UID matches ours */
|
if (st.st_uid != geteuid()) /* this only works if the UID matches ours */
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
|
|
|
@ -5502,7 +5502,7 @@ void unit_remove_dependencies(Unit *u, UnitDependencyMask mask) {
|
||||||
done = true;
|
done = true;
|
||||||
|
|
||||||
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d]) {
|
HASHMAP_FOREACH_KEY(di.data, other, u->dependencies[d]) {
|
||||||
if ((di.origin_mask & ~mask) == di.origin_mask)
|
if (FLAGS_SET(~mask, di.origin_mask))
|
||||||
continue;
|
continue;
|
||||||
di.origin_mask &= ~mask;
|
di.origin_mask &= ~mask;
|
||||||
unit_update_dependency_mask(u, d, other, di);
|
unit_update_dependency_mask(u, d, other, di);
|
||||||
|
@ -5516,7 +5516,7 @@ void unit_remove_dependencies(Unit *u, UnitDependencyMask mask) {
|
||||||
UnitDependencyInfo dj;
|
UnitDependencyInfo dj;
|
||||||
|
|
||||||
dj.data = hashmap_get(other->dependencies[q], u);
|
dj.data = hashmap_get(other->dependencies[q], u);
|
||||||
if ((dj.destination_mask & ~mask) == dj.destination_mask)
|
if (FLAGS_SET(~mask, dj.destination_mask))
|
||||||
continue;
|
continue;
|
||||||
dj.destination_mask &= ~mask;
|
dj.destination_mask &= ~mask;
|
||||||
|
|
||||||
|
|
|
@ -779,7 +779,7 @@ int dhcp_lease_parse_search_domains(const uint8_t *option, size_t len, char ***d
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
n += r;
|
n += r;
|
||||||
} else if ((c & 0xc0) == 0xc0) {
|
} else if (FLAGS_SET(c, 0xc0)) {
|
||||||
/* Pointer */
|
/* Pointer */
|
||||||
|
|
||||||
uint8_t d;
|
uint8_t d;
|
||||||
|
|
|
@ -270,7 +270,7 @@ static int dhcp6_client_set_duid_internal(
|
||||||
assert_return(duid_len == 0 || duid != NULL, -EINVAL);
|
assert_return(duid_len == 0 || duid != NULL, -EINVAL);
|
||||||
assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
|
assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
|
||||||
|
|
||||||
if (duid != NULL) {
|
if (duid) {
|
||||||
r = dhcp_validate_duid_len(duid_type, duid_len, true);
|
r = dhcp_validate_duid_len(duid_type, duid_len, true);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
r = dhcp_validate_duid_len(duid_type, duid_len, false);
|
r = dhcp_validate_duid_len(duid_type, duid_len, false);
|
||||||
|
|
|
@ -363,7 +363,7 @@ int calendar_spec_to_string(const CalendarSpec *c, char **p) {
|
||||||
|
|
||||||
if (c->utc)
|
if (c->utc)
|
||||||
fputs(" UTC", f);
|
fputs(" UTC", f);
|
||||||
else if (c->timezone != NULL) {
|
else if (c->timezone) {
|
||||||
fputc(' ', f);
|
fputc(' ', f);
|
||||||
fputs(c->timezone, f);
|
fputs(c->timezone, f);
|
||||||
} else if (IN_SET(c->dst, 0, 1)) {
|
} else if (IN_SET(c->dst, 0, 1)) {
|
||||||
|
|
|
@ -124,7 +124,7 @@ int path_chown_recursive(
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
if (!uid_is_valid(uid) && !gid_is_valid(gid) && (mask & 07777) == 07777)
|
if (!uid_is_valid(uid) && !gid_is_valid(gid) && FLAGS_SET(mask, 07777))
|
||||||
return 0; /* nothing to do */
|
return 0; /* nothing to do */
|
||||||
|
|
||||||
if (fstat(fd, &st) < 0)
|
if (fstat(fd, &st) < 0)
|
||||||
|
@ -160,7 +160,7 @@ int fd_chown_recursive(
|
||||||
if (!S_ISDIR(st.st_mode))
|
if (!S_ISDIR(st.st_mode))
|
||||||
return -ENOTDIR;
|
return -ENOTDIR;
|
||||||
|
|
||||||
if (!uid_is_valid(uid) && !gid_is_valid(gid) && (mask & 07777) == 07777)
|
if (!uid_is_valid(uid) && !gid_is_valid(gid) && FLAGS_SET(mask, 07777))
|
||||||
return 0; /* nothing to do */
|
return 0; /* nothing to do */
|
||||||
|
|
||||||
/* Shortcut, as above */
|
/* Shortcut, as above */
|
||||||
|
|
|
@ -46,7 +46,7 @@ static void test_tmpdir(const char *id, const char *A, const char *B) {
|
||||||
c = strjoina(a, "/tmp");
|
c = strjoina(a, "/tmp");
|
||||||
assert_se(stat(c, &x) >= 0);
|
assert_se(stat(c, &x) >= 0);
|
||||||
assert_se(S_ISDIR(x.st_mode));
|
assert_se(S_ISDIR(x.st_mode));
|
||||||
assert_se((x.st_mode & 01777) == 01777);
|
assert_se(FLAGS_SET(x.st_mode, 01777));
|
||||||
assert_se(rmdir(c) >= 0);
|
assert_se(rmdir(c) >= 0);
|
||||||
assert_se(rmdir(a) >= 0);
|
assert_se(rmdir(a) >= 0);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ static void test_tmpdir(const char *id, const char *A, const char *B) {
|
||||||
d = strjoina(b, "/tmp");
|
d = strjoina(b, "/tmp");
|
||||||
assert_se(stat(d, &y) >= 0);
|
assert_se(stat(d, &y) >= 0);
|
||||||
assert_se(S_ISDIR(y.st_mode));
|
assert_se(S_ISDIR(y.st_mode));
|
||||||
assert_se((y.st_mode & 01777) == 01777);
|
assert_se(FLAGS_SET(y.st_mode, 01777));
|
||||||
assert_se(rmdir(d) >= 0);
|
assert_se(rmdir(d) >= 0);
|
||||||
assert_se(rmdir(b) >= 0);
|
assert_se(rmdir(b) >= 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -236,7 +236,7 @@ static int get_file_options(const char *vendor, const char *model,
|
||||||
retval = -1;
|
retval = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (vendor == NULL) {
|
if (!vendor) {
|
||||||
if (!vendor_in)
|
if (!vendor_in)
|
||||||
break;
|
break;
|
||||||
} else if (vendor_in &&
|
} else if (vendor_in &&
|
||||||
|
|
Loading…
Reference in New Issue