// Copyright 2021 The ChromiumOS Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "sommelier-util.h" // NOLINT(build/include_directory) #include #include // Performs an asprintf operation and checks the result for validity and calls // abort() if there's a failure. Returns a newly allocated string rather than // taking a double pointer argument like asprintf. __attribute__((__format__(__printf__, 1, 0))) char* sl_xasprintf( const char* fmt, ...) { char* str; va_list args; va_start(args, fmt); int rv = vasprintf(&str, fmt, args); assert(rv >= 0); UNUSED(rv); va_end(args); return str; } #define DEFAULT_DELETER(TypeName, DeleteFunction) \ namespace std { \ void default_delete::operator()(TypeName* ptr) { \ DeleteFunction(ptr); \ } \ } DEFAULT_DELETER(struct wl_event_source, wl_event_source_remove);