aboutsummaryrefslogtreecommitdiff
path: root/toys/other/pwdx.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/other/pwdx.c')
-rw-r--r--toys/other/pwdx.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/toys/other/pwdx.c b/toys/other/pwdx.c
new file mode 100644
index 00000000..c3f134f7
--- /dev/null
+++ b/toys/other/pwdx.c
@@ -0,0 +1,40 @@
+/* pwdx.c - report current directory of a process.
+ *
+ * Copyright 2013 Lukasz Skalski <l.skalski@partner.samsung.com>
+
+USE_PWDX(NEWTOY(pwdx, "<1a", TOYFLAG_USR|TOYFLAG_BIN))
+
+config PWDX
+ bool "pwdx"
+ default y
+ help
+ usage: pwdx pids ...
+*/
+
+#include "toys.h"
+
+int pid_dir(char *pid)
+{
+ char *path;
+ int num_bytes;
+
+ path = xmsprintf("/proc/%s/cwd",pid);
+ num_bytes = readlink(path,toybuf,sizeof(toybuf));
+ if(num_bytes==-1){
+ xprintf("%s: %s\n",pid,strerror(errno));
+ return 1;
+ }else{
+ toybuf[num_bytes]='\0';
+ xprintf("%s: %s\n",pid,toybuf);
+ return 0;
+ }
+}
+
+void pwdx_main(void)
+{
+ int i;
+
+ for (i=0; toys.optargs[i]; i++)
+ toys.exitval |= pid_dir(toys.optargs[i]);
+}
+