+2003-11-23 Kim F. Storm <storm@cua.dk>
+
+ * print.c (Fredirect_debugging_output): New defun.
+ (syms_of_print): Defsubr it.
+
2003-11-22 Luc Teirlinck <teirllm@auburn.edu>
* fns.c (Fset_char_table_parent): Doc fix.
-2003-11-23 Kim F. Storm <storm@cua.dk>
+2003-11-22 Kim F. Storm <storm@cua.dk>
* dispnew.c (buffer_posn_from_coords): Return actual row/column
for glyph clicked on, rather than (unused) pixel positions.
return character;
}
+FILE *initial_stderr_stream = NULL;
+
+DEFUN ("redirect-debugging-output", Fredirect_debugging_output, Sredirect_debugging_output,
+ 1, 2,
+ "FDebug output file: \nP",
+ doc: /* Redirect debugging output (stderr stream) to file FILE.
+If FILE is nil, reset target to the initial stderr stream.
+Optional arg APPEND non-nil (interactively, with prefix arg) means
+append to existing target file. */)
+ (file, append)
+ Lisp_Object file, append;
+{
+ if (initial_stderr_stream != NULL)
+ fclose(stderr);
+ stderr = initial_stderr_stream;
+ initial_stderr_stream = NULL;
+
+ if (STRINGP (file))
+ {
+ file = Fexpand_file_name (file, Qnil);
+ initial_stderr_stream = stderr;
+ stderr = fopen(SDATA (file), NILP (append) ? "w" : "a");
+ if (stderr == NULL)
+ {
+ stderr = initial_stderr_stream;
+ initial_stderr_stream = NULL;
+ report_file_error ("Cannot open debugging output stream",
+ Fcons (file, Qnil));
+ }
+ }
+ return Qnil;
+}
+
/* This is the interface for debugging printing. */
void
defsubr (&Sterpri);
defsubr (&Swrite_char);
defsubr (&Sexternal_debugging_output);
+ defsubr (&Sredirect_debugging_output);
Qexternal_debugging_output = intern ("external-debugging-output");
staticpro (&Qexternal_debugging_output);