chiark / gitweb /
macro: introduce TAKE_PTR() macro
authorLennart Poettering <lennart@poettering.net>
Thu, 22 Mar 2018 15:53:26 +0000 (16:53 +0100)
committerSven Eden <yamakuzure@gmx.net>
Fri, 24 Aug 2018 14:47:08 +0000 (16:47 +0200)
commit0c2b96fea853ce7f16a9326c3c98117d75defdf6
treeff3d108a1d7f295af840137e3c7f77e9d25692aa
parent6895c0be1845203e14b776dd8a15a97780ac6942
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)
27 files changed:
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/socket-util.c
src/basic/strv.c
src/basic/terminal-util.c
src/basic/unit-name.c
src/core/cgroup.c
src/core/mount-setup.c
src/libelogind/sd-bus/bus-objects.c
src/libelogind/sd-bus/sd-bus.c
src/libelogind/sd-daemon/sd-daemon.c
src/libelogind/sd-login/sd-login.c
src/login/logind-seat.c
src/login/logind-session.c
src/login/logind.c
src/shared/bus-util.c
src/shared/nsflags.c