chiark / gitweb /
implement drop-in directories
[elogind.git] / util.h
diff --git a/util.h b/util.h
index 9dfe631b8a5aa3b88c033f4fb394c52ddf781737..f14751ea5e2d2ea45e93ea248e0c738eaae65550 100644 (file)
--- a/util.h
+++ b/util.h
@@ -7,12 +7,20 @@
 #include <time.h>
 #include <sys/time.h>
 #include <stdbool.h>
+#include <stdlib.h>
 
 typedef uint64_t usec_t;
 
-#define USEC_PER_SEC 1000000ULL
+#define MSEC_PER_SEC  1000ULL
+#define USEC_PER_SEC  1000000ULL
+#define USEC_PER_MSEC 1000ULL
+#define NSEC_PER_SEC  1000000000ULL
+#define NSEC_PER_MSEC 1000000ULL
 #define NSEC_PER_USEC 1000ULL
 
+/* What is interpreted as whitespace? */
+#define WHITESPACE " \t\n"
+
 usec_t now(clockid_t clock);
 
 usec_t timespec_load(const struct timespec *ts);
@@ -52,16 +60,43 @@ static inline bool is_path_absolute(const char *p) {
 bool endswith(const char *s, const char *postfix);
 bool startswith(const char *s, const char *prefix);
 
-int nointr_close(int fd);
+int close_nointr(int fd);
 
 int parse_boolean(const char *v);
 
 int safe_atou(const char *s, unsigned *ret_u);
 int safe_atoi(const char *s, int *ret_i);
 
+int safe_atolu(const char *s, unsigned long *ret_u);
+int safe_atoli(const char *s, long int *ret_i);
+
+int safe_atollu(const char *s, unsigned long long *ret_u);
+int safe_atolli(const char *s, long long int *ret_i);
+
 char *split_spaces(const char *c, size_t *l, char **state);
+char *split_quoted(const char *c, size_t *l, char **state);
 
-#define FOREACH_WORD(word, length, s, state)    \
+#define FOREACH_WORD(word, length, s, state)                            \
         for ((state) = NULL, (word) = split_spaces((s), &(l), &(state)); (word); (word) = split_spaces((s), &(l), &(state)))
 
+#define FOREACH_WORD_QUOTED(word, length, s, state)                     \
+        for ((state) = NULL, (word) = split_quoted((s), &(l), &(state)); (word); (word) = split_quoted((s), &(l), &(state)))
+
+const char *sigchld_code(int code);
+
+pid_t get_parent_of_pid(pid_t pid, pid_t *ppid);
+
+int write_one_line_file(const char *fn, const char *line);
+int read_one_line_file(const char *fn, char **line);
+
+char *strappend(const char *s, const char *suffix);
+
+int readlink_malloc(const char *p, char **r);
+
+char *file_name_from_path(const char *p);
+bool is_path(const char *p);
+
+bool path_is_absolute(const char *p);
+char *path_make_absolute(const char *p, const char *prefix);
+
 #endif