char *kludge;
va_list args;
int bufsize, retval, tries = 3;
- /* write_fmt_str is used for small prints usually... */
- char buffer[64+1];
+ /* write_fmt_str is used for small prints usually... */
+ char buffer[64+1];
int speccount = specpdl_depth();
va_start(args, fmt);
kludge = buffer;
SXE_VSNPRINT_VA(retval,buffer,kludge,bufsize,speccount,tries,Bufbyte,fmt,args);
-
+
if (retval == 0)
/* nothing to write */
return retval;
- use_fprintf = ! initialized ||fatal_error_in_progress ||
+ use_fprintf = ! initialized ||fatal_error_in_progress ||
inhibit_non_essential_printing_operations;
if (retval > 0) {
int retval;
va_list args;
va_start(args, fmt);
- retval = std_handle_out_va(stdout,
- (initialized && !fatal_error_in_progress
- ? GETTEXT(fmt) : fmt),
+ retval = std_handle_out_va(stdout,
+ (initialized && !fatal_error_in_progress
+ ? GETTEXT(fmt) : fmt),
args);
va_end(args);
return retval;
va_start(args, fmt);
stderr_out("\nSXEmacs: ");
- std_handle_out_va(stderr,
- (initialized && !fatal_error_in_progress
- ? GETTEXT(fmt) : fmt),
+ std_handle_out_va(stderr,
+ (initialized && !fatal_error_in_progress
+ ? GETTEXT(fmt) : fmt),
args);
stderr_out("\n");
Lisp_Object coding_system, int must_flush)
{
Extcount extlen;
- const Extbyte *extptr;
+ const Extbyte *extptr = NULL;
/* #### yuck! sometimes this function is called with string data,
and the following call may gc. */
Bufbyte *puta = (Bufbyte *) alloca(len);
memcpy(puta, str + offset, len);
- if (initialized && !inhibit_non_essential_printing_operations)
+ if (initialized && !inhibit_non_essential_printing_operations) {
TO_EXTERNAL_FORMAT(DATA, (puta, len),
ALLOCA, (extptr, extlen),
coding_system);
- else {
+ }
+ if( extptr == NULL ) {
extptr = (Extbyte *) puta;
extlen = (Bytecount) len;
}
}
-
+
if (stream) {
std_handle_out_external(stream, Qnil, extptr, extlen,
stream == stdout
Lisp_Object Vfloat_output_format;
+void float_to_string(char *buf, fpfloat data, int maxlen);
+
/*
* This buffer should be at least as large as the max string size of the
* largest float, printed in the biggest notation. This is undoubtedly
* I assume that IEEE-754 format numbers can take 329 bytes for the worst
* case of -1e307 in 20d float_output_format. What is one to do (short of
* re-writing _doprnt to be more sane)?
- * -wsr
+ * -wsr
*/
void float_to_string(char *buf, fpfloat data, int maxlen)
{
len = snprintf(buf, sizeof(buf), "%s object %p", badness_string, val);
break;
default:
- len = snprintf(buf, sizeof(buf), "%s unknown badness %d",
+ len = snprintf(buf, sizeof(buf), "%s unknown badness %d",
badness_string, badness);
break;
}
output. */
#endif
- /* Try out custom printing */
- if (UNLIKELY(!(bool)inhibit_autoloads && !(bool)nodumpfile) &&
+ /* Try out custom printing */
+ if (UNLIKELY(!(bool)inhibit_autoloads && !(bool)nodumpfile) &&
!EQ(Qnil, Vcustom_object_printer) &&
- !EQ(Qnil, apply1(Vcustom_object_printer,
- Fcons(obj, Fcons(printcharfun, Qnil))))) {
- return;
+ !EQ(Qnil, apply1(Vcustom_object_printer,
+ Fcons(obj, Fcons(printcharfun, Qnil))))) {
+ return;
}
/* Detect circularities and truncate them.
Bufbyte str[MAX_EMCHAR_LEN];
Bytecount len;
int extlen;
- const Extbyte *extptr;
+ const Extbyte *extptr = NULL;
CHECK_CHAR_COERCE_INT(character);
len = set_charptr_emchar(str, XCHAR(character));
TO_EXTERNAL_FORMAT(DATA, (str, len),
ALLOCA, (extptr, extlen), Qterminal);
- memcpy(alternate_do_string + alternate_do_pointer, extptr, extlen);
- alternate_do_pointer += extlen;
- alternate_do_string[alternate_do_pointer] = 0;
+ if ( extptr != NULL ) {
+ memcpy(alternate_do_string + alternate_do_pointer, extptr, extlen);
+ alternate_do_pointer += extlen;
+ alternate_do_string[alternate_do_pointer] = 0;
+ } else {
+ /* Better bad transcoding than nothing I guess... */
+ memcpy(alternate_do_string + alternate_do_pointer, str, len);
+ alternate_do_pointer += len;
+ alternate_do_string[alternate_do_pointer] = 0;
+ }
return character;
}