URI: 
       pwdx.c - ubase - suckless linux base utils
  HTML 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 }