X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.h;h=bfa56335cd1fd0458dfed25a37a483cf77920b66;hb=f8eeeaf9b783ebbab30672629abf3920db286811;hp=84453713caebd2f164a498aa12a5f251eb1ab6d0;hpb=0193ad26ba121f3df259cc8b3bab54a99b8e5252;p=elogind.git diff --git a/src/shared/util.h b/src/shared/util.h index 84453713c..bfa56335c 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -45,12 +45,13 @@ #include #if SIZEOF_PID_T == 4 -# define PID_FMT "%" PRIu32 +# define PID_PRI PRIi32 #elif SIZEOF_PID_T == 2 -# define PID_FMT "%" PRIu16 +# define PID_PRI PRIi16 #else # error Unknown pid_t size #endif +#define PID_FMT "%" PID_PRI #if SIZEOF_UID_T == 4 # define UID_FMT "%" PRIu32 @@ -69,7 +70,7 @@ #endif #if SIZEOF_TIME_T == 8 -# define PRI_TIME PRIu64 +# define PRI_TIME PRIi64 #elif SIZEOF_TIME_T == 4 # define PRI_TIME PRIu32 #else @@ -380,7 +381,7 @@ static inline uint32_t random_u32(void) { if (!s) \ return log_oom(); \ } else { \ - r = asprintf(&s, "%u", i); \ + r = asprintf(&s, "%i", i); \ if (r < 0) \ return log_oom(); \ } \ @@ -651,7 +652,10 @@ int setrlimit_closest(int resource, const struct rlimit *rlim); int getenv_for_pid(pid_t pid, const char *field, char **_value); -bool is_valid_documentation_url(const char *url) _pure_; +bool http_url_is_valid(const char *url) _pure_; +bool documentation_url_is_valid(const char *url) _pure_; + +bool http_etag_is_valid(const char *etag); bool in_initrd(void); @@ -664,13 +668,6 @@ static inline void freep(void *p) { free(*(void**) p); } -#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ - static inline void func##p(type *p) { \ - if (*p) \ - func(*p); \ - } \ - struct __useless_struct_to_allow_trailing_semicolon__ - static inline void closep(int *fd) { safe_close(*fd); } @@ -993,6 +990,7 @@ union file_handle_union { struct file_handle handle; char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ]; }; +#define FILE_HANDLE_INIT { .handle.handle_bytes = MAX_HANDLE_SZ } int update_reboot_param_file(const char *param); @@ -1068,3 +1066,10 @@ void release_lock_file(LockFile *f); #define LOCK_FILE_INIT { .fd = -1, .path = NULL } #define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim }) + +ssize_t sparse_write(int fd, const void *p, size_t sz, size_t run_length); + +void sigkill_wait(pid_t *pid); +#define _cleanup_sigkill_wait_ _cleanup_(sigkill_wait) + +int syslog_parse_priority(const char **p, int *priority, bool with_facility);