pam_fprintd: Implement auto-pointers and use early-return more around
Implement simple auto-pointers for the types we use in pam_fprintd with a basic implementation based on GLib one so that we can have the same features without having neither an header-dependency on it.
Just to make it readable, as per gcc -E
it generates:
typedef sd_bus *sd_bus_pf_autoptr;
static __attribute__((__unused__)) inline void
pf_autoptr_cleanup_sd_bus (sd_bus **_ptr) {
if (_ptr) (sd_bus_unref) (*_ptr);
}
typedef sd_bus_message *sd_bus_message_pf_autoptr;
static __attribute__((__unused__)) inline void
pf_autoptr_cleanup_sd_bus_message (sd_bus_message **_ptr) {
if (_ptr) (sd_bus_message_unref) (*_ptr);
}
typedef sd_bus_slot *sd_bus_slot_pf_autoptr;
static __attribute__((__unused__)) inline void
pf_autoptr_cleanup_sd_bus_slot (sd_bus_slot **_ptr) {
if (_ptr) (sd_bus_slot_unref) (*_ptr);
}
static __attribute__((__unused__)) inline void
pf_autoptr_cleanup_sd_bus_error (sd_bus_error *_ptr) {
sd_bus_error_free (_ptr);
}
So definitions will be:
__attribute__((cleanup(pf_autoptr_cleanup_sd_bus_error))) sd_bus_error error = SD_BUS_ERROR_NULL;
__attribute__((cleanup(pf_autoptr_cleanup_sd_bus_message))) sd_bus_message_pf_autoptr message = NULL;
Edited by Marco Trevisan