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++) { 237f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley char *path; 247f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley int num_bytes; 257f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley 2659d85e2bb065a3bdc27868acb7a65f89d872c7faRob Landley path = xmprintf("/proc/%s/cwd", *optargs); 277f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley num_bytes = readlink(path, toybuf, sizeof(toybuf)-1); 287f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley free(path); 297f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley 307f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley if (num_bytes==-1) { 317f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley path = strerror(errno); 327f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley toys.exitval = 1; 337f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley } else { 347f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley path = toybuf; 357f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley toybuf[num_bytes] = 0; 367f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley } 376db8529a785e2cab142e840b6e3fbdcc2c02dd1fRob Landley xprintf("%s: %s\n", *optargs, path); 387f8f9ec5113bff8c0f7bd3e9341b688d8af91258Rob Landley } 3923186636fcb261d263f417e605cbe8b7e2103ca5Rob Landley} 40