Add pwdx(1) - ubase - suckless linux base utils
 (HTM) git clone git://git.suckless.org/ubase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit f26a1449bfa18a6fbbe263f084df4e490772e9d3
 (DIR) parent 28795cffe22ee6a645e4763f6b9bd0e422dddb2a
 (HTM) Author: Mattias Andrée <maandree@kth.se>
       Date:   Sat, 26 Mar 2016 12:58:37 +0100
       
       Add pwdx(1)
       
       Signed-off-by: Mattias Andrée <maandree@kth.se>
       
       Diffstat:
         M Makefile                            |       2 ++
         M TODO                                |       1 -
         A pwdx.1                              |      13 +++++++++++++
         A pwdx.c                              |      51 +++++++++++++++++++++++++++++++
       
       4 files changed, 66 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       @@ -70,6 +70,7 @@ BIN = \
                pidof             \
                pivot_root        \
                ps                \
       +        pwdx              \
                readahead         \
                respawn           \
                rmmod             \
       @@ -106,6 +107,7 @@ MAN1 = \
                passwd.1            \
                pidof.1             \
                ps.1                \
       +        pwdx.1              \
                respawn.1           \
                stat.1              \
                su.1                \
 (DIR) diff --git a/TODO b/TODO
       @@ -19,7 +19,6 @@ mkswap [-L]
        partprobe
        pmap
        ps (support for more options)
       -pwdx
        rfkill
        rmgroup
        rmuser
 (DIR) diff --git a/pwdx.1 b/pwdx.1
       @@ -0,0 +1,13 @@
       +.Dd March 26, 2015
       +.Dt PWDX 1
       +.Os ubase
       +.Sh NAME
       +.Nm pwdx
       +.Nd print working directory of other processes
       +.Sh SYNOPSIS
       +.Nm
       +.Ar pid...
       +.Sh DESCRIPTION
       +.Nm
       +Prints the current working directory for each
       +.Ar pid .
 (DIR) diff --git a/pwdx.c b/pwdx.c
       @@ -0,0 +1,51 @@
       +/* See LICENSE file for copyright and license details. */
       +#include <errno.h>
       +#include <limits.h>
       +#include <stdio.h>
       +#include <string.h>
       +#include <unistd.h>
       +
       +#include "util.h"
       +
       +static void
       +usage(void)
       +{
       +        eprintf("usage: %s pid...\n", argv0);
       +}
       +
       +int
       +main(int argc, char *argv[])
       +{
       +        int ret = 0;
       +        char path[PATH_MAX];
       +        char target[PATH_MAX + sizeof(" (deleted)")];
       +        ssize_t n;
       +
       +        ARGBEGIN {
       +        default:
       +                usage();
       +        } ARGEND;
       +
       +        if (argc == 0)
       +                usage();
       +
       +        for (; argc > 0; argc--, argv++) {
       +                n = snprintf(path, sizeof(path), "/proc/%s/cwd", *argv);
       +                if (n < 0 || n > sizeof(path)) {
       +                        errno = ESRCH;
       +                } else {
       +                        n = readlink(path, target, sizeof(target) - 1);
       +                        if (n >= 0) {
       +                                target[n] = '\0';
       +                                printf("%s: %s\n", *argv, target);
       +                                continue;
       +                        }
       +                }
       +                if (errno == ENOENT)
       +                        errno = ESRCH;
       +                weprintf("%s:", *argv);
       +                ret = 1;
       +        }
       +
       +        return ret;
       +}