return pakfire_parse_file(path, pakfire_parse_distro, distro);
}
-
-// PIDFD
-
-static int pidfd_parse_pid(char* line, size_t length, void* data) {
- pid_t* pid = data;
- int r;
-
- // Key & Value
- char* k = NULL;
- char* v = NULL;
-
- // Split the line
- r = pakfire_parse_split_line(line, length, &k, &v, ':');
- if (r)
- return r;
-
- // If we didn't get a result we skip this line
- if (!k || !v)
- return 0;
-
- if (strcmp(k, "Pid") == 0)
- *pid = strtoul(v, NULL, 10);
-
- return 0;
-}
-
-int pidfd_get_pid(int pidfd, pid_t* pid) {
- char path[PATH_MAX];
- int r;
-
- if (!pid)
- return -EINVAL;
-
- // Compose path
- r = pakfire_string_format(path, "/proc/self/fdinfo/%d", pidfd);
- if (r)
- return r;
-
- return pakfire_parse_file(path, pidfd_parse_pid, pid);
-}