Lines Matching refs:datap

343 quote_string_ascii(pargs_data_t *datap, char *src)  in quote_string_ascii()  argument
400 quote_string(pargs_data_t *datap, char *src) in quote_string() argument
412 if (datap->pd_conv_flags & CONV_STRICT_ASCII) in quote_string()
413 return (quote_string_ascii(datap, src)); in quote_string()
419 return (quote_string_ascii(datap, src)); in quote_string()
486 lookup_locale(pargs_data_t *datap) in lookup_locale() argument
498 for (i = 0; i < datap->pd_envc; i++) { in lookup_locale()
499 char *s = datap->pd_envp_strs[i]; in lookup_locale()
552 datap->pd_locale = pd_locale; in lookup_locale()
560 extract_string(pargs_data_t *datap, uintptr_t addr) in extract_string() argument
568 if (Pread_string(datap->pd_proc, result, size, addr) < 0) { in extract_string()
587 read_ptr_array(pargs_data_t *datap, uintptr_t offset, uintptr_t *buf, in read_ptr_array() argument
593 res = Pread(datap->pd_proc, buf, nelems * sizeof (uintptr_t), in read_ptr_array()
599 res = Pread(datap->pd_proc, arr32, nelems * sizeof (uint32_t), in read_ptr_array()
615 get_args(pargs_data_t *datap) in get_args() argument
617 size_t argc = datap->pd_psinfo->pr_argc; in get_args()
618 uintptr_t argvoff = datap->pd_psinfo->pr_argv; in get_args()
621 datap->pd_argc = argc; in get_args()
622 datap->pd_argv = safe_zalloc(argc * sizeof (uintptr_t)); in get_args()
624 if (read_ptr_array(datap, argvoff, datap->pd_argv, argc) <= 0) { in get_args()
625 free(datap->pd_argv); in get_args()
626 datap->pd_argv = NULL; in get_args()
627 datap->pd_argc = 0; in get_args()
631 datap->pd_argv_strs = safe_zalloc(argc * sizeof (char *)); in get_args()
633 if (datap->pd_argv[i] == 0) in get_args()
635 datap->pd_argv_strs[i] = extract_string(datap, in get_args()
636 datap->pd_argv[i]); in get_args()
644 pargs_data_t *datap = data; in build_env() local
646 if (datap->pd_envp != NULL) { in build_env()
647 if (datap->pd_envc == datap->pd_env_space) { in build_env()
652 void *new = realloc(datap->pd_envp, in build_env()
653 sizeof (uintptr_t) * datap->pd_env_space * 2); in build_env()
656 datap->pd_envp = new; in build_env()
658 new = realloc(datap->pd_envp_strs, in build_env()
659 sizeof (char *) * datap->pd_env_space * 2); in build_env()
662 datap->pd_envp_strs = new; in build_env()
664 datap->pd_env_space *= 2; in build_env()
667 datap->pd_envp[datap->pd_envc] = addr; in build_env()
669 datap->pd_envp_strs[datap->pd_envc] = NULL; in build_env()
671 datap->pd_envp_strs[datap->pd_envc] = strdup(str); in build_env()
674 datap->pd_envc++; in build_env()
680 get_env(pargs_data_t *datap) in get_env() argument
682 struct ps_prochandle *pr = datap->pd_proc; in get_env()
684 datap->pd_envc = 0; in get_env()
685 (void) Penv_iter(pr, build_env, datap); in get_env()
688 datap->pd_env_space = datap->pd_envc != 0 ? datap->pd_envc : 1; in get_env()
689 datap->pd_envp = safe_zalloc(sizeof (uintptr_t) * datap->pd_env_space); in get_env()
690 datap->pd_envp_strs = in get_env()
691 safe_zalloc(sizeof (char *) * datap->pd_env_space); in get_env()
693 datap->pd_envc = 0; in get_env()
694 (void) Penv_iter(pr, build_env, datap); in get_env()
885 get_auxv(pargs_data_t *datap) in get_auxv() argument
893 if (ps_pauxv(datap->pd_proc, &auxvp) != PS_OK) in get_auxv()
899 datap->pd_auxc = i; in get_auxv()
900 datap->pd_auxv = safe_zalloc(i * sizeof (auxv_t)); in get_auxv()
901 bcopy(auxvp, datap->pd_auxv, i * sizeof (auxv_t)); in get_auxv()
903 datap->pd_auxv_strs = safe_zalloc(datap->pd_auxc * sizeof (char *)); in get_auxv()
904 for (i = 0; i < datap->pd_auxc; i++) { in get_auxv()
905 struct aux_id *aux = aux_find(datap->pd_auxv[i].a_type); in get_auxv()
911 datap->pd_auxv_strs[i] = in get_auxv()
912 extract_string(datap, datap->pd_auxv[i].a_un.a_val); in get_auxv()
922 setup_conversions(pargs_data_t *datap, int *diflocale) in setup_conversions() argument
934 if (datap->pd_conv_flags & CONV_STRICT_ASCII) in setup_conversions()
940 if ((strcmp(datap->pd_locale, "C") == 0) || in setup_conversions()
941 (strcmp(datap->pd_locale, "POSIX") == 0)) { in setup_conversions()
942 datap->pd_conv_flags |= CONV_STRICT_ASCII; in setup_conversions()
949 if (setlocale(LC_ALL, datap->pd_locale) == NULL) { in setup_conversions()
986 if ((datap->pd_iconv = iconv_open(mycharset, targetcharset)) in setup_conversions()
998 datap->pd_conv_flags |= CONV_STRICT_ASCII; in setup_conversions()
1000 datap->pd_conv_flags |= CONV_USE_ICONV; in setup_conversions()
1010 cleanup_conversions(pargs_data_t *datap) in cleanup_conversions() argument
1012 if (datap->pd_conv_flags & CONV_USE_ICONV) { in cleanup_conversions()
1013 (void) iconv_close(datap->pd_iconv); in cleanup_conversions()
1018 convert_run_iconv(pargs_data_t *datap, const char *str) in convert_run_iconv() argument
1033 (void) iconv(datap->pd_iconv, NULL, &inleft, in convert_run_iconv()
1038 if (iconv(datap->pd_iconv, &instrptr, &inleft, &outstrptr, in convert_run_iconv()
1072 convert_str(pargs_data_t *datap, const char *str, int *unprintable) in convert_str() argument
1076 if (datap->pd_conv_flags & CONV_STRICT_ASCII) { in convert_str()
1081 if ((datap->pd_conv_flags & CONV_USE_ICONV) == 0) { in convert_str()
1114 (void) setlocale(LC_ALL, datap->pd_locale); in convert_str()
1119 if ((retstr = convert_run_iconv(datap, retstr)) == NULL) { in convert_str()
1142 convert_array(pargs_data_t *datap, char **arr, size_t count, int *unprintable) in convert_array() argument
1153 arr[i] = convert_str(datap, arr[i], unprintable); in convert_array()
1162 free_data(pargs_data_t *datap) in free_data() argument
1166 for (i = 0; i < datap->pd_argc; i++) in free_data()
1167 free(datap->pd_argv_strs[i]); in free_data()
1168 free(datap->pd_argv); in free_data()
1169 free(datap->pd_argv_strs); in free_data()
1171 for (i = 0; i < datap->pd_envc; i++) in free_data()
1172 free(datap->pd_envp_strs[i]); in free_data()
1173 free(datap->pd_envp); in free_data()
1174 free(datap->pd_envp_strs); in free_data()
1176 for (i = 0; i < datap->pd_auxc; i++) in free_data()
1177 free(datap->pd_auxv_strs[i]); in free_data()
1178 free(datap->pd_auxv); in free_data()
1179 free(datap->pd_auxv_strs); in free_data()
1183 print_args(pargs_data_t *datap) in print_args() argument
1187 if (datap->pd_argv == NULL) { in print_args()
1192 for (i = 0; i < datap->pd_argc; i++) { in print_args()
1194 if (datap->pd_argv[i] == (uintptr_t)NULL) { in print_args()
1196 } else if (datap->pd_argv_strs[i] == NULL) { in print_args()
1199 (long)datap->pd_argv[i]); in print_args()
1201 (void) printf("%s\n", datap->pd_argv_strs[i]); in print_args()
1207 print_env(pargs_data_t *datap) in print_env() argument
1211 if (datap->pd_envp == NULL) { in print_env()
1216 for (i = 0; i < datap->pd_envc; i++) { in print_env()
1218 if (datap->pd_envp[i] == 0) { in print_env()
1220 } else if (datap->pd_envp_strs[i] == NULL) { in print_env()
1223 (long)datap->pd_envp[i]); in print_env()
1225 (void) printf("%s\n", datap->pd_envp_strs[i]); in print_env()
1231 print_cmdline(pargs_data_t *datap) in print_cmdline() argument
1239 for (i = 0; i < datap->pd_argc; i++) { in print_cmdline()
1240 if (datap->pd_argv == NULL || in print_cmdline()
1241 datap->pd_argv[i] == (uintptr_t)NULL || in print_cmdline()
1242 datap->pd_argv_strs[i] == NULL) { in print_cmdline()
1248 datap->pd_argv_strs[i] = in print_cmdline()
1249 quote_string(datap, datap->pd_argv_strs[i]); in print_cmdline()
1252 if (datap->pd_execname == NULL) { in print_cmdline()
1258 (void) printf("%s ", datap->pd_execname); in print_cmdline()
1260 for (i = 1; i < datap->pd_argc; i++) in print_cmdline()
1261 (void) printf("%s ", datap->pd_argv_strs[i]); in print_cmdline()
1269 print_auxv(pargs_data_t *datap) in print_auxv() argument
1277 for (i = 0; i < datap->pd_auxc; i++) { in print_auxv()
1282 pa = &datap->pd_auxv[i]; in print_auxv()
1293 aux->aux_decode(v, datap->pd_auxv_strs[i], in print_auxv()
1411 pargs_data_t datap; in main() local
1499 bzero(&datap, sizeof (datap)); in main()
1501 datap.pd_proc = Pr; in main()
1502 datap.pd_psinfo = &psinfo; in main()
1505 datap.pd_conv_flags |= CONV_STRICT_ASCII; in main()
1524 get_env(&datap); in main()
1526 get_args(&datap); in main()
1528 get_auxv(&datap); in main()
1548 datap.pd_execname = Pexecname(Pr, execname, in main()
1557 lookup_locale(&datap); in main()
1559 setup_conversions(&datap, &diflocale); in main()
1563 convert_array(&datap, datap.pd_argv_strs, in main()
1564 datap.pd_argc, &unprintable); in main()
1574 retc += print_cmdline(&datap); in main()
1576 psargs_conv = convert_str(&datap, psinfo.pr_psargs, in main()
1593 convert_array(&datap, datap.pd_argv_strs, in main()
1594 datap.pd_argc, &unprintable); in main()
1595 print_args(&datap); in main()
1601 convert_array(&datap, datap.pd_envp_strs, in main()
1602 datap.pd_envc, &unprintable); in main()
1603 print_env(&datap); in main()
1609 convert_array(&datap, datap.pd_auxv_strs, in main()
1610 datap.pd_auxc, &unprintable); in main()
1611 print_auxv(&datap); in main()
1615 cleanup_conversions(&datap); in main()
1616 free_data(&datap); in main()