Lines Matching defs:datap

335 quote_string_ascii(pargs_data_t *datap, char *src)
392 quote_string(pargs_data_t *datap, char *src)
404 if (datap->pd_conv_flags & CONV_STRICT_ASCII)
405 return (quote_string_ascii(datap, src));
411 return (quote_string_ascii(datap, src));
471 * datap->pd_locale.
478 lookup_locale(pargs_data_t *datap)
490 for (i = 0; i < datap->pd_envc; i++) {
491 char *s = datap->pd_envp_strs[i];
544 datap->pd_locale = pd_locale;
552 extract_string(pargs_data_t *datap, uintptr_t addr)
560 if (Pread_string(datap->pd_proc, result, size, addr) < 0) {
579 read_ptr_array(pargs_data_t *datap, uintptr_t offset, uintptr_t *buf,
585 res = Pread(datap->pd_proc, buf, nelems * sizeof (uintptr_t),
591 res = Pread(datap->pd_proc, arr32, nelems * sizeof (uint32_t),
604 * datap->pd_argv and the extracted strings in datap->pd_argv_strs.
607 get_args(pargs_data_t *datap)
609 size_t argc = datap->pd_psinfo->pr_argc;
610 uintptr_t argvoff = datap->pd_psinfo->pr_argv;
613 datap->pd_argc = argc;
614 datap->pd_argv = safe_zalloc(argc * sizeof (uintptr_t));
616 if (read_ptr_array(datap, argvoff, datap->pd_argv, argc) <= 0) {
617 free(datap->pd_argv);
618 datap->pd_argv = NULL;
622 datap->pd_argv_strs = safe_zalloc(argc * sizeof (char *));
624 if (datap->pd_argv[i] == 0)
626 datap->pd_argv_strs[i] = extract_string(datap,
627 datap->pd_argv[i]);
635 pargs_data_t *datap = data;
637 if (datap->pd_envp != NULL) {
638 if (datap->pd_envc == datap->pd_env_space) {
643 void *new = realloc(datap->pd_envp,
644 sizeof (uintptr_t) * datap->pd_env_space * 2);
647 datap->pd_envp = new;
649 new = realloc(datap->pd_envp_strs,
650 sizeof (char *) * datap->pd_env_space * 2);
653 datap->pd_envp_strs = new;
655 datap->pd_env_space *= 2;
658 datap->pd_envp[datap->pd_envc] = addr;
660 datap->pd_envp_strs[datap->pd_envc] = NULL;
662 datap->pd_envp_strs[datap->pd_envc] = strdup(str);
665 datap->pd_envc++;
671 get_env(pargs_data_t *datap)
673 struct ps_prochandle *pr = datap->pd_proc;
675 datap->pd_envc = 0;
676 (void) Penv_iter(pr, build_env, datap);
679 datap->pd_env_space = datap->pd_envc != 0 ? datap->pd_envc : 1;
680 datap->pd_envp = safe_zalloc(sizeof (uintptr_t) * datap->pd_env_space);
681 datap->pd_envp_strs =
682 safe_zalloc(sizeof (char *) * datap->pd_env_space);
684 datap->pd_envc = 0;
685 (void) Penv_iter(pr, build_env, datap);
862 get_auxv(pargs_data_t *datap)
870 if (ps_pauxv(datap->pd_proc, &auxvp) != PS_OK)
876 datap->pd_auxc = i;
877 datap->pd_auxv = safe_zalloc(i * sizeof (auxv_t));
878 bcopy(auxvp, datap->pd_auxv, i * sizeof (auxv_t));
880 datap->pd_auxv_strs = safe_zalloc(datap->pd_auxc * sizeof (char *));
881 for (i = 0; i < datap->pd_auxc; i++) {
882 struct aux_id *aux = aux_find(datap->pd_auxv[i].a_type);
888 datap->pd_auxv_strs[i] =
889 extract_string(datap, datap->pd_auxv[i].a_un.a_val);
899 setup_conversions(pargs_data_t *datap, int *diflocale)
911 if (datap->pd_conv_flags & CONV_STRICT_ASCII)
917 if ((strcmp(datap->pd_locale, "C") == 0) ||
918 (strcmp(datap->pd_locale, "POSIX") == 0)) {
919 datap->pd_conv_flags |= CONV_STRICT_ASCII;
926 if (setlocale(LC_ALL, datap->pd_locale) == NULL) {
963 if ((datap->pd_iconv = iconv_open(mycharset, targetcharset))
975 datap->pd_conv_flags |= CONV_STRICT_ASCII;
977 datap->pd_conv_flags |= CONV_USE_ICONV;
987 cleanup_conversions(pargs_data_t *datap)
989 if (datap->pd_conv_flags & CONV_USE_ICONV) {
990 (void) iconv_close(datap->pd_iconv);
995 convert_run_iconv(pargs_data_t *datap, const char *str)
1010 (void) iconv(datap->pd_iconv, NULL, &inleft,
1015 if (iconv(datap->pd_iconv, &instrptr, &inleft, &outstrptr,
1049 convert_str(pargs_data_t *datap, const char *str, int *unprintable)
1053 if (datap->pd_conv_flags & CONV_STRICT_ASCII) {
1058 if ((datap->pd_conv_flags & CONV_USE_ICONV) == 0) {
1091 (void) setlocale(LC_ALL, datap->pd_locale);
1096 if ((retstr = convert_run_iconv(datap, retstr)) == NULL) {
1119 convert_array(pargs_data_t *datap, char **arr, size_t count, int *unprintable)
1130 arr[i] = convert_str(datap, arr[i], unprintable);
1139 free_data(pargs_data_t *datap)
1143 for (i = 0; i < datap->pd_argc; i++)
1144 free(datap->pd_argv_strs[i]);
1145 free(datap->pd_argv);
1146 free(datap->pd_argv_strs);
1148 for (i = 0; i < datap->pd_envc; i++)
1149 free(datap->pd_envp_strs[i]);
1150 free(datap->pd_envp);
1151 free(datap->pd_envp_strs);
1153 for (i = 0; i < datap->pd_auxc; i++)
1154 free(datap->pd_auxv_strs[i]);
1155 free(datap->pd_auxv);
1156 free(datap->pd_auxv_strs);
1160 print_args(pargs_data_t *datap)
1164 if (datap->pd_argv == NULL) {
1169 for (i = 0; i < datap->pd_argc; i++) {
1171 if (datap->pd_argv[i] == NULL) {
1173 } else if (datap->pd_argv_strs[i] == NULL) {
1176 (long)datap->pd_argv[i]);
1178 (void) printf("%s\n", datap->pd_argv_strs[i]);
1184 print_env(pargs_data_t *datap)
1188 if (datap->pd_envp == NULL) {
1193 for (i = 0; i < datap->pd_envc; i++) {
1195 if (datap->pd_envp[i] == 0) {
1197 } else if (datap->pd_envp_strs[i] == NULL) {
1200 (long)datap->pd_envp[i]);
1202 (void) printf("%s\n", datap->pd_envp_strs[i]);
1208 print_cmdline(pargs_data_t *datap)
1216 for (i = 0; i < datap->pd_argc; i++) {
1217 if (datap->pd_argv == NULL || datap->pd_argv[i] == NULL ||
1218 datap->pd_argv_strs[i] == NULL) {
1224 datap->pd_argv_strs[i] =
1225 quote_string(datap, datap->pd_argv_strs[i]);
1228 if (datap->pd_execname == NULL) {
1234 (void) printf("%s ", datap->pd_execname);
1236 for (i = 1; i < datap->pd_argc; i++)
1237 (void) printf("%s ", datap->pd_argv_strs[i]);
1245 print_auxv(pargs_data_t *datap)
1253 for (i = 0; i < datap->pd_auxc; i++) {
1258 pa = &datap->pd_auxv[i];
1269 aux->aux_decode(v, datap->pd_auxv_strs[i],
1365 pargs_data_t datap;
1453 bzero(&datap, sizeof (datap));
1455 datap.pd_proc = Pr;
1456 datap.pd_psinfo = &psinfo;
1459 datap.pd_conv_flags |= CONV_STRICT_ASCII;
1478 get_env(&datap);
1480 get_args(&datap);
1482 get_auxv(&datap);
1502 datap.pd_execname = Pexecname(Pr, execname,
1511 lookup_locale(&datap);
1513 setup_conversions(&datap, &diflocale);
1517 convert_array(&datap, datap.pd_argv_strs,
1518 datap.pd_argc, &unprintable);
1528 retc += print_cmdline(&datap);
1530 psargs_conv = convert_str(&datap, psinfo.pr_psargs,
1547 convert_array(&datap, datap.pd_argv_strs,
1548 datap.pd_argc, &unprintable);
1549 print_args(&datap);
1555 convert_array(&datap, datap.pd_envp_strs,
1556 datap.pd_envc, &unprintable);
1557 print_env(&datap);
1563 convert_array(&datap, datap.pd_auxv_strs,
1564 datap.pd_auxc, &unprintable);
1565 print_auxv(&datap);
1569 cleanup_conversions(&datap);
1570 free_data(&datap);