On Wednesday 09 March 2011 03:58, [email protected] wrote:
> Hi,
> 
> I have ported pwdx from procps 3.2.8 to busybox. I have tested it and
> I would appreciate review and comments.

function                                             old     new   delta
pwdx_main                                              -     230    +230
packed_usage                                       28237   28268     +31
applet_names                                        2391    2396      +5
applet_main                                         1392    1396      +4
applet_nameofs                                       696     698      +2
applet_install_loc                                   174     175      +1
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 5/0 up/down: 273/0)             Total: 273 bytes


Can be made smaller:


//usage:#define pwdx_trivial_usage
//usage:       "PID..."
//usage:#define pwdx_full_usage "\n\n"
//usage:       "Show current directory for PIDs\n"

#include "libbb.h"

int pwdx_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int pwdx_main(int argc UNUSED_PARAM, char **argv)
{
        opt_complementary = "-1";
        getopt32(argv, "");
        argv += optind;

        do {
                char buf[sizeof("/proc/%u/cwd") + sizeof(int)*3];
                unsigned pid;
                char *s;
                char *arg = *argv;

                // Allowed on the command line:
                // /proc/NUM
                // NUM
                if (strncmp(arg, "/proc/", 6) == 0)
                        arg += 6;

                pid = bb_strtou(arg, NULL, 10);
                if (errno)
                        bb_error_msg_and_die("invalid process id: '%s'", arg);

                sprintf(buf, "/proc/%u/cwd", pid);

                s = xmalloc_readlink(buf);
                // "pwdx /proc/1" says "/proc/1: DIR", not "1: DIR"
                printf("%s: %s\n", *argv, s ? s : strerror(errno == ENOENT ? 
ESRCH : errno));
                free(s);
        } while (*++argv);

        return EXIT_SUCCESS;
}


function                                             old     new   delta
pwdx_main                                              -     197    +197
packed_usage                                       28237   28261     +24
applet_names                                        2391    2396      +5
applet_main                                         1392    1396      +4
applet_nameofs                                       696     698      +2
applet_install_loc                                   174     175      +1
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 5/0 up/down: 233/0)             Total: 233 bytes

-- 
vda
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to