X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fshared%2Futil.h;h=a41348e32ead839f63c583278aa512913656b80e;hb=9f5650aecb22a1d864b2c0b749910556795f1490;hp=117855de819933fc173e6e9d9e7073ea00bb8501;hpb=b89446bb33fbe6b9820efdbea62433657757a03f;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index 117855de8..a41348e32 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -238,6 +238,7 @@ char *file_in_same_dir(const char *path, const char *filename); int rmdir_parents(const char *path, const char *stop); +int get_process_state(pid_t pid); int get_process_comm(pid_t pid, char **name); int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line); int get_process_exe(pid_t pid, char **name); @@ -408,7 +409,6 @@ cpu_set_t* cpu_set_malloc(unsigned *ncpus); int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) _printf_(4,0); int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) _printf_(4,5); -int status_welcome(void); int fd_columns(int fd); unsigned columns(void); @@ -743,7 +743,19 @@ static inline void _reset_umask_(struct _umask_struct_ *s) { _saved_umask_.quit = true) static inline unsigned u64log2(uint64_t n) { +#if __SIZEOF_LONG_LONG__ == 8 return (n > 1) ? (unsigned) __builtin_clzll(n) ^ 63U : 0; +#else +#error "Wut?" +#endif +} + +static inline unsigned u32ctz(uint32_t n) { +#if __SIZEOF_INT__ == 4 + return __builtin_ctz(n); +#else +#error "Wut?" +#endif } static inline bool logind_running(void) { @@ -821,7 +833,6 @@ static inline void _reset_locale_(struct _locale_struct_ *s) { _saved_locale_.quit = true) bool id128_is_valid(const char *s) _pure_; -void parse_user_at_host(char *arg, char **user, char **host); int split_pair(const char *s, const char *sep, char **l, char **r); @@ -840,13 +851,15 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, } int proc_cmdline(char **ret); +int parse_proc_cmdline(int (*parse_word)(const char *word)); int container_get_leader(const char *machine, pid_t *pid); int namespace_open(pid_t pid, int *pidns_fd, int *mntns_fd, int *root_fd); int namespace_enter(int pidns_fd, int mntns_fd, int root_fd); -bool pid_valid(pid_t pid); +bool pid_is_alive(pid_t pid); +bool pid_is_unwaited(pid_t pid); int getpeercred(int fd, struct ucred *ucred); int getpeersec(int fd, char **ret); @@ -855,3 +868,5 @@ int writev_safe(int fd, const struct iovec *w, int j); int mkostemp_safe(char *pattern, int flags); int open_tmpfile(const char *path, int flags); + +int fd_warn_permissions(const char *path, int fd);