Print this page

        

*** 71,88 **** #include <sys/elf.h> #include <libproc.h> #include <wctype.h> #include <widec.h> #include <elfcap.h> - #include <libgen.h> - typedef enum pargs_cmd { - PARGS_ARGV, - PARGS_ENV, - PARGS_AUXV - } pargs_cmd_t; - typedef struct pargs_data { struct ps_prochandle *pd_proc; /* target proc handle */ psinfo_t *pd_psinfo; /* target psinfo */ char *pd_locale; /* target process locale */ int pd_conv_flags; /* flags governing string conversion */ --- 71,81 ----
*** 1288,1335 **** int aflag = 0, cflag = 0, eflag = 0, xflag = 0, lflag = 0; int errflg = 0, retc = 0; int opt; int error = 1; core_content_t content = 0; - pargs_cmd_t cmd = PARGS_ARGV; (void) setlocale(LC_ALL, ""); ! command = basename(argv[0]); - if (strcmp(command, "penv") == 0) - cmd = PARGS_ENV; - else if (strcmp(command, "pauxv") == 0) - cmd = PARGS_AUXV; - while ((opt = getopt(argc, argv, "acelxF")) != EOF) { switch (opt) { case 'a': /* show process arguments */ content |= CC_CONTENT_STACK; aflag++; - if (cmd != PARGS_ARGV) - errflg++; break; case 'c': /* force 7-bit ascii */ cflag++; break; case 'e': /* show environment variables */ content |= CC_CONTENT_STACK; eflag++; - if (cmd != PARGS_ARGV) - errflg++; break; case 'l': lflag++; aflag++; /* -l implies -a */ - if (cmd != PARGS_ARGV) - errflg++; break; case 'x': /* show aux vector entries */ xflag++; - if (cmd != PARGS_ARGV) - errflg++; break; case 'F': /* * Since we open the process read-only, there is no need * for the -F flag. It's a documented flag, so we --- 1281,1317 ---- int aflag = 0, cflag = 0, eflag = 0, xflag = 0, lflag = 0; int errflg = 0, retc = 0; int opt; int error = 1; core_content_t content = 0; (void) setlocale(LC_ALL, ""); ! if ((command = strrchr(argv[0], '/')) != NULL) ! command++; ! else ! command = argv[0]; while ((opt = getopt(argc, argv, "acelxF")) != EOF) { switch (opt) { case 'a': /* show process arguments */ content |= CC_CONTENT_STACK; aflag++; break; case 'c': /* force 7-bit ascii */ cflag++; break; case 'e': /* show environment variables */ content |= CC_CONTENT_STACK; eflag++; break; case 'l': lflag++; aflag++; /* -l implies -a */ break; case 'x': /* show aux vector entries */ xflag++; break; case 'F': /* * Since we open the process read-only, there is no need * for the -F flag. It's a documented flag, so we
*** 1342,1365 **** } } /* -a is the default if no options are specified */ if ((aflag + eflag + xflag + lflag) == 0) { - switch (cmd) { - case PARGS_ARGV: aflag++; content |= CC_CONTENT_STACK; - break; - case PARGS_ENV: - content |= CC_CONTENT_STACK; - eflag++; - break; - case PARGS_AUXV: - xflag++; - break; } - } /* -l cannot be used with the -x or -e flags */ if (lflag && (xflag || eflag)) { (void) fprintf(stderr, "-l is incompatible with -x and -e\n"); errflg++; --- 1324,1336 ----