bool first_word(const char *s, const char *word) _pure_;
int close_nointr(int fd);
-void close_nointr_nofail(int fd);
+int safe_close(int fd);
+
void close_many(const int fds[], unsigned n_fd);
int parse_size(const char *t, off_t base, off_t *size);
struct __useless_struct_to_allow_trailing_semicolon__
static inline void closep(int *fd) {
- if (*fd >= 0)
- close_nointr_nofail(*fd);
+ safe_close(*fd);
}
static inline void umaskp(mode_t *u) {
#endif
}
+static inline int log2i(int x) {
+ assert(x > 0);
+
+ return __SIZEOF_INT__ * 8 - __builtin_clz(x) - 1;
+}
+
static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0;
}
uint64_t physical_memory(void);
char* mount_test_option(const char *haystack, const char *needle);
+
+void hexdump(FILE *f, const void *p, size_t s);