annotate toys/other/pwdx.c @ 1038:5b6027634d01 draft

pwdx by Lukasz Skalski.
author Rob Landley <rob@landley.net>
date Mon, 02 Sep 2013 05:06:05 -0500
parents
children 75f5e63d79c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1038
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* pwdx.c - report current directory of a process.
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 *
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * Copyright 2013 Lukasz Skalski <l.skalski@partner.samsung.com>
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 USE_PWDX(NEWTOY(pwdx, "<1a", TOYFLAG_USR|TOYFLAG_BIN))
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
6
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 config PWDX
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 bool "pwdx"
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 default y
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 help
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
11 usage: pwdx pids ...
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 */
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
13
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 #include "toys.h"
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
15
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
16 int pid_dir(char *pid)
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 {
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
18 char *path;
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 int num_bytes;
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
20
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
21 path = xmsprintf("/proc/%s/cwd",pid);
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
22 num_bytes = readlink(path,toybuf,sizeof(toybuf));
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 if(num_bytes==-1){
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 xprintf("%s: %s\n",pid,strerror(errno));
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 return 1;
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 }else{
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
27 toybuf[num_bytes]='\0';
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 xprintf("%s: %s\n",pid,toybuf);
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 return 0;
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
30 }
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
31 }
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
32
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 void pwdx_main(void)
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 {
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 int i;
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
36
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 for (i=0; toys.optargs[i]; i++)
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 toys.exitval |= pid_dir(toys.optargs[i]);
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 }
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
40