]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fredirect_debugging_output): New defun.
authorKim F. Storm <storm@cua.dk>
Sun, 23 Nov 2003 21:29:45 +0000 (21:29 +0000)
committerKim F. Storm <storm@cua.dk>
Sun, 23 Nov 2003 21:29:45 +0000 (21:29 +0000)
(syms_of_print): Defsubr it.

src/ChangeLog
src/print.c

index c353ab7a52bd9e6d7edb2f7fad1f862e666ca1b4..fac85f28b3d51b30183e3b4b46d427f362d237f2 100644 (file)
@@ -1,8 +1,13 @@
+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.
index 5f1506392c2509897f13eb171e0eadbb11806eca..719fb8fd21acac6e300d46cf48d029e3e47d1c5b 100644 (file)
@@ -911,6 +911,39 @@ to make it write to the debugging output.  */)
   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
@@ -2164,6 +2197,7 @@ that need to be recorded in the table.  */);
   defsubr (&Sterpri);
   defsubr (&Swrite_char);
   defsubr (&Sexternal_debugging_output);
+  defsubr (&Sredirect_debugging_output);
 
   Qexternal_debugging_output = intern ("external-debugging-output");
   staticpro (&Qexternal_debugging_output);