#include <dirent.h>
#include <sys/resource.h>
#include <stddef.h>
-#include <systemd/sd-journal.h>
+#include <unistd.h>
+#include <systemd/sd-journal.h>
#include "macro.h"
#include "time-util.h"
sd_journal_close(*j);
}
+#define _cleanup_globfree_ __attribute__((cleanup(globfree)))
+
_malloc_ static inline void *malloc_multiply(size_t a, size_t b) {
if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
return NULL;
for (__attribute__((cleanup(_reset_umask_))) struct umask_struct _saved_umask_ = { umask(mask), false }; \
!_saved_umask_.quit ; \
_saved_umask_.quit = true)
+
+static inline unsigned u64log2(uint64_t n) {
+ return (n > 1) ? __builtin_clzll(n) ^ 63U : 0;
+}
+
+static inline bool logind_running(void) {
+ return access("/run/systemd/seats/", F_OK) >= 0;
+}