123186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley/* pwdx.c - report current directory of a process.
223186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley *
323186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley * Copyright 2013 Lukasz Skalski <l.skalski@partner.samsung.com>
423186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley
523186636fcb261d263f417e605cbe8b7e2103ca5Rob LandleyUSE_PWDX(NEWTOY(pwdx, "<1a", TOYFLAG_USR|TOYFLAG_BIN))
623186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley
723186636fcb261d263f417e605cbe8b7e2103ca5Rob Landleyconfig PWDX
823186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley  bool "pwdx"
923186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley  default y
1023186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley  help
117f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley    usage: pwdx PID...
127f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley
137f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley    Print working directory of processes listed on command line.
1423186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley*/
1523186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley
1623186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley#include "toys.h"
1723186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley
1823186636fcb261d263f417e605cbe8b7e2103ca5Rob Landleyvoid pwdx_main(void)
1923186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley{
206db8529a785e2cab142e840b6e3fbdcc2c02dd1fRob Landley  char **optargs;
216db8529a785e2cab142e840b6e3fbdcc2c02dd1fRob Landley
226db8529a785e2cab142e840b6e3fbdcc2c02dd1fRob Landley  for (optargs = toys.optargs; *optargs; optargs++) {
2346409d50e5632b28b88cfa4991fffef9adaa490dRob Landley    char *path = toybuf;
247f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley
2546409d50e5632b28b88cfa4991fffef9adaa490dRob Landley    sprintf(toybuf, "/proc/%d/cwd", atoi(*optargs));
2646409d50e5632b28b88cfa4991fffef9adaa490dRob Landley    if (!readlink0(path, toybuf, sizeof(toybuf))) {
277f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley      path = strerror(errno);
287f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley      toys.exitval = 1;
297f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley    }
3046409d50e5632b28b88cfa4991fffef9adaa490dRob Landley
316db8529a785e2cab142e840b6e3fbdcc2c02dd1fRob Landley    xprintf("%s: %s\n", *optargs, path);
327f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley  }
3323186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley}
34