]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/network/networkd-routing-policy-rule.c
macro: introduce TAKE_PTR() macro
authorLennart Poettering <lennart@poettering.net>
Thu, 22 Mar 2018 15:53:26 +0000 (16:53 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 22 Mar 2018 19:21:42 +0000 (20:21 +0100)
commitae2a15bc14bc448e625ad93fd044bc077ede4b3f
treee503e6cf3b571d0a150dc2cea7d1838f55aaa6ab
parent1147eef0b6a5937526247ff81ca1e5e45205ed16
macro: introduce TAKE_PTR() macro

This macro will read a pointer of any type, return it, and set the
pointer to NULL. This is useful as an explicit concept of passing
ownership of a memory area between pointers.

This takes inspiration from Rust:

https://doc.rust-lang.org/std/option/enum.Option.html#method.take

and was suggested by Alan Jenkins (@sourcejedi).

It drops ~160 lines of code from our codebase, which makes me like it.
Also, I think it clarifies passing of ownership, and thus helps
readability a bit (at least for the initiated who know the new macro)
93 files changed:
coccinelle/take-ptr.cocci [new file with mode: 0644]
src/basic/alloc-util.h
src/basic/cap-list.c
src/basic/cgroup-util.c
src/basic/extract-word.c
src/basic/fileio.c
src/basic/fs-util.c
src/basic/locale-util.c
src/basic/mount-util.c
src/basic/parse-util.c
src/basic/path-util.c
src/basic/proc-cmdline.c
src/basic/process-util.c
src/basic/securebits-util.c
src/basic/socket-util.c
src/basic/strv.c
src/basic/terminal-util.c
src/basic/unit-name.c
src/busctl/busctl-introspect.c
src/core/cgroup.c
src/core/dbus-execute.c
src/core/dbus-job.c
src/core/dbus.c
src/core/dynamic-user.c
src/core/execute.c
src/core/load-fragment.c
src/core/mount-setup.c
src/core/service.c
src/core/unit.c
src/coredump/coredump.c
src/coredump/coredumpctl.c
src/coredump/stacktrace.c
src/cryptsetup/cryptsetup.c
src/environment-d-generator/environment-d-generator.c
src/firstboot/firstboot.c
src/import/importd.c
src/import/pull-common.c
src/journal/mmap-cache.c
src/libsystemd-network/dhcp-option.c
src/libsystemd-network/dhcp6-option.c
src/libsystemd-network/network-internal.c
src/libsystemd-network/sd-dhcp-lease.c
src/libsystemd/sd-bus/bus-objects.c
src/libsystemd/sd-bus/sd-bus.c
src/libsystemd/sd-daemon/sd-daemon.c
src/libsystemd/sd-device/sd-device.c
src/libsystemd/sd-login/sd-login.c
src/libsystemd/sd-netlink/netlink-message.c
src/libsystemd/sd-network/sd-network.c
src/libudev/libudev-enumerate.c
src/locale/keymap-util.c
src/login/logind-seat.c
src/login/logind-session.c
src/login/logind.c
src/machine/machine-dbus.c
src/mount/mount-tool.c
src/network/netdev/netdev.c
src/network/netdev/wireguard.c
src/network/networkd-link-bus.c
src/network/networkd-network-bus.c
src/network/networkd-network.c
src/network/networkd-radv.c
src/network/networkd-routing-policy-rule.c
src/nspawn/nspawn-mount.c
src/nspawn/nspawn.c
src/resolve/resolved-dns-search-domain.c
src/resolve/resolved-dns-zone.c
src/resolve/resolved-dnssd-bus.c
src/resolve/resolved-dnssd.c
src/resolve/resolved-link-bus.c
src/resolve/resolved-link.c
src/resolve/resolved-manager.c
src/shared/ask-password-api.c
src/shared/bus-util.c
src/shared/cgroup-show.c
src/shared/dns-domain.c
src/shared/efivars.c
src/shared/fdset.c
src/shared/fstab-util.c
src/shared/import-util.c
src/shared/install-printf.c
src/shared/install.c
src/shared/machine-image.c
src/shared/nsflags.c
src/shared/path-lookup.c
src/shared/specifier.c
src/systemctl/systemctl.c
src/sysv-generator/sysv-generator.c
src/tmpfiles/tmpfiles.c
src/udev/net/ethtool-util.c
src/udev/udev-builtin-path_id.c
src/udev/udevd.c
src/vconsole/vconsole-setup.c