annotate toys/other/pwdx.c @ 1429:8c78a7e5486d draft

Disable xopen's default O_CLOEXEC for oneit.
author Rob Landley <rob@landley.net>
date Sat, 09 Aug 2014 23:49:48 -0500
parents 0752b2d58909
children
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
1039
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
11 usage: pwdx PID...
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
12
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
13 Print working directory of processes listed on command line.
1038
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
14 */
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 #include "toys.h"
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
17
1039
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
18 void pwdx_main(void)
1038
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
19 {
1150
ac4a0cde89c2 Don't permute toys.optargs, cleanup code (xexec()) can free it.
Rob Landley <rob@landley.net>
parents: 1039
diff changeset
20 char **optargs;
ac4a0cde89c2 Don't permute toys.optargs, cleanup code (xexec()) can free it.
Rob Landley <rob@landley.net>
parents: 1039
diff changeset
21
ac4a0cde89c2 Don't permute toys.optargs, cleanup code (xexec()) can free it.
Rob Landley <rob@landley.net>
parents: 1039
diff changeset
22 for (optargs = toys.optargs; *optargs; optargs++) {
1039
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
23 char *path;
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
24 int num_bytes;
1038
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
25
1183
0752b2d58909 Rename xmsprintf() to just xmprintf().
Rob Landley <rob@landley.net>
parents: 1150
diff changeset
26 path = xmprintf("/proc/%s/cwd", *optargs);
1039
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
27 num_bytes = readlink(path, toybuf, sizeof(toybuf)-1);
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
28 free(path);
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
29
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
30 if (num_bytes==-1) {
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
31 path = strerror(errno);
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
32 toys.exitval = 1;
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
33 } else {
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
34 path = toybuf;
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
35 toybuf[num_bytes] = 0;
75f5e63d79c3 Cleanup pwdx
Rob Landley <rob@landley.net>
parents: 1038
diff changeset
36 }
1150
ac4a0cde89c2 Don't permute toys.optargs, cleanup code (xexec()) can free it.
Rob Landley <rob@landley.net>
parents: 1039
diff changeset
37 xprintf("%s: %s\n", *optargs, path);
1038
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 }
5b6027634d01 pwdx by Lukasz Skalski.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 }