fileio: modernize get_proc_field()

- Drop effectively unused "terminator" param, imply whitespace
- Make ret param optional
- Return ENODATA if the requested key is not found, rather than
  ENOENT
- Turn ENOENT -> ENOSYS if /proc/ is not mounted
- Don't skip whitespaces before ':', nothing needs this handling
  anyways
- Remove the special treatment for all "0"s. We don't actually
  use this for capabilities given pidref_get_capability() exists
- Switch away from read_full_virtual_file() - files using "field"
  scheme under /proc/ seem all to be "seq_file"s (refer to
  da65941c3e for details on file types)
This commit is contained in:
Mike Yuan
2025-05-01 13:10:26 +09:00
committed by Yu Watanabe
parent 2a2531b6c7
commit 15036f8555
8 changed files with 44 additions and 80 deletions
+3 -3
View File
@@ -870,7 +870,7 @@ int get_process_umask(pid_t pid, mode_t *ret) {
p = procfs_file_alloca(pid, "status");
r = get_proc_field(p, "Umask", WHITESPACE, &m);
r = get_proc_field(p, "Umask", &m);
if (r == -ENOENT)
return -ESRCH;
if (r < 0)
@@ -2079,9 +2079,9 @@ int get_process_threads(pid_t pid) {
p = procfs_file_alloca(pid, "status");
r = get_proc_field(p, "Threads", WHITESPACE, &t);
r = get_proc_field(p, "Threads", &t);
if (r == -ENOENT)
return proc_mounted() == 0 ? -ENOSYS : -ESRCH;
return -ESRCH;
if (r < 0)
return r;