Include frame.h before termhooks.h.
[bpt/emacs.git] / src / dosfns.c
index 801df68..240f19c 100644 (file)
@@ -1,14 +1,14 @@
 /* MS-DOS specific Lisp utilities.  Coded by Manabu Higashida, 1991.
    Major changes May-July 1993 Morten Welinder (only 10% original code left)
    Copyright (C) 1991, 1993, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
-                 2005, 2006, 2007 Free Software Foundation, Inc.
+                 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
-GNU Emacs is free software; you can redistribute it and/or modify
+GNU Emacs is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,9 +16,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA.  */
+along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 
@@ -31,8 +29,8 @@ Boston, MA 02110-1301, USA.  */
 #include "lisp.h"
 #include "buffer.h"
 #include "termchar.h"
-#include "termhooks.h"
 #include "frame.h"
+#include "termhooks.h"
 #include "blockinput.h"
 #include "window.h"
 #include "dosfns.h"
@@ -422,7 +420,7 @@ msdos_stdcolor_idx (const char *name)
   int i;
 
   for (i = 0; i < sizeof (vga_colors) / sizeof (vga_colors[0]); i++)
-    if (strcasecmp (name, vga_colors[i]) == 0)
+    if (xstrcasecmp (name, vga_colors[i]) == 0)
       return i;
 
   return
@@ -538,15 +536,27 @@ If the underlying system call fails, value is nil.  */)
 void
 dos_cleanup (void)
 {
+  struct tty_display_info *tty;
+
 #ifndef HAVE_X_WINDOWS
   restore_parent_vm_title ();
 #endif
   /* Make sure the termscript file is committed, in case we are
      crashing and some vital info was written there.  */
-  if (termscript)
+  if (FRAMEP (selected_frame))
     {
-      fflush (termscript);
-      fsync (fileno (termscript));
+      struct frame *sf = XFRAME (selected_frame);
+
+      if (FRAME_LIVE_P (sf)
+         && (FRAME_MSDOS_P (sf) || FRAME_TERMCAP_P (sf)))
+       {
+         tty = CURTTY ();
+         if (tty->termscript)
+           {
+             fflush (tty->termscript);
+             fsync (fileno (tty->termscript));
+           }
+       }
     }
 }