X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=d1230d2b64cd65be71f97d7524cd22f40e41504b;hb=952d1536f4d7b64cfe938a569402434decffe4cd;hp=1169864c3a5853f0d301855253616d0cd346fac9;hpb=65b3903ff576488eaabb51d3c4fbf9c73d867d7c;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index 1169864c3..d1230d2b6 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); @@ -272,6 +273,7 @@ int make_stdio(int fd); int make_null_stdio(void); int make_console_stdio(void); +int dev_urandom(void *p, size_t n); void random_bytes(void *p, size_t n); static inline uint64_t random_u64(void) { @@ -407,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); @@ -742,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) { @@ -820,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); @@ -839,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); @@ -854,3 +868,8 @@ 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); + +unsigned long personality_from_string(const char *p); +const char *personality_to_string(unsigned long);