char * gdbscm_scm_to_host_string (SCM string, size_t *lenp, SCM *except_scmp) { return gdbscm_scm_to_string (string, lenp, host_charset (), 1, except_scmp); }
static enum string_repr_result ppscm_print_string_repr (SCM printer, enum display_hint hint, struct ui_file *stream, int recurse, const struct value_print_options *options, struct gdbarch *gdbarch, const struct language_defn *language) { struct value *replacement = NULL; SCM str_scm; enum string_repr_result result = STRING_REPR_ERROR; str_scm = ppscm_pretty_print_one_value (printer, &replacement, gdbarch, language); if (gdbscm_is_false (str_scm)) { result = STRING_REPR_NONE; } else if (scm_is_eq (str_scm, SCM_BOOL_T)) { struct value_print_options opts = *options; gdb_assert (replacement != NULL); opts.addressprint = 0; common_val_print (replacement, stream, recurse, &opts, language); result = STRING_REPR_OK; } else if (scm_is_string (str_scm)) { struct cleanup *cleanup; size_t length; char *string = gdbscm_scm_to_string (str_scm, &length, target_charset (gdbarch), 0 /*!strict*/, NULL); cleanup = make_cleanup (xfree, string); if (hint == HINT_STRING) { struct type *type = builtin_type (gdbarch)->builtin_char; LA_PRINT_STRING (stream, type, (gdb_byte *) string, length, NULL, 0, options); } else { /* Alas scm_to_stringn doesn't nul-terminate the string if we ask for the length. */ size_t i; for (i = 0; i < length; ++i) { if (string[i] == '\0') fputs_filtered ("\\000", stream); else fputc_filtered (string[i], stream); } } result = STRING_REPR_OK; do_cleanups (cleanup); } else if (lsscm_is_lazy_string (str_scm)) { struct value_print_options local_opts = *options; local_opts.addressprint = 0; lsscm_val_print_lazy_string (str_scm, stream, &local_opts); result = STRING_REPR_OK; } else { gdb_assert (gdbscm_is_exception (str_scm)); ppscm_print_exception_unless_memory_error (str_scm, stream); result = STRING_REPR_ERROR; } return result; }
gdb::unique_xmalloc_ptr<char> gdbscm_scm_to_host_string (SCM string, size_t *lenp, SCM *except_scmp) { return gdbscm_scm_to_string (string, lenp, host_charset (), 1, except_scmp); }