pwdx.c - ubase - suckless linux base utils
(HTM) git clone git://git.suckless.org/ubase
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
pwdx.c (857B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <errno.h>
3 #include <limits.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <unistd.h>
7
8 #include "util.h"
9
10 static void
11 usage(void)
12 {
13 eprintf("usage: %s pid...\n", argv0);
14 }
15
16 int
17 main(int argc, char *argv[])
18 {
19 int ret = 0;
20 char path[PATH_MAX];
21 char target[PATH_MAX + sizeof(" (deleted)")];
22 ssize_t n;
23
24 ARGBEGIN {
25 default:
26 usage();
27 } ARGEND;
28
29 if (argc == 0)
30 usage();
31
32 for (; argc > 0; argc--, argv++) {
33 n = snprintf(path, sizeof(path), "/proc/%s/cwd", *argv);
34 if (n < 0 || n >= sizeof(path)) {
35 errno = ESRCH;
36 } else {
37 n = readlink(path, target, sizeof(target) - 1);
38 if (n >= 0) {
39 target[n] = '\0';
40 printf("%s: %s\n", *argv, target);
41 continue;
42 }
43 }
44 if (errno == ENOENT)
45 errno = ESRCH;
46 weprintf("%s:", *argv);
47 ret = 1;
48 }
49
50 return ret;
51 }