emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r100806: Convert maybe_fatal to stand


From: Dan Nicolaescu
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r100806: Convert maybe_fatal to standard C.
Date: Mon, 12 Jul 2010 21:47:45 -0700
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100806
committer: Dan Nicolaescu <address@hidden>
branch nick: trunk
timestamp: Mon 2010-07-12 21:47:45 -0700
message:
  Convert maybe_fatal to standard C.
  * src/lisp.h (verror): Declare.
  * src/eval.c (verror): New function containing the code from ...
  (error): ... this.  Call verror.
  * src/term.c (vfatal): New function containing the code from ...
  (fatal): ... this.  Call vfatal.
  (maybe_fatal): Convert to standard C, use variable number of
  arguments.  Declare as non-return.
  (init_tty): Fix maybe_fatal call.
modified:
  src/ChangeLog
  src/eval.c
  src/lisp.h
  src/term.c
  src/xterm.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-07-12 19:56:46 +0000
+++ b/src/ChangeLog     2010-07-13 04:47:45 +0000
@@ -1,3 +1,15 @@
+2010-07-13  Dan Nicolaescu  <address@hidden>
+
+       Convert maybe_fatal to standard C.
+       * lisp.h (verror): Declare.
+       * eval.c (verror): New function containing the code from ...
+       (error): ... this.  Call verror.
+       * term.c (vfatal): New function containing the code from ...
+       (fatal): ... this.  Call vfatal.
+       (maybe_fatal): Convert to standard C, use variable number of
+       arguments.  Declare as non-return.
+       (init_tty): Fix maybe_fatal call.
+
 2010-07-12  Dan Nicolaescu  <address@hidden>
 
        * xterm.c (x_scroll_bar_set_handle, x_scroll_bar_expose)

=== modified file 'src/eval.c'
--- a/src/eval.c        2010-07-11 09:27:13 +0000
+++ b/src/eval.c        2010-07-13 04:47:45 +0000
@@ -1991,11 +1991,10 @@
   return Qnil;
 }
 
-/* dump an error message; called like printf */
 
-/* VARARGS 1 */
+/* dump an error message; called like vprintf */
 void
-error (const char *m, ...)
+verror (const char *m, va_list ap)
 {
   char buf[200];
   int size = 200;
@@ -2009,14 +2008,8 @@
 
   while (1)
     {
-      va_list ap;
       int used;
-
-      /* A va_list can't be reused if we have to go around the loop
-        again; we need to "reinitialize" it each time.  */
-      va_start(ap, m);
       used = doprnt (buffer, size, m, m + mlen, ap);
-      va_end(ap);
       if (used < size)
        break;
       size *= 2;
@@ -2035,6 +2028,19 @@
 
   xsignal1 (Qerror, string);
 }
+
+
+/* dump an error message; called like printf */
+
+/* VARARGS 1 */
+void
+error (const char *m, ...)
+{
+  va_list ap;
+  va_start (ap, m);
+  verror (m, ap);
+  va_end (ap);
+}
 
 DEFUN ("commandp", Fcommandp, Scommandp, 1, 2, 0,
        doc: /* Non-nil if FUNCTION makes provisions for interactive calling.

=== modified file 'src/lisp.h'
--- a/src/lisp.h        2010-07-11 18:34:43 +0000
+++ b/src/lisp.h        2010-07-13 04:47:45 +0000
@@ -2908,6 +2908,7 @@
 extern void record_unwind_protect (Lisp_Object (*) (Lisp_Object), Lisp_Object);
 extern Lisp_Object unbind_to (int, Lisp_Object);
 extern void error (const char *, ...) NO_RETURN;
+extern void verror (const char *, va_list) NO_RETURN;
 extern void do_autoload (Lisp_Object, Lisp_Object);
 extern Lisp_Object un_autoload (Lisp_Object);
 EXFUN (Ffetch_bytecode, 1);

=== modified file 'src/term.c'
--- a/src/term.c        2010-07-08 21:25:08 +0000
+++ b/src/term.c        2010-07-13 04:47:45 +0000
@@ -101,6 +101,10 @@
 static void set_tty_hooks (struct terminal *terminal);
 static void dissociate_if_controlling_tty (int fd);
 static void delete_tty (struct terminal *);
+static void maybe_fatal (int must_succeed, struct terminal *terminal,
+                        const char *str1, const char *str2, ...) NO_RETURN;
+static void vfatal (const char *str, va_list ap) NO_RETURN;
+
 
 #define OUTPUT(tty, a)                                          \
   emacs_tputs ((tty), a,                                        \
@@ -3375,8 +3379,6 @@
 #endif /* !DOS_NT */
 }
 
-static void maybe_fatal();
-
 /* Create a termcap display on the tty device with the given name and
    type.
 
@@ -3748,7 +3750,7 @@
 
   if (FrameRows (tty) < 3 || FrameCols (tty) < 3)
     maybe_fatal (must_succeed, terminal,
-                 "Screen size %dx%d is too small"
+                 "Screen size %dx%d is too small",
                  "Screen size %dx%d is too small",
                  FrameCols (tty), FrameRows (tty));
 
@@ -3924,24 +3926,39 @@
   return terminal;
 }
 
+
+static void
+vfatal (const char *str, va_list ap)
+{
+  fprintf (stderr, "emacs: ");
+  vfprintf (stderr, str, ap);
+  if (!(strlen (str) > 0 && str[strlen (str) - 1] == '\n'))
+    fprintf (stderr, "\n");
+  va_end (ap);
+  fflush (stderr);
+  exit (1);
+}
+
+
 /* Auxiliary error-handling function for init_tty.
    Delete TERMINAL, then call error or fatal with str1 or str2,
    respectively, according to MUST_SUCCEED.  */
 
 static void
-maybe_fatal (must_succeed, terminal, str1, str2, arg1, arg2)
-     int must_succeed;
-     struct terminal *terminal;
-     char *str1, *str2, *arg1, *arg2;
+maybe_fatal (int must_succeed, struct terminal *terminal,
+            const char *str1, const char *str2, ...)
 {
+  va_list ap;
+  va_start (ap, str2);
   if (terminal)
     delete_tty (terminal);
 
   if (must_succeed)
-    fatal (str2, arg1, arg2);
+    vfatal (str2, ap);
   else
-    error (str1, arg1, arg2);
+    verror (str1, ap);
 
+  va_end (ap);
   abort ();
 }
 
@@ -3950,13 +3967,8 @@
 {
   va_list ap;
   va_start (ap, str);
-  fprintf (stderr, "emacs: ");
-  vfprintf (stderr, str, ap);
-  if (!(strlen (str) > 0 && str[strlen (str) - 1] == '\n'))
-    fprintf (stderr, "\n");
+  vfatal (str, ap);
   va_end (ap);
-  fflush (stderr);
-  exit (1);
 }
 
 

=== modified file 'src/xterm.c'
--- a/src/xterm.c       2010-07-12 19:56:46 +0000
+++ b/src/xterm.c       2010-07-13 04:47:45 +0000
@@ -10183,11 +10183,9 @@
 
   xsettings_initialize (dpyinfo);
 
-#ifdef subprocesses
   /* This is only needed for distinguishing keyboard and process input.  */
   if (connection != 0)
     add_keyboard_wait_descriptor (connection);
-#endif
 
 #ifdef F_SETOWN
   fcntl (connection, F_SETOWN, getpid ());


reply via email to

[Prev in Thread] Current Thread [Next in Thread]