X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=e99f8d1123641da0ae4f0e8f4a85d55aad463ffd;hb=4cf7ea556aa1e74f9b34d4467f36d46a1bb25da3;hp=c2bc9771b9f424c4bc5f6d5eb3725cfd184975aa;hpb=6db615c17ee7a434f9e0c40d67a1f833d8f3cc9d;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index c2bc9771b..e99f8d112 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -451,6 +451,8 @@ static inline const char *ansi_highlight_off(void) { return on_tty() ? ANSI_HIGHLIGHT_OFF : ""; } +int files_same(const char *filea, const char *fileb); + int running_in_chroot(void); char *ellipsize(const char *s, size_t length, unsigned percent); @@ -529,7 +531,11 @@ char *strjoin(const char *x, ...) _sentinel_; bool is_main_thread(void); -bool in_charset(const char *s, const char* charset) _pure_; +static inline bool _pure_ in_charset(const char *s, const char* charset) { + assert(s); + assert(charset); + return s[strspn(s, charset)] == '\0'; +} int block_get_whole_disk(dev_t d, dev_t *ret); @@ -690,8 +696,8 @@ char *strip_tab_ansi(char **p, size_t *l); int on_ac_power(void); -int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); -int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); +int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f); +int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f); #define FOREACH_LINE(line, f, on_error) \ for (;;) \ @@ -811,6 +817,19 @@ int unlink_noerrno(const char *path); _c_; \ }) +#define strappenda3(a, b, c) \ + ({ \ + const char *_a_ = (a), *_b_ = (b), *_c_ = (c); \ + char *_d_; \ + size_t _x_, _y_, _z_; \ + _x_ = strlen(_a_); \ + _y_ = strlen(_b_); \ + _z_ = strlen(_c_); \ + _d_ = alloca(_x_ + _y_ + _z_ + 1); \ + strcpy(stpcpy(stpcpy(_d_, _a_), _b_), _c_); \ + _d_; \ + }) + #define procfs_file_alloca(pid, field) \ ({ \ pid_t _pid_ = (pid); \