X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fshared%2Futil.c;h=8c1cf52c0a695c653b74b8a9cfd869a84e8d9178;hb=32802361561403cb6441198c82d9c499e0513863;hp=21651708d55ba033346db88c164f05752e90e1f8;hpb=820d3acfe924e58965d14b4711d5df31c5db199a;p=elogind.git diff --git a/src/shared/util.c b/src/shared/util.c index 21651708d..8c1cf52c0 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -618,56 +618,6 @@ int get_parent_of_pid(pid_t pid, pid_t *_ppid) { return 0; } -int get_starttime_of_pid(pid_t pid, unsigned long long *st) { - int r; - _cleanup_free_ char *line = NULL; - const char *p; - - assert(pid >= 0); - assert(st); - - p = procfs_file_alloca(pid, "stat"); - r = read_one_line_file(p, &line); - if (r < 0) - return r; - - /* Let's skip the pid and comm fields. The latter is enclosed - * in () but does not escape any () in its value, so let's - * skip over it manually */ - - p = strrchr(line, ')'); - if (!p) - return -EIO; - - p++; - - if (sscanf(p, " " - "%*c " /* state */ - "%*d " /* ppid */ - "%*d " /* pgrp */ - "%*d " /* session */ - "%*d " /* tty_nr */ - "%*d " /* tpgid */ - "%*u " /* flags */ - "%*u " /* minflt */ - "%*u " /* cminflt */ - "%*u " /* majflt */ - "%*u " /* cmajflt */ - "%*u " /* utime */ - "%*u " /* stime */ - "%*d " /* cutime */ - "%*d " /* cstime */ - "%*d " /* priority */ - "%*d " /* nice */ - "%*d " /* num_threads */ - "%*d " /* itrealvalue */ - "%llu " /* starttime */, - st) != 1) - return -EIO; - - return 0; -} - int fchmod_umask(int fd, mode_t m) { mode_t u; int r; @@ -955,7 +905,7 @@ int get_process_root(pid_t pid, char **root) { return get_process_link_contents(p, root); } -int get_process_environ(pid_t pid, char **environ) { +int get_process_environ(pid_t pid, char **env) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *outcome = NULL; int c; @@ -963,7 +913,7 @@ int get_process_environ(pid_t pid, char **environ) { size_t allocated = 0, sz = 0; assert(pid >= 0); - assert(environ); + assert(env); p = procfs_file_alloca(pid, "environ"); @@ -982,7 +932,7 @@ int get_process_environ(pid_t pid, char **environ) { } outcome[sz] = '\0'; - *environ = outcome; + *env = outcome; outcome = NULL; return 0; @@ -3052,6 +3002,15 @@ _pure_ static int is_temporary_fs(struct statfs *s) { F_TYPE_EQUAL(s->f_type, RAMFS_MAGIC); } +int is_fd_on_temporary_fs(int fd) { + struct statfs s; + + if (fstatfs(fd, &s) < 0) + return -errno; + + return is_temporary_fs(&s); +} + int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) { struct statfs s;