X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=d25b7ee1ee4c9925224cd027d6725d7d85f524ea;hb=ac6a4abed3e69daf6795e02fa4be1719ae6ae6ab;hp=0af0299dbb502f113806f175458c82564bf5a70e;hpb=f67cc036ba92a3c71acb664ed2d548de5827cf1f;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index 0af0299db..d25b7ee1e 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -1,7 +1,6 @@ /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -#ifndef fooutilhfoo -#define fooutilhfoo +#pragma once /*** This file is part of systemd. @@ -39,6 +38,7 @@ #include "macro.h" typedef uint64_t usec_t; +typedef uint64_t nsec_t; typedef struct dual_timestamp { usec_t realtime; @@ -53,11 +53,17 @@ typedef struct dual_timestamp { #define NSEC_PER_USEC 1000ULL #define USEC_PER_MINUTE (60ULL*USEC_PER_SEC) +#define NSEC_PER_MINUTE (60ULL*NSEC_PER_SEC) #define USEC_PER_HOUR (60ULL*USEC_PER_MINUTE) +#define NSEC_PER_HOUR (60ULL*NSEC_PER_MINUTE) #define USEC_PER_DAY (24ULL*USEC_PER_HOUR) +#define NSEC_PER_DAY (24ULL*NSEC_PER_HOUR) #define USEC_PER_WEEK (7ULL*USEC_PER_DAY) +#define NSEC_PER_WEEK (7ULL*NSEC_PER_DAY) #define USEC_PER_MONTH (2629800ULL*USEC_PER_SEC) +#define NSEC_PER_MONTH (2629800ULL*NSEC_PER_SEC) #define USEC_PER_YEAR (31557600ULL*USEC_PER_SEC) +#define NSEC_PER_YEAR (31557600ULL*NSEC_PER_SEC) /* What is interpreted as whitespace? */ #define WHITESPACE " \t\n\r" @@ -139,6 +145,7 @@ void close_many(const int fds[], unsigned n_fd); int parse_boolean(const char *v); int parse_usec(const char *t, usec_t *usec); +int parse_nsec(const char *t, nsec_t *nsec); int parse_bytes(const char *t, off_t *bytes); int parse_pid(const char *s, pid_t* ret_pid); int parse_uid(const char *s, uid_t* ret_uid); @@ -270,6 +277,7 @@ char *format_timespan(char *buf, size_t l, usec_t t); int make_stdio(int fd); int make_null_stdio(void); +int make_console_stdio(void); unsigned long long random_ull(void); @@ -313,7 +321,7 @@ int reset_terminal_fd(int fd, bool switch_to_text); int reset_terminal(const char *name); int open_terminal(const char *name, int mode); -int acquire_terminal(const char *name, bool fail, bool force, bool ignore_tiocstty_eperm); +int acquire_terminal(const char *name, bool fail, bool force, bool ignore_tiocstty_eperm, usec_t timeout); int release_terminal(void); int flush_fd(int fd); @@ -336,9 +344,11 @@ void rename_process(const char name[8]); void sigset_add_many(sigset_t *ss, ...); -char* gethostname_malloc(void); bool hostname_is_set(void); + +char* gethostname_malloc(void); char* getlogname_malloc(void); +char* getusername_malloc(void); int getttyname_malloc(int fd, char **r); int getttyname_harder(int fd, char **r); @@ -349,8 +359,10 @@ int get_ctty(pid_t, dev_t *_devnr, char **r); int chmod_and_chown(const char *path, mode_t mode, uid_t uid, gid_t gid); int fchmod_and_fchown(int fd, mode_t mode, uid_t uid, gid_t gid); -int rm_rf_children(int fd, bool only_dirs, bool honour_sticky); +int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev); +int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev); int rm_rf(const char *path, bool only_dirs, bool delete_root, bool honour_sticky); +int rm_rf_dangerous(const char *path, bool only_dirs, bool delete_root, bool honour_sticky); int pipe_eof(int fd); @@ -428,7 +440,7 @@ int fchmod_umask(int fd, mode_t mode); bool display_is_local(const char *display); int socket_from_display(const char *display, char **path); -int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const char **home); +int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const char **home, const char **shell); int get_group_creds(const char **groupname, gid_t *gid); int in_group(const char *name); @@ -440,7 +452,7 @@ int dirent_ensure_type(DIR *d, struct dirent *de); int in_search_path(const char *path, char **search); int get_files_in_directory(const char *path, char ***list); -char *join(const char *x, ...) _sentinel_; +char *strjoin(const char *x, ...) _sentinel_; bool is_main_thread(void); @@ -512,4 +524,9 @@ int can_sleep(const char *type); bool is_valid_documentation_url(const char *url); -#endif +bool in_initrd(void); + +void warn_melody(void); + +int get_shell(char **ret); +int get_home_dir(char **ret);