int read_one_line_file(const char *fn, char **line);
char *strappend(const char *s, const char *suffix);
+char *strnappend(const char *s, const char *suffix, size_t length);
+
+char *replace_env(const char *format, char **env);
+char **replace_env_argv(char **argv, char **env);
int readlink_malloc(const char *p, char **r);
int readlink_and_make_absolute(const char *p, char **r);
int mkdir_parents(const char *path, mode_t mode);
int mkdir_p(const char *path, mode_t mode);
+int parent_of_path(const char *path, char **parent);
+
int rmdir_parents(const char *path, const char *stop);
int get_process_name(pid_t pid, char **name);
char *cescape(const char *s);
char *cunescape(const char *s);
+char *cunescape_length(const char *s, size_t length);
+
+char *xescape(const char *s, const char *bad);
+
+char *bus_path_escape(const char *s);
+char *bus_path_unescape(const char *s);
char *path_kill_slashes(char *path);
char *ascii_strlower(char *path);
-char *xescape(const char *s, const char *bad);
-
-char *bus_path_escape(const char *s);
-char *bus_path_unescape(const char *s);
-
bool ignore_file(const char *filename);
bool chars_intersect(const char *a, const char *b);
void status_printf(const char *format, ...);
void status_welcome(void);
+int columns(void);
+
+int running_in_chroot(void);
+
+char *ellipsize(const char *s, unsigned length, unsigned percent);
+
const char *ioprio_class_to_string(int i);
int ioprio_class_from_string(const char *s);
const char *ip_tos_to_string(int i);
int ip_tos_from_string(const char *s);
+const char *signal_to_string(int i);
+int signal_from_string(const char *s);
+
#endif