2001-10-04 Frank Ch. Eigler <fche@redhat.com>
[binutils-gdb.git] / gdb / mac-xdep.c
index e291262fbbbe61ad318649ca92efd0936c924fe6..f6bf35a9f0818a5b455690cc57f0fca531183102 100644 (file)
-/* Top level support for Mac interface to GDB, the GNU debugger.
-   Copyright 1994 Free Software Foundation, Inc.
-   Contributed by Cygnus Support.  Written by Stan Shebs for Cygnus.
-
-This file is part of GDB.
-
-This program 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 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-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 this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#include "defs.h"
-
-#include "readline.h"
-#include "history.h"
-
-#include <Values.h>
-#include <Types.h>
-#include <Resources.h>
-#include <QuickDraw.h>
-#include <Fonts.h>
-#include <Events.h>
-#include <Windows.h>
-#include <Menus.h>
-#include <TextEdit.h>
-#include <Dialogs.h>
-#include <Desk.h>
-#include <ToolUtils.h>
-#include <Memory.h>
-#include <SegLoad.h>
-#include <Files.h>
-#include <Folders.h>
-#include <OSUtils.h>
-#include <OSEvents.h>
-#include <DiskInit.h>
-#include <Packages.h>
-#include <Traps.h>
-#include <Lists.h>
-#include <GestaltEqu.h>
-#include <PPCToolbox.h>
-#include <AppleEvents.h>
-#include <StandardFile.h>
-#include <Sound.h>
-
-#ifdef MPW
-#define QD(whatever) (qd.##whatever)
-#define QDPat(whatever) (&(qd.##whatever))
-#endif
-
-#ifdef THINK_C
-#define QD(whatever) (whatever)
-#endif
-
-#define p2c(pstr,cbuf)  \
-  strncpy(cbuf, ((char *) (pstr) + 1), pstr[0]);  \
-  cbuf[pstr[0]] = '\0';
-
-#define pascalify(STR) \
-  sprintf(tmpbuf, " %s", STR);  \
-  tmpbuf[0] = strlen(STR);
-
-#include "gdbcmd.h"
-#include "call-cmds.h"
-#include "symtab.h"
-#include "inferior.h"
-#include "signals.h"
-#include "target.h"
-#include "breakpoint.h"
-#include "gdbtypes.h"
-#include "expression.h"
-#include "language.h"
-
-#include "mac-defs.h"
-
-int mac_app;
-
-int useWNE;
-
-int hasColorQD;
-
-int inbackground;
-
-Rect dragrect = { -32000, -32000, 32000, 32000 };
-Rect sizerect;
-
-int sbarwid = 15;
-
-/* Globals for the console window. */
-
-WindowPtr console_window;
-
-ControlHandle console_v_scrollbar;
-
-Rect console_v_scroll_rect;
-
-TEHandle console_text;
-
-Rect console_text_rect;
-
-/* This will go away eventually. */
-gdb_has_a_terminal () { return 1; }
-
-
-mac_init ()
-{
-  SysEnvRec se;
-  int eventloopdone = 0;
-  Boolean gotevent;
-  Point mouse;
-  EventRecord event;
-  WindowPtr win;
-  RgnHandle cursorRgn;
-  int i;
-  Handle menubar;
-  MenuHandle menu;
-
-  /* Do the standard Mac environment setup. */
-  InitGraf (&QD (thePort));
-  InitFonts ();
-  FlushEvents (everyEvent, 0);
-  InitWindows ();
-  InitMenus ();
-  TEInit ();
-  InitDialogs (NULL);
-  InitCursor ();
-
-  /* Color Quickdraw is different from Classic QD. */
-  SysEnvirons(2, &se);
-  hasColorQD = se.hasColorQD;
-
-  sizerect.top = 50;
-  sizerect.left = 50;
-  sizerect.bottom = 1000;
-  sizerect.right  = 1000;
-#if 0
-  sizerect.bottom = screenBits.bounds.bottom - screenBits.bounds.top;
-  sizerect.right  = screenBits.bounds.right  - screenBits.bounds.left;
-#endif
-
-  /* Set up the menus. */
-  menubar = GetNewMBar (mbMain);
-  SetMenuBar (menubar);
-  /* Add the DAs etc as usual. */
-  menu = GetMHandle (mApple);
-  if (menu != nil) {
-    AddResMenu (menu, 'DRVR');
-  }
-  DrawMenuBar ();
-
-  /* Create the main window we're going to play in. */
-  if (hasColorQD)
-    console_window = GetNewCWindow (wConsole, NULL, (WindowPtr) -1L);
-  else
-    console_window = GetNewWindow (wConsole, NULL, (WindowPtr) -1L);
-
-  if (0) DebugStr("\pnear beginning");
-  SetPort (console_window);
-  console_text_rect = console_window->portRect;
-  console_text_rect.bottom -= sbarwid - 1;
-  console_text_rect.right -= sbarwid - 1;
-  console_text = TENew (&console_text_rect, &console_text_rect);
-  TESetSelect (0, 32767, console_text);
-  TEDelete (console_text);
-  TEInsert ("(gdb)", strlen("(gdb)"), console_text);
-
-  console_v_scroll_rect = console_window->portRect;
-  console_v_scroll_rect.bottom -= sbarwid - 1;
-  console_v_scroll_rect.left = console_v_scroll_rect.right - sbarwid;
-  console_v_scrollbar =
-    NewControl (console_window, &console_v_scroll_rect,
-               "\p", 1, 0, 0, 0, scrollBarProc, 0L);
-
-  ShowWindow (console_window);
-  SelectWindow (console_window);
-/*  force_update (console_window);  */
-
-  return 1;
-}
-
-mac_command_loop()
-{
-  SysEnvRec se;
-  int eventloopdone = 0;
-  Boolean gotevent;
-  Point mouse;
-  EventRecord event;
-  WindowPtr win;
-  RgnHandle cursorRgn;
-  int i;
-  Handle menubar;
-  MenuHandle menu;
-
-  /* Figure out if the WaitNextEvent Trap is available. */
-  useWNE =
-    (NGetTrapAddress (0x60, ToolTrap) != NGetTrapAddress (0x9f, ToolTrap));
-  /* Pass WNE an empty region the 1st time thru. */
-  cursorRgn = NewRgn ();
-  /* Go into the main event-handling loop. */
-  while (!eventloopdone)
-    {
-      /* Use WaitNextEvent if it is available, otherwise GetNextEvent. */
-      if (useWNE)
-       {
-         get_global_mouse (&mouse);
-         adjust_cursor (mouse, cursorRgn);
-         gotevent = WaitNextEvent (everyEvent, &event, 0L, cursorRgn);
-       }
-      else
-       {
-         SystemTask ();
-         gotevent = GetNextEvent (everyEvent, &event);
-       }
-      /* First decide if the event is for a dialog or is just any old event. */
-      if (FrontWindow () != nil && IsDialogEvent (&event))
-       {
-         short itemhit;
-         DialogPtr dialog;
-      
-         /* Handle all the modeless dialogs here. */
-         if (DialogSelect (&event, &dialog, &itemhit))
-           {
-           }
-       }
-      else if (gotevent)
-       {
-         /* Make sure we have the right cursor before handling the event. */
-         adjust_cursor (event.where, cursorRgn);
-         do_event (&event);
-       }
-    }
-}
-
-get_global_mouse (mouse)
-Point *mouse;
-{
-  EventRecord evt;
-       
-  OSEventAvail (0, &evt);
-  *mouse = evt.where;
-}
-
-adjust_cursor (mouse, region)
-Point mouse;
-RgnHandle region;
-{
-}
-
-/* Decipher an event, maybe do something with it. */
-
-do_event (evt)
-EventRecord *evt;
-{
-  short part, err, rslt = 0;
-  WindowPtr win;
-  Boolean hit;
-  char key;
-  Point pnt;
-
-  switch (evt->what)
-    {
-    case mouseDown:
-      /* See if the click happened in a special part of the screen. */
-      part = FindWindow (evt->where, &win);
-      switch (part)
-       {
-       case inMenuBar:
-         adjust_menus ();
-         do_menu_command (MenuSelect (evt->where));
-         break;
-       case inSysWindow:
-         SystemClick (evt, win);
-         break;
-       case inContent:
-         if (win != FrontWindow ())
-           {
-             /* Bring the clicked-on window to the front. */
-             SelectWindow (win);
-             /* Fix the menu to match the new front window. */
-             adjust_menus ();
-             /* We always want to discard the event now, since clicks in a
-                windows are often irreversible actions. */
-           } else
-             /* Mouse clicks in the front window do something useful. */
-             do_mouse_down (win, evt);
-         break;
-       case inDrag:
-         /* Standard drag behavior, no tricks necessary. */
-         DragWindow (win, evt->where, &dragrect);
-         break;
-       case inGrow:
-         grow_window (win, evt->where);
-         break;
-       case inZoomIn:
-       case inZoomOut:
-         zoom_window (win, evt->where, part);
-         break;
-       case inGoAway:
-         close_window (win);
-         break;
-       }
-      break;
-    case keyDown:
-    case autoKey:
-      key = evt->message & charCodeMask;
-      /* Check for menukey equivalents. */
-      if (evt->modifiers & cmdKey)
-       {
-         if (evt->what == keyDown)
-           {
-             adjust_menus ();
-             do_menu_command (MenuKey (key));
-           }
-       }
-      else
-       {
-         if (evt->what == keyDown)
-           {
-             /* Random keypress, interpret it. */
-             do_keyboard_command (key);
-           }
-       }
-      break;
-    case activateEvt:
-      activate_window ((WindowPtr) evt->message, evt->modifiers & activeFlag);
-      break;
-    case updateEvt:
-      update_window ((WindowPtr) evt->message);
-      break;
-    case diskEvt:
-      /* Call DIBadMount in response to a diskEvt, so that the user can format
-        a floppy. (from DTS Sample) */
-      if (HiWord (evt->message) != noErr)
-       {
-         SetPt (&pnt, 50, 50);
-         err = DIBadMount (pnt, evt->message);
-       }
-      break;
-    case app4Evt:
-      /* Grab only a single byte. */
-      switch ((evt->message >> 24) & 0xFF)
-       {
-       case 0xfa:
-         break;
-       case 1:
-         inbackground = !(evt->message & 1);
-         activate_window (FrontWindow (), !inbackground);
-         break;
-       }
-      break;
-    case kHighLevelEvent:
-      AEProcessAppleEvent (evt);
-      break;
-    case nullEvent:
-      rslt = 1;
-      break;
-    default:
-      break;
-    }
-  return rslt;
-}
-
-grow_window (win, where)
-WindowPtr win;
-Point where;
-{
-  long winsize;
-  int h, v;
-  GrafPtr oldport;
-
-  winsize = GrowWindow (win, where, &sizerect);
-  if (winsize != 0)
-    {
-      GetPort (&oldport);
-      SetPort (win);
-      EraseRect (&win->portRect);
-      h = LoWord (winsize);
-      v = HiWord (winsize);
-      SizeWindow (win, h, v, 1);
-      if (win == console_window)
-       {
-         MoveControl(console_v_scrollbar, h - sbarwid, 0);
-         SizeControl(console_v_scrollbar, sbarwid + 1, v - sbarwid + 1);
-       }
-      InvalRect (&win->portRect);
-      SetPort (oldport);
-    }
-}
-
-zoom_window (win, where, part)
-WindowPtr win;
-Point where;
-short part;
-{
-}
-
-close_window (win)
-WindowPtr win;
-{
-}
-
-do_mouse_down (win, event)
-WindowPtr win;
-EventRecord *event;
-{
-  short part;
-  Point mouse;
-  ControlHandle control;
-
-  if (1 /*is_app_window(win)*/)
-    {
-      SetPort (win);
-      mouse = event->where;
-      GlobalToLocal (&mouse);
-      part = FindControl(mouse, win, &control);
-      if (control == console_v_scrollbar)
-       {
-         SysBeep(20);
-       }
-      else
-       {
-         TEClick (mouse, 0, console_text);
-       }
-    }
-}
-
-activate_window (win, activate)
-WindowPtr win;
-int activate;
-{
-  if (win == nil) return;
-  /* It's convenient to make the activated window also be the
-     current GrafPort. */
-  if (activate)
-    SetPort(win);
-  /* Activate the console window's scrollbar. */
-  if (win == console_window)
-    HiliteControl (console_v_scrollbar, (activate ? 0 : 255));
-}
-
-update_window (win)
-WindowPtr win;
-{
-  int controls = 1, growbox = 0;
-  GrafPtr oldport;
-
-  /* Set the updating window to be the current grafport. */
-  GetPort (&oldport);
-  SetPort (win);
-/*  recalc_depths();  */
-  BeginUpdate (win);
-  if (win == console_window)
-    {
-      draw_console ();
-      controls = 1;
-      growbox = 1;
-    }
-  if (controls)
-    UpdateControls (win, win->visRgn);
-  if (growbox)
-    DrawGrowIcon (win);
-  EndUpdate (win);
-  SetPort (oldport);
-}
-
-adjust_menus ()
-{
-}
-
-do_menu_command (which)
-long which;
-{
-  short menuid, menuitem;
-  short itemHit;
-  Str255 daname;
-  short daRefNum;
-  Boolean handledbyda;
-  WindowPtr win;
-  short ditem;
-  int i;
-
-  menuid = HiWord (which);
-  menuitem = LoWord (which);
-  switch (menuid)
-    {
-    case mApple:
-      switch (menuitem)
-       {
-       case miAbout:
-/*       Alert(aAbout, nil); */
-         break;
-       default:
-         GetItem (GetMHandle (mApple), menuitem, daname);
-         daRefNum = OpenDeskAcc (daname);
-       }
-      break;
-    case mFile:
-      switch (menuitem)
-       {
-       case miFileQuit:
-         ExitToShell ();
-         break;
-       }
-      break;
-    case mEdit:
-      /* handledbyda = SystemEdit(menuitem-1); */
-      switch (menuitem)
-       {
-       case miEditCut:
-         break;
-       case miEditCopy:
-         break;
-       case miEditPaste:
-         break;
-       case miEditClear:
-         break;
-       }
-      break;
-    }
-  HiliteMenu (0);
-}
-
-char commandbuf[1000];
-
-do_keyboard_command (key)
-char key;
-{
-  int startpos, endpos, i;
-  char *last_newline;
-  char buf[10], *text_str, *command;
-  CharsHandle text;
-
-  if (key == '\015' || key == '\003')
-    {
-      /* (should) Interpret the line as a command. */
-      text = TEGetText (console_text);
-      HLock ((Handle) text);
-      startpos = (*console_text)->selStart;
-      endpos = (*console_text)->selEnd;
-      if (startpos != endpos)
-       {
-         strncpy (commandbuf + 1, *text + startpos, endpos - startpos);
-         commandbuf[1 + endpos - startpos] = 0;
-         command = commandbuf + 1;
-       }
-      else
-       {
-         DebugStr("\plooking for command");
-         last_newline = strrchr(*text+startpos, '\n');
-         if (last_newline)
-           {
-             strncpy (commandbuf + 1,
-                      last_newline,
-                      last_newline - (*text+startpos));
-             commandbuf[1 + last_newline - (*text+startpos)] = 0;
-             command = commandbuf + 1;
-           }
-         else
-           {
-             command = "help";
-           }
-       }
-      HUnlock ((Handle) text);
-      commandbuf[0] = strlen(command);
-      DebugStr(commandbuf);
-
-      /* Insert a newline and redraw before doing the command. */
-      buf[0] = '\015';
-      TEInsert (buf, 1, console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-
-      execute_command (commandbuf, 0);
-      bpstat_do_actions (&stop_bpstat);
-    }
-  else if (0 /* editing chars... */)
-    {
-    }
-  else
-    {
-      /* A self-inserting character. */
-      buf[0] = key;
-      TEInsert (buf, 1, console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-    }
-}
-
-draw_console ()
-{
-  GrafPtr oldport;
-
-  GetPort (&oldport);
-  SetPort (console_window);
-  TEUpdate (&(console_window->portRect), console_text);
-  SetPort (oldport);
-/*     adjust_help_scrollbar();  */
-}
-
-/* Cause an update of a window's entire contents. */
-
-force_update (win)
-WindowPtr win;
-{
-  GrafPtr oldport;
-
-  if (win == nil) return;
-  GetPort (&oldport);
-  SetPort (win);
-  EraseRect (&win->portRect);
-  InvalRect (&win->portRect);
-  SetPort (oldport);
-}
-
-adjust_console_scrollbars ()
-{
-  int lines, newmax, value;
-
-  lines = (*console_text)->nLines;
-  newmax = lines - (((*console_text)->viewRect.bottom - (*console_text)->viewRect.top)
-                   / (*console_text)->lineHeight);
-  if (newmax < 0) newmax = 0;
-  SetCtlMax (console_v_scrollbar, newmax);
-  value = ((*console_text)->viewRect.top - (*console_text)->destRect.top)
-    / (*console_text)->lineHeight;
-  SetCtlValue (console_v_scrollbar, value);
-}
-
-/* Readline substitute. */
-
-char *
-readline (char *prrompt)
-{
-  return gdb_readline (prrompt);
-}
-
-char *rl_completer_word_break_characters;
-
-char *rl_completer_quote_characters;
-
-int (*rl_completion_entry_function) ();
-
-int rl_point;
-
-char *rl_line_buffer;
-
-char *rl_readline_name;
-
-/* History substitute. */
-
-void
-add_history (char *buf)
-{
-}
-
-void
-stifle_history (int n)
-{
-}
-
-int
-unstifle_history ()
-{
-}
-
-int
-read_history (char *name)
-{
-}
-
-int
-write_history (char *name)
-{
-}
-
-int
-history_expand (char *x, char **y)
-{
-}
-
-extern HIST_ENTRY *
-history_get (int xxx)
-{
-  return NULL;
-}
-
-int history_base;
-
-char *
-filename_completion_function (char *text, char *name)
-{
-  return "?";
-}
-
-char *
-tilde_expand (char *str)
-{
-  return strsave (str);
-}
-
-/* Modified versions of standard I/O. */
-
-#include <stdarg.h>
-
-#undef fprintf
-
-int
-hacked_fprintf (FILE *fp, const char *fmt, ...)
-{
-  int ret;
-  va_list ap;
-
-  va_start (ap, fmt);
-  if (mac_app && (fp == stdout || fp == stderr))
-    {
-      char buf[1000];
-
-      ret = vsprintf(buf, fmt, ap);
-      TEInsert (buf, strlen(buf), console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-    }
-  else
-    ret = vfprintf (fp, fmt, ap);
-  va_end (ap);
-  return ret;
-}
-
-#undef printf
-
-int
-hacked_printf (const char *fmt, ...)
-{
-  int ret;
-  va_list ap;
-
-  va_start (ap, fmt);
-  if (mac_app)
-    {
-      ret = hacked_vfprintf(stdout, fmt, ap);
-    }
-  else
-    ret = vfprintf (stdout, fmt, ap);
-  va_end (ap);
-  return ret;
-}
-
-#undef vfprintf
-
-int 
-hacked_vfprintf (FILE *fp, const char *format, va_list args)
-{
-  if (mac_app && (fp == stdout || fp == stderr))
-    {
-      char buf[1000];
-      int ret;
-
-      ret = vsprintf(buf, format, args);
-      TEInsert (buf, strlen(buf), console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-      return ret;
-    }
-  else
-    return vfprintf (fp, format, args);
-}
-
-#undef fputs
-
-hacked_fputs (const char *s, FILE *fp)
-{
-  if (mac_app && (fp == stdout || fp == stderr))
-    {
-      TEInsert (s, strlen(s), console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-      return 0;
-    }
-  else
-    return fputs (s, fp);
-}
-
-#undef fputc
-
-hacked_fputc (const char c, FILE *fp)
-{
-  if (mac_app && (fp == stdout || fp == stderr))
-    {
-      char buf[2];
-
-      buf[0] = c;
-      TEInsert (buf, 1, console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-      return 0;
-    }
-  else
-    return fputc (c, fp);
-}
-
-#undef putc
-
-hacked_putc (const char c, FILE *fp)
-{
-  if (mac_app && (fp == stdout || fp == stderr))
-    {
-      char buf[2];
-
-      buf[0] = c;
-      TEInsert (buf, 1, console_text);
-      TESetSelect (100000, 100000, console_text);
-      draw_console ();
-    }
-  else
-    return fputc (c, fp);
-}
-
-#undef fflush
-
-hacked_fflush (FILE *fp)
-{
-  if (mac_app && (fp == stdout || fp == stderr))
-    return 0;
-  return fflush (fp);
-}
-
+/* OBSOLETE /* Top level support for Mac interface to GDB, the GNU debugger. */
+/* OBSOLETE    Copyright 1994, 1995, 1998, 2000, 2001 Free Software Foundation, Inc. */
+/* OBSOLETE    Contributed by Cygnus Support.  Written by Stan Shebs. */
+/* OBSOLETE  */
+/* OBSOLETE    This file is part of GDB. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is free software; you can redistribute it and/or modify */
+/* OBSOLETE    it under the terms of the GNU General Public License as published by */
+/* OBSOLETE    the Free Software Foundation; either version 2 of the License, or */
+/* OBSOLETE    (at your option) any later version. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is distributed in the hope that it will be useful, */
+/* OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/* OBSOLETE    GNU General Public License for more details. */
+/* OBSOLETE  */
+/* OBSOLETE    You should have received a copy of the GNU General Public License */
+/* OBSOLETE    along with this program; if not, write to the Free Software */
+/* OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330, */
+/* OBSOLETE    Boston, MA 02111-1307, USA.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #include "defs.h" */
+/* OBSOLETE  */
+/* OBSOLETE #include <readline/readline.h> */
+/* OBSOLETE #include <readline/history.h> */
+/* OBSOLETE  */
+/* OBSOLETE #include <Types.h> */
+/* OBSOLETE #include <Resources.h> */
+/* OBSOLETE #include <QuickDraw.h> */
+/* OBSOLETE #include <Fonts.h> */
+/* OBSOLETE #include <Events.h> */
+/* OBSOLETE #include <Windows.h> */
+/* OBSOLETE #include <Menus.h> */
+/* OBSOLETE #include <TextEdit.h> */
+/* OBSOLETE #include <Dialogs.h> */
+/* OBSOLETE #include <Desk.h> */
+/* OBSOLETE #include <ToolUtils.h> */
+/* OBSOLETE #include <Memory.h> */
+/* OBSOLETE #include <SegLoad.h> */
+/* OBSOLETE #include <Files.h> */
+/* OBSOLETE #include <Folders.h> */
+/* OBSOLETE #include <OSUtils.h> */
+/* OBSOLETE #include <OSEvents.h> */
+/* OBSOLETE #include <DiskInit.h> */
+/* OBSOLETE #include <Packages.h> */
+/* OBSOLETE #include <Traps.h> */
+/* OBSOLETE #include <Lists.h> */
+/* OBSOLETE #include <Gestalt.h> */
+/* OBSOLETE #include <PPCToolbox.h> */
+/* OBSOLETE #include <AppleEvents.h> */
+/* OBSOLETE #include <StandardFile.h> */
+/* OBSOLETE #include <Sound.h> */
+/* OBSOLETE  */
+/* OBSOLETE #ifdef MPW */
+/* OBSOLETE #define QD(whatever) (qd.##whatever) */
+/* OBSOLETE #define QDPat(whatever) (&(qd.##whatever)) */
+/* OBSOLETE #endif /* MPW */ */
+/* OBSOLETE  */
+/* OBSOLETE #ifdef THINK_C */
+/* OBSOLETE #define QD(whatever) (whatever) */
+/* OBSOLETE #endif */
+/* OBSOLETE  */
+/* OBSOLETE #define p2c(pstr,cbuf)  \ */
+/* OBSOLETE   strncpy(cbuf, ((char *) (pstr) + 1), pstr[0]);  \ */
+/* OBSOLETE   cbuf[pstr[0]] = '\0'; */
+/* OBSOLETE  */
+/* OBSOLETE #define pascalify(STR) \ */
+/* OBSOLETE   sprintf(tmpbuf, " %s", STR);  \ */
+/* OBSOLETE   tmpbuf[0] = strlen(STR); */
+/* OBSOLETE  */
+/* OBSOLETE #include "gdbcmd.h" */
+/* OBSOLETE #include "call-cmds.h" */
+/* OBSOLETE #include "symtab.h" */
+/* OBSOLETE #include "inferior.h" */
+/* OBSOLETE #include <signal.h> */
+/* OBSOLETE #include "target.h" */
+/* OBSOLETE #include "breakpoint.h" */
+/* OBSOLETE #include "gdbtypes.h" */
+/* OBSOLETE #include "expression.h" */
+/* OBSOLETE #include "language.h" */
+/* OBSOLETE  */
+/* OBSOLETE #include "mac-defs.h" */
+/* OBSOLETE  */
+/* OBSOLETE int debug_openp = 0; */
+/* OBSOLETE  */
+/* OBSOLETE /* This is true if we are running as a standalone application.  */ */
+/* OBSOLETE  */
+/* OBSOLETE int mac_app; */
+/* OBSOLETE  */
+/* OBSOLETE /* This is true if we are using WaitNextEvent.  */ */
+/* OBSOLETE  */
+/* OBSOLETE int use_wne; */
+/* OBSOLETE  */
+/* OBSOLETE /* This is true if we have Color Quickdraw.  */ */
+/* OBSOLETE  */
+/* OBSOLETE int has_color_qd; */
+/* OBSOLETE  */
+/* OBSOLETE /* This is true if we are using Color Quickdraw. */ */
+/* OBSOLETE  */
+/* OBSOLETE int use_color_qd; */
+/* OBSOLETE  */
+/* OBSOLETE int inbackground; */
+/* OBSOLETE  */
+/* OBSOLETE Rect dragrect = */
+/* OBSOLETE {-32000, -32000, 32000, 32000}; */
+/* OBSOLETE Rect sizerect; */
+/* OBSOLETE  */
+/* OBSOLETE int sbarwid = 15; */
+/* OBSOLETE  */
+/* OBSOLETE /* Globals for the console window. */ */
+/* OBSOLETE  */
+/* OBSOLETE WindowPtr console_window; */
+/* OBSOLETE  */
+/* OBSOLETE ControlHandle console_v_scrollbar; */
+/* OBSOLETE  */
+/* OBSOLETE Rect console_v_scroll_rect; */
+/* OBSOLETE  */
+/* OBSOLETE TEHandle console_text; */
+/* OBSOLETE  */
+/* OBSOLETE Rect console_text_rect; */
+/* OBSOLETE  */
+/* OBSOLETE /* This will go away eventually. */ */
+/* OBSOLETE gdb_has_a_terminal (void) */
+/* OBSOLETE { */
+/* OBSOLETE   return 1; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE mac_init (void) */
+/* OBSOLETE { */
+/* OBSOLETE   SysEnvRec se; */
+/* OBSOLETE   int eventloopdone = 0; */
+/* OBSOLETE   char *str; */
+/* OBSOLETE   Boolean gotevent; */
+/* OBSOLETE   Point mouse; */
+/* OBSOLETE   EventRecord event; */
+/* OBSOLETE   WindowPtr win; */
+/* OBSOLETE   RgnHandle cursorRgn; */
+/* OBSOLETE   int i; */
+/* OBSOLETE   Handle menubar; */
+/* OBSOLETE   MenuHandle menu; */
+/* OBSOLETE   Handle siow_resource; */
+/* OBSOLETE  */
+/* OBSOLETE   mac_app = 0; */
+/* OBSOLETE  */
+/* OBSOLETE   str = getenv ("DEBUG_GDB"); */
+/* OBSOLETE   if (str != NULL && str[0] != '\0') */
+/* OBSOLETE     { */
+/* OBSOLETE       if (strcmp (str, "openp") == 0) */
+/* OBSOLETE    debug_openp = 1; */
+/* OBSOLETE     } */
+/* OBSOLETE  */
+/* OBSOLETE   /* Don't do anything if we`re running under MPW. */ */
+/* OBSOLETE   if (!StandAlone) */
+/* OBSOLETE     return; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Don't do anything if we're using SIOW. */ */
+/* OBSOLETE   /* This test requires that the siow 0 resource, as defined in */
+/* OBSOLETE      {RIncludes}siow.r, not be messed with.  If it is, then the */
+/* OBSOLETE      standard Mac setup below will step on SIOW's Mac setup and */
+/* OBSOLETE      most likely crash the machine. */ */
+/* OBSOLETE   siow_resource = GetResource ('siow', 0); */
+/* OBSOLETE   if (siow_resource != nil) */
+/* OBSOLETE     return; */
+/* OBSOLETE  */
+/* OBSOLETE   mac_app = 1; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Do the standard Mac environment setup. */ */
+/* OBSOLETE   InitGraf (&QD (thePort)); */
+/* OBSOLETE   InitFonts (); */
+/* OBSOLETE   FlushEvents (everyEvent, 0); */
+/* OBSOLETE   InitWindows (); */
+/* OBSOLETE   InitMenus (); */
+/* OBSOLETE   TEInit (); */
+/* OBSOLETE   InitDialogs (NULL); */
+/* OBSOLETE   InitCursor (); */
+/* OBSOLETE  */
+/* OBSOLETE   /* Color Quickdraw is different from Classic QD. */ */
+/* OBSOLETE   SysEnvirons (2, &se); */
+/* OBSOLETE   has_color_qd = se.hasColorQD; */
+/* OBSOLETE   /* Use it if we got it. */ */
+/* OBSOLETE   use_color_qd = has_color_qd; */
+/* OBSOLETE  */
+/* OBSOLETE   sizerect.top = 50; */
+/* OBSOLETE   sizerect.left = 50; */
+/* OBSOLETE   sizerect.bottom = 1000; */
+/* OBSOLETE   sizerect.right = 1000; */
+/* OBSOLETE #if 0 */
+/* OBSOLETE   sizerect.bottom = screenBits.bounds.bottom - screenBits.bounds.top; */
+/* OBSOLETE   sizerect.right = screenBits.bounds.right - screenBits.bounds.left; */
+/* OBSOLETE #endif */
+/* OBSOLETE  */
+/* OBSOLETE   /* Set up the menus. */ */
+/* OBSOLETE   menubar = GetNewMBar (mbMain); */
+/* OBSOLETE   SetMenuBar (menubar); */
+/* OBSOLETE   /* Add the DAs etc as usual. */ */
+/* OBSOLETE   menu = GetMHandle (mApple); */
+/* OBSOLETE   if (menu != nil) */
+/* OBSOLETE     { */
+/* OBSOLETE       AddResMenu (menu, 'DRVR'); */
+/* OBSOLETE     } */
+/* OBSOLETE   DrawMenuBar (); */
+/* OBSOLETE  */
+/* OBSOLETE   new_console_window (); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE new_console_window (void) */
+/* OBSOLETE { */
+/* OBSOLETE   /* Create the main window we're going to play in. */ */
+/* OBSOLETE   if (has_color_qd) */
+/* OBSOLETE     console_window = GetNewCWindow (wConsole, NULL, (WindowPtr) - 1L); */
+/* OBSOLETE   else */
+/* OBSOLETE     console_window = GetNewWindow (wConsole, NULL, (WindowPtr) - 1L); */
+/* OBSOLETE  */
+/* OBSOLETE   SetPort (console_window); */
+/* OBSOLETE   console_text_rect = console_window->portRect; */
+/* OBSOLETE   /* Leave 8 pixels of blank space, for aesthetic reasons and to */
+/* OBSOLETE      make it easier to select from the beginning of a line. */ */
+/* OBSOLETE   console_text_rect.left += 8; */
+/* OBSOLETE   console_text_rect.bottom -= sbarwid - 1; */
+/* OBSOLETE   console_text_rect.right -= sbarwid - 1; */
+/* OBSOLETE   console_text = TENew (&console_text_rect, &console_text_rect); */
+/* OBSOLETE   TESetSelect (0, 40000, console_text); */
+/* OBSOLETE   TEDelete (console_text); */
+/* OBSOLETE   TEAutoView (1, console_text); */
+/* OBSOLETE  */
+/* OBSOLETE   console_v_scroll_rect = console_window->portRect; */
+/* OBSOLETE   console_v_scroll_rect.bottom -= sbarwid - 1; */
+/* OBSOLETE   console_v_scroll_rect.left = console_v_scroll_rect.right - sbarwid; */
+/* OBSOLETE   console_v_scrollbar = */
+/* OBSOLETE     NewControl (console_window, &console_v_scroll_rect, */
+/* OBSOLETE            "\p", 1, 0, 0, 0, scrollBarProc, 0L); */
+/* OBSOLETE  */
+/* OBSOLETE   ShowWindow (console_window); */
+/* OBSOLETE   SelectWindow (console_window); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE mac_command_loop (void) */
+/* OBSOLETE { */
+/* OBSOLETE   SysEnvRec se; */
+/* OBSOLETE   int eventloopdone = 0; */
+/* OBSOLETE   Boolean gotevent; */
+/* OBSOLETE   Point mouse; */
+/* OBSOLETE   EventRecord event; */
+/* OBSOLETE   WindowPtr win; */
+/* OBSOLETE   RgnHandle cursorRgn; */
+/* OBSOLETE   int i, tm; */
+/* OBSOLETE   Handle menubar; */
+/* OBSOLETE   MenuHandle menu; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Figure out if the WaitNextEvent Trap is available.  */ */
+/* OBSOLETE   use_wne = */
+/* OBSOLETE     (NGetTrapAddress (0x60, ToolTrap) != NGetTrapAddress (0x9f, ToolTrap)); */
+/* OBSOLETE   /* Pass WaitNextEvent an empty region the first time through.  */ */
+/* OBSOLETE   cursorRgn = NewRgn (); */
+/* OBSOLETE   /* Go into the main event-handling loop.  */ */
+/* OBSOLETE   while (!eventloopdone) */
+/* OBSOLETE     { */
+/* OBSOLETE       /* Use WaitNextEvent if it is available, otherwise GetNextEvent.  */ */
+/* OBSOLETE       if (use_wne) */
+/* OBSOLETE    { */
+/* OBSOLETE      get_global_mouse (&mouse); */
+/* OBSOLETE      adjust_cursor (mouse, cursorRgn); */
+/* OBSOLETE      tm = GetCaretTime (); */
+/* OBSOLETE      gotevent = WaitNextEvent (everyEvent, &event, tm, cursorRgn); */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      SystemTask (); */
+/* OBSOLETE      gotevent = GetNextEvent (everyEvent, &event); */
+/* OBSOLETE    } */
+/* OBSOLETE       /* First decide if the event is for a dialog or is just any old event. */ */
+/* OBSOLETE       if (FrontWindow () != nil && IsDialogEvent (&event)) */
+/* OBSOLETE    { */
+/* OBSOLETE      short itemhit; */
+/* OBSOLETE      DialogPtr dialog; */
+/* OBSOLETE  */
+/* OBSOLETE      /* Handle all the modeless dialogs here. */ */
+/* OBSOLETE      if (DialogSelect (&event, &dialog, &itemhit)) */
+/* OBSOLETE        { */
+/* OBSOLETE        } */
+/* OBSOLETE    } */
+/* OBSOLETE       else if (gotevent) */
+/* OBSOLETE    { */
+/* OBSOLETE      /* Make sure we have the right cursor before handling the event. */ */
+/* OBSOLETE      adjust_cursor (event.where, cursorRgn); */
+/* OBSOLETE      do_event (&event); */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      do_idle (); */
+/* OBSOLETE    } */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Collect the global coordinates of the mouse pointer.  */ */
+/* OBSOLETE  */
+/* OBSOLETE get_global_mouse (Point *mouse) */
+/* OBSOLETE { */
+/* OBSOLETE   EventRecord evt; */
+/* OBSOLETE  */
+/* OBSOLETE   OSEventAvail (0, &evt); */
+/* OBSOLETE   *mouse = evt.where; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Change the cursor's appearance to be appropriate for the given mouse */
+/* OBSOLETE    location.  */ */
+/* OBSOLETE  */
+/* OBSOLETE adjust_cursor (Point mouse, RgnHandle region) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Decipher an event, maybe do something with it.  */ */
+/* OBSOLETE  */
+/* OBSOLETE do_event (EventRecord *evt) */
+/* OBSOLETE { */
+/* OBSOLETE   short part, err, rslt = 0; */
+/* OBSOLETE   WindowPtr win; */
+/* OBSOLETE   Boolean hit; */
+/* OBSOLETE   char key; */
+/* OBSOLETE   Point pnt; */
+/* OBSOLETE  */
+/* OBSOLETE   switch (evt->what) */
+/* OBSOLETE     { */
+/* OBSOLETE     case mouseDown: */
+/* OBSOLETE       /* See if the click happened in a special part of the screen. */ */
+/* OBSOLETE       part = FindWindow (evt->where, &win); */
+/* OBSOLETE       switch (part) */
+/* OBSOLETE    { */
+/* OBSOLETE    case inMenuBar: */
+/* OBSOLETE      adjust_menus (); */
+/* OBSOLETE      do_menu_command (MenuSelect (evt->where)); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inSysWindow: */
+/* OBSOLETE      SystemClick (evt, win); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inContent: */
+/* OBSOLETE      if (win != FrontWindow ()) */
+/* OBSOLETE        { */
+/* OBSOLETE          /* Bring the clicked-on window to the front. */ */
+/* OBSOLETE          SelectWindow (win); */
+/* OBSOLETE          /* Fix the menu to match the new front window. */ */
+/* OBSOLETE          adjust_menus (); */
+/* OBSOLETE          /* We always want to discard the event now, since clicks in a */
+/* OBSOLETE             windows are often irreversible actions. */ */
+/* OBSOLETE        } */
+/* OBSOLETE      else */
+/* OBSOLETE        /* Mouse clicks in the front window do something useful. */ */
+/* OBSOLETE        do_mouse_down (win, evt); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inDrag: */
+/* OBSOLETE      /* Standard drag behavior, no tricks necessary. */ */
+/* OBSOLETE      DragWindow (win, evt->where, &dragrect); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inGrow: */
+/* OBSOLETE      grow_window (win, evt->where); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inZoomIn: */
+/* OBSOLETE    case inZoomOut: */
+/* OBSOLETE      zoom_window (win, evt->where, part); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inGoAway: */
+/* OBSOLETE      close_window (win); */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case keyDown: */
+/* OBSOLETE     case autoKey: */
+/* OBSOLETE       key = evt->message & charCodeMask; */
+/* OBSOLETE       /* Check for menukey equivalents. */ */
+/* OBSOLETE       if (evt->modifiers & cmdKey) */
+/* OBSOLETE    { */
+/* OBSOLETE      if (evt->what == keyDown) */
+/* OBSOLETE        { */
+/* OBSOLETE          adjust_menus (); */
+/* OBSOLETE          do_menu_command (MenuKey (key)); */
+/* OBSOLETE        } */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      if (evt->what == keyDown) */
+/* OBSOLETE        { */
+/* OBSOLETE          /* Random keypress, interpret it. */ */
+/* OBSOLETE          do_keyboard_command (key); */
+/* OBSOLETE        } */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case activateEvt: */
+/* OBSOLETE       activate_window ((WindowPtr) evt->message, evt->modifiers & activeFlag); */
+/* OBSOLETE       break; */
+/* OBSOLETE     case updateEvt: */
+/* OBSOLETE       update_window ((WindowPtr) evt->message); */
+/* OBSOLETE       break; */
+/* OBSOLETE     case diskEvt: */
+/* OBSOLETE       /* Call DIBadMount in response to a diskEvt, so that the user can format */
+/* OBSOLETE          a floppy. (from DTS Sample) */ */
+/* OBSOLETE       if (HiWord (evt->message) != noErr) */
+/* OBSOLETE    { */
+/* OBSOLETE      SetPt (&pnt, 50, 50); */
+/* OBSOLETE      err = DIBadMount (pnt, evt->message); */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case app4Evt: */
+/* OBSOLETE       /* Grab only a single byte. */ */
+/* OBSOLETE       switch ((evt->message >> 24) & 0xFF) */
+/* OBSOLETE    { */
+/* OBSOLETE    case 0xfa: */
+/* OBSOLETE      break; */
+/* OBSOLETE    case 1: */
+/* OBSOLETE      inbackground = !(evt->message & 1); */
+/* OBSOLETE      activate_window (FrontWindow (), !inbackground); */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case kHighLevelEvent: */
+/* OBSOLETE       AEProcessAppleEvent (evt); */
+/* OBSOLETE       break; */
+/* OBSOLETE     case nullEvent: */
+/* OBSOLETE       do_idle (); */
+/* OBSOLETE       rslt = 1; */
+/* OBSOLETE       break; */
+/* OBSOLETE     default: */
+/* OBSOLETE       break; */
+/* OBSOLETE     } */
+/* OBSOLETE   return rslt; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Do any idle-time activities. */ */
+/* OBSOLETE  */
+/* OBSOLETE do_idle (void) */
+/* OBSOLETE { */
+/* OBSOLETE   TEIdle (console_text); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE grow_window (WindowPtr win, Point where) */
+/* OBSOLETE { */
+/* OBSOLETE   long winsize; */
+/* OBSOLETE   int h, v; */
+/* OBSOLETE   GrafPtr oldport; */
+/* OBSOLETE  */
+/* OBSOLETE   winsize = GrowWindow (win, where, &sizerect); */
+/* OBSOLETE   /* Only do anything if it actually changed size. */ */
+/* OBSOLETE   if (winsize != 0) */
+/* OBSOLETE     { */
+/* OBSOLETE       GetPort (&oldport); */
+/* OBSOLETE       SetPort (win); */
+/* OBSOLETE       if (win == console_window) */
+/* OBSOLETE    { */
+/* OBSOLETE      EraseRect (&win->portRect); */
+/* OBSOLETE      h = LoWord (winsize); */
+/* OBSOLETE      v = HiWord (winsize); */
+/* OBSOLETE      SizeWindow (win, h, v, 1); */
+/* OBSOLETE      resize_console_window (); */
+/* OBSOLETE    } */
+/* OBSOLETE       SetPort (oldport); */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE zoom_window (WindowPtr win, Point where, short part) */
+/* OBSOLETE { */
+/* OBSOLETE   ZoomWindow (win, part, (win == FrontWindow ())); */
+/* OBSOLETE   if (win == console_window) */
+/* OBSOLETE     { */
+/* OBSOLETE       resize_console_window (); */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE resize_console_window (void) */
+/* OBSOLETE { */
+/* OBSOLETE   adjust_console_sizes (); */
+/* OBSOLETE   adjust_console_scrollbars (); */
+/* OBSOLETE   adjust_console_text (); */
+/* OBSOLETE   InvalRect (&console_window->portRect); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE close_window (WindowPtr win) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE pascal void */
+/* OBSOLETE v_scroll_proc (ControlHandle control, short part) */
+/* OBSOLETE { */
+/* OBSOLETE   int oldval, amount = 0, newval; */
+/* OBSOLETE   int pagesize = ((*console_text)->viewRect.bottom - (*console_text)->viewRect.top) / (*console_text)->lineHeight; */
+/* OBSOLETE   if (part) */
+/* OBSOLETE     { */
+/* OBSOLETE       oldval = GetCtlValue (control); */
+/* OBSOLETE       switch (part) */
+/* OBSOLETE    { */
+/* OBSOLETE    case inUpButton: */
+/* OBSOLETE      amount = 1; */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inDownButton: */
+/* OBSOLETE      amount = -1; */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inPageUp: */
+/* OBSOLETE      amount = pagesize; */
+/* OBSOLETE      break; */
+/* OBSOLETE    case inPageDown: */
+/* OBSOLETE      amount = -pagesize; */
+/* OBSOLETE      break; */
+/* OBSOLETE    default: */
+/* OBSOLETE      /* (should freak out) */ */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       SetCtlValue (control, oldval - amount); */
+/* OBSOLETE       newval = GetCtlValue (control); */
+/* OBSOLETE       amount = oldval - newval; */
+/* OBSOLETE       if (amount) */
+/* OBSOLETE    TEScroll (0, amount * (*console_text)->lineHeight, console_text); */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE do_mouse_down (WindowPtr win, EventRecord * event) */
+/* OBSOLETE { */
+/* OBSOLETE   short part, value; */
+/* OBSOLETE   Point mouse; */
+/* OBSOLETE   ControlHandle control; */
+/* OBSOLETE  */
+/* OBSOLETE   if (1 /*is_app_window(win) */ ) */
+/* OBSOLETE     { */
+/* OBSOLETE       SetPort (win); */
+/* OBSOLETE       mouse = event->where; */
+/* OBSOLETE       GlobalToLocal (&mouse); */
+/* OBSOLETE       part = FindControl (mouse, win, &control); */
+/* OBSOLETE       if (control == console_v_scrollbar) */
+/* OBSOLETE    { */
+/* OBSOLETE      switch (part) */
+/* OBSOLETE        { */
+/* OBSOLETE        case inThumb: */
+/* OBSOLETE          value = GetCtlValue (control); */
+/* OBSOLETE          part = TrackControl (control, mouse, nil); */
+/* OBSOLETE          if (part) */
+/* OBSOLETE            { */
+/* OBSOLETE              value -= GetCtlValue (control); */
+/* OBSOLETE              if (value) */
+/* OBSOLETE                TEScroll (0, value * (*console_text)->lineHeight, */
+/* OBSOLETE                          console_text); */
+/* OBSOLETE            } */
+/* OBSOLETE          break; */
+/* OBSOLETE        default: */
+/* OBSOLETE #if 0                              /* don't deal with right now */ */
+/* OBSOLETE #if 1                              /* universal headers */ */
+/* OBSOLETE          value = TrackControl (control, mouse, (ControlActionUPP) v_scroll_proc); */
+/* OBSOLETE #else */
+/* OBSOLETE          value = TrackControl (control, mouse, (ProcPtr) v_scroll_proc); */
+/* OBSOLETE #endif */
+/* OBSOLETE #endif */
+/* OBSOLETE          break; */
+/* OBSOLETE        } */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      TEClick (mouse, 0, console_text); */
+/* OBSOLETE    } */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE scroll_text (int hlines, int vlines) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE activate_window (WindowPtr win, int activate) */
+/* OBSOLETE { */
+/* OBSOLETE   Rect grow_rect; */
+/* OBSOLETE  */
+/* OBSOLETE   if (win == nil) */
+/* OBSOLETE     return; */
+/* OBSOLETE   /* It's convenient to make the activated window also be the */
+/* OBSOLETE      current GrafPort. */ */
+/* OBSOLETE   if (activate) */
+/* OBSOLETE     SetPort (win); */
+/* OBSOLETE   /* Activate the console window's scrollbar. */ */
+/* OBSOLETE   if (win == console_window) */
+/* OBSOLETE     { */
+/* OBSOLETE       if (activate) */
+/* OBSOLETE    { */
+/* OBSOLETE      TEActivate (console_text); */
+/* OBSOLETE      /* Cause the grow icon to be redrawn at the next update. */ */
+/* OBSOLETE      grow_rect = console_window->portRect; */
+/* OBSOLETE      grow_rect.top = grow_rect.bottom - sbarwid; */
+/* OBSOLETE      grow_rect.left = grow_rect.right - sbarwid; */
+/* OBSOLETE      InvalRect (&grow_rect); */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      TEDeactivate (console_text); */
+/* OBSOLETE      DrawGrowIcon (console_window); */
+/* OBSOLETE    } */
+/* OBSOLETE       HiliteControl (console_v_scrollbar, (activate ? 0 : 255)); */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE update_window (WindowPtr win) */
+/* OBSOLETE { */
+/* OBSOLETE   int controls = 1, growbox = 0; */
+/* OBSOLETE   GrafPtr oldport; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Set the updating window to be the current grafport. */ */
+/* OBSOLETE   GetPort (&oldport); */
+/* OBSOLETE   SetPort (win); */
+/* OBSOLETE /*  recalc_depths();  */ */
+/* OBSOLETE   BeginUpdate (win); */
+/* OBSOLETE   if (win == console_window) */
+/* OBSOLETE     { */
+/* OBSOLETE       draw_console (); */
+/* OBSOLETE       controls = 1; */
+/* OBSOLETE       growbox = 1; */
+/* OBSOLETE     } */
+/* OBSOLETE   if (controls) */
+/* OBSOLETE     UpdateControls (win, win->visRgn); */
+/* OBSOLETE   if (growbox) */
+/* OBSOLETE     DrawGrowIcon (win); */
+/* OBSOLETE   EndUpdate (win); */
+/* OBSOLETE   SetPort (oldport); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE adjust_menus (void) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE do_menu_command (long which) */
+/* OBSOLETE { */
+/* OBSOLETE   short menuid, menuitem; */
+/* OBSOLETE   short itemHit; */
+/* OBSOLETE   Str255 daname; */
+/* OBSOLETE   short daRefNum; */
+/* OBSOLETE   Boolean handledbyda; */
+/* OBSOLETE   WindowPtr win; */
+/* OBSOLETE   short ditem; */
+/* OBSOLETE   int i; */
+/* OBSOLETE   char cmdbuf[300]; */
+/* OBSOLETE  */
+/* OBSOLETE   cmdbuf[0] = '\0'; */
+/* OBSOLETE   menuid = HiWord (which); */
+/* OBSOLETE   menuitem = LoWord (which); */
+/* OBSOLETE   switch (menuid) */
+/* OBSOLETE     { */
+/* OBSOLETE     case mApple: */
+/* OBSOLETE       switch (menuitem) */
+/* OBSOLETE    { */
+/* OBSOLETE    case miAbout: */
+/* OBSOLETE      Alert (128, nil); */
+/* OBSOLETE      break; */
+/* OBSOLETE #if 0 */
+/* OBSOLETE    case miHelp: */
+/* OBSOLETE      /* (should pop up help info) */ */
+/* OBSOLETE      break; */
+/* OBSOLETE #endif */
+/* OBSOLETE    default: */
+/* OBSOLETE      GetItem (GetMHandle (mApple), menuitem, daname); */
+/* OBSOLETE      daRefNum = OpenDeskAcc (daname); */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case mFile: */
+/* OBSOLETE       switch (menuitem) */
+/* OBSOLETE    { */
+/* OBSOLETE    case miFileNew: */
+/* OBSOLETE      if (console_window == FrontWindow ()) */
+/* OBSOLETE        { */
+/* OBSOLETE          close_window (console_window); */
+/* OBSOLETE        } */
+/* OBSOLETE      new_console_window (); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miFileOpen: */
+/* OBSOLETE      SysBeep (20); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miFileQuit: */
+/* OBSOLETE      ExitToShell (); */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     case mEdit: */
+/* OBSOLETE       /* handledbyda = SystemEdit(menuitem-1); */ */
+/* OBSOLETE       switch (menuitem) */
+/* OBSOLETE    { */
+/* OBSOLETE    case miEditCut: */
+/* OBSOLETE      TECut (console_text); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miEditCopy: */
+/* OBSOLETE      TECopy (console_text); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miEditPaste: */
+/* OBSOLETE      TEPaste (console_text); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miEditClear: */
+/* OBSOLETE      TEDelete (console_text); */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       /* All of these operations need the same postprocessing. */ */
+/* OBSOLETE       adjust_console_sizes (); */
+/* OBSOLETE       adjust_console_scrollbars (); */
+/* OBSOLETE       adjust_console_text (); */
+/* OBSOLETE       break; */
+/* OBSOLETE     case mDebug: */
+/* OBSOLETE       switch (menuitem) */
+/* OBSOLETE    { */
+/* OBSOLETE    case miDebugTarget: */
+/* OBSOLETE      sprintf (cmdbuf, "target %s", "remote"); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miDebugRun: */
+/* OBSOLETE      sprintf (cmdbuf, "run"); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miDebugContinue: */
+/* OBSOLETE      sprintf (cmdbuf, "continue"); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miDebugStep: */
+/* OBSOLETE      sprintf (cmdbuf, "step"); */
+/* OBSOLETE      break; */
+/* OBSOLETE    case miDebugNext: */
+/* OBSOLETE      sprintf (cmdbuf, "next"); */
+/* OBSOLETE      break; */
+/* OBSOLETE    } */
+/* OBSOLETE       break; */
+/* OBSOLETE     } */
+/* OBSOLETE   HiliteMenu (0); */
+/* OBSOLETE   /* Execute a command if one had been given.  Do here because a command */
+/* OBSOLETE      may longjmp before we get a chance to unhilite the menu. */ */
+/* OBSOLETE   if (strlen (cmdbuf) > 0) */
+/* OBSOLETE     execute_command (cmdbuf, 0); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE char commandbuf[1000]; */
+/* OBSOLETE  */
+/* OBSOLETE do_keyboard_command (int key) */
+/* OBSOLETE { */
+/* OBSOLETE   int startpos, endpos, i, len; */
+/* OBSOLETE   char *last_newline; */
+/* OBSOLETE   char buf[10], *text_str, *command, *cmd_start; */
+/* OBSOLETE   CharsHandle text; */
+/* OBSOLETE  */
+/* OBSOLETE   if (key == '\015' || key == '\003') */
+/* OBSOLETE     { */
+/* OBSOLETE       text = TEGetText (console_text); */
+/* OBSOLETE       HLock ((Handle) text); */
+/* OBSOLETE       text_str = *text; */
+/* OBSOLETE       startpos = (*console_text)->selStart; */
+/* OBSOLETE       endpos = (*console_text)->selEnd; */
+/* OBSOLETE       if (startpos != endpos) */
+/* OBSOLETE    { */
+/* OBSOLETE      len = endpos - startpos; */
+/* OBSOLETE      cmd_start = text_str + startpos; */
+/* OBSOLETE    } */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      for (i = startpos - 1; i >= 0; --i) */
+/* OBSOLETE        if (text_str[i] == '\015') */
+/* OBSOLETE          break; */
+/* OBSOLETE      last_newline = text_str + i; */
+/* OBSOLETE      len = (text_str + startpos) - 1 - last_newline; */
+/* OBSOLETE      cmd_start = last_newline + 1; */
+/* OBSOLETE    } */
+/* OBSOLETE       if (len > 1000) */
+/* OBSOLETE    len = 999; */
+/* OBSOLETE       if (len < 0) */
+/* OBSOLETE    len = 0; */
+/* OBSOLETE       strncpy (commandbuf + 1, cmd_start, len); */
+/* OBSOLETE       commandbuf[1 + len] = 0; */
+/* OBSOLETE       command = commandbuf + 1; */
+/* OBSOLETE       HUnlock ((Handle) text); */
+/* OBSOLETE       commandbuf[0] = strlen (command); */
+/* OBSOLETE  */
+/* OBSOLETE       /* Insert a newline and recalculate before doing any command. */ */
+/* OBSOLETE       key = '\015'; */
+/* OBSOLETE       TEKey (key, console_text); */
+/* OBSOLETE       TEInsert (buf, 1, console_text); */
+/* OBSOLETE       adjust_console_sizes (); */
+/* OBSOLETE       adjust_console_scrollbars (); */
+/* OBSOLETE       adjust_console_text (); */
+/* OBSOLETE  */
+/* OBSOLETE       if (strlen (command) > 0) */
+/* OBSOLETE    { */
+/* OBSOLETE      execute_command (command, 0); */
+/* OBSOLETE      bpstat_do_actions (&stop_bpstat); */
+/* OBSOLETE    } */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     { */
+/* OBSOLETE       /* A self-inserting character.  This includes delete.  */ */
+/* OBSOLETE       TEKey (key, console_text); */
+/* OBSOLETE     } */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Draw all graphical stuff in the console window.  */ */
+/* OBSOLETE  */
+/* OBSOLETE draw_console (void) */
+/* OBSOLETE { */
+/* OBSOLETE   SetPort (console_window); */
+/* OBSOLETE   TEUpdate (&(console_window->portRect), console_text); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Cause an update of a given window's entire contents.  */ */
+/* OBSOLETE  */
+/* OBSOLETE force_update (WindowPtr win) */
+/* OBSOLETE { */
+/* OBSOLETE   GrafPtr oldport; */
+/* OBSOLETE  */
+/* OBSOLETE   if (win == nil) */
+/* OBSOLETE     return; */
+/* OBSOLETE   GetPort (&oldport); */
+/* OBSOLETE   SetPort (win); */
+/* OBSOLETE   EraseRect (&win->portRect); */
+/* OBSOLETE   InvalRect (&win->portRect); */
+/* OBSOLETE   SetPort (oldport); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE adjust_console_sizes (void) */
+/* OBSOLETE { */
+/* OBSOLETE   Rect tmprect; */
+/* OBSOLETE  */
+/* OBSOLETE   tmprect = console_window->portRect; */
+/* OBSOLETE   /* Move and size the scrollbar. */ */
+/* OBSOLETE   MoveControl (console_v_scrollbar, tmprect.right - sbarwid, 0); */
+/* OBSOLETE   SizeControl (console_v_scrollbar, sbarwid + 1, tmprect.bottom - sbarwid + 1); */
+/* OBSOLETE   /* Move and size the text. */ */
+/* OBSOLETE   tmprect.left += 7; */
+/* OBSOLETE   tmprect.right -= sbarwid; */
+/* OBSOLETE   tmprect.bottom -= sbarwid; */
+/* OBSOLETE   InsetRect (&tmprect, 1, 1); */
+/* OBSOLETE   (*console_text)->destRect = tmprect; */
+/* OBSOLETE   /* Fiddle bottom of viewrect to be even multiple of text lines. */ */
+/* OBSOLETE   tmprect.bottom = tmprect.top */
+/* OBSOLETE     + ((tmprect.bottom - tmprect.top) / (*console_text)->lineHeight) */
+/* OBSOLETE     * (*console_text)->lineHeight; */
+/* OBSOLETE   (*console_text)->viewRect = tmprect; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE adjust_console_scrollbars (void) */
+/* OBSOLETE { */
+/* OBSOLETE   int lines, newmax, value; */
+/* OBSOLETE  */
+/* OBSOLETE   (*console_v_scrollbar)->contrlVis = 0; */
+/* OBSOLETE   lines = (*console_text)->nLines; */
+/* OBSOLETE   newmax = lines - (((*console_text)->viewRect.bottom */
+/* OBSOLETE                 - (*console_text)->viewRect.top) */
+/* OBSOLETE                / (*console_text)->lineHeight); */
+/* OBSOLETE   if (newmax < 0) */
+/* OBSOLETE     newmax = 0; */
+/* OBSOLETE   SetCtlMax (console_v_scrollbar, newmax); */
+/* OBSOLETE   value = ((*console_text)->viewRect.top - (*console_text)->destRect.top) */
+/* OBSOLETE     / (*console_text)->lineHeight; */
+/* OBSOLETE   SetCtlValue (console_v_scrollbar, value); */
+/* OBSOLETE   (*console_v_scrollbar)->contrlVis = 0xff; */
+/* OBSOLETE   ShowControl (console_v_scrollbar); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Scroll the TE record so that it is consistent with the scrollbar(s). */ */
+/* OBSOLETE  */
+/* OBSOLETE adjust_console_text (void) */
+/* OBSOLETE { */
+/* OBSOLETE   TEScroll (((*console_text)->viewRect.left */
+/* OBSOLETE         - (*console_text)->destRect.left) */
+/* OBSOLETE        - 0 /* get h scroll value */ , */
+/* OBSOLETE        ((((*console_text)->viewRect.top - (*console_text)->destRect.top) */
+/* OBSOLETE          / (*console_text)->lineHeight) */
+/* OBSOLETE         - GetCtlValue (console_v_scrollbar)) */
+/* OBSOLETE        * (*console_text)->lineHeight, */
+/* OBSOLETE        console_text); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Readline substitute. */ */
+/* OBSOLETE  */
+/* OBSOLETE char * */
+/* OBSOLETE readline (char *prrompt) */
+/* OBSOLETE { */
+/* OBSOLETE   return gdb_readline (prrompt); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE char *rl_completer_word_break_characters; */
+/* OBSOLETE  */
+/* OBSOLETE char *rl_completer_quote_characters; */
+/* OBSOLETE  */
+/* OBSOLETE int (*rl_completion_entry_function) (); */
+/* OBSOLETE  */
+/* OBSOLETE int rl_point; */
+/* OBSOLETE  */
+/* OBSOLETE char *rl_line_buffer; */
+/* OBSOLETE  */
+/* OBSOLETE char *rl_readline_name; */
+/* OBSOLETE  */
+/* OBSOLETE /* History substitute. */ */
+/* OBSOLETE  */
+/* OBSOLETE void */
+/* OBSOLETE add_history (char *buf) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE void */
+/* OBSOLETE stifle_history (int n) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE unstifle_history (void) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE read_history (char *name) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE write_history (char *name) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE history_expand (char *x, char **y) */
+/* OBSOLETE { */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE extern HIST_ENTRY * */
+/* OBSOLETE history_get (int xxx) */
+/* OBSOLETE { */
+/* OBSOLETE   return NULL; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE int history_base; */
+/* OBSOLETE  */
+/* OBSOLETE char * */
+/* OBSOLETE filename_completion_function (char *text, char *name) */
+/* OBSOLETE { */
+/* OBSOLETE   return "?"; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE char * */
+/* OBSOLETE tilde_expand (char *str) */
+/* OBSOLETE { */
+/* OBSOLETE   return xstrdup (str); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Modified versions of standard I/O. */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef fprintf */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE hacked_fprintf (FILE * fp, const char *fmt,...) */
+/* OBSOLETE { */
+/* OBSOLETE   int ret; */
+/* OBSOLETE   va_list ap; */
+/* OBSOLETE  */
+/* OBSOLETE   va_start (ap, fmt); */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       char buf[1000]; */
+/* OBSOLETE  */
+/* OBSOLETE       ret = vsprintf (buf, fmt, ap); */
+/* OBSOLETE       TEInsert (buf, strlen (buf), console_text); */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     ret = vfprintf (fp, fmt, ap); */
+/* OBSOLETE   va_end (ap); */
+/* OBSOLETE   return ret; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef printf */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE hacked_printf (const char *fmt,...) */
+/* OBSOLETE { */
+/* OBSOLETE   int ret; */
+/* OBSOLETE   va_list ap; */
+/* OBSOLETE  */
+/* OBSOLETE   va_start (ap, fmt); */
+/* OBSOLETE   ret = hacked_vfprintf (stdout, fmt, ap); */
+/* OBSOLETE   va_end (ap); */
+/* OBSOLETE   return ret; */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef vfprintf */
+/* OBSOLETE  */
+/* OBSOLETE int */
+/* OBSOLETE hacked_vfprintf (FILE * fp, const char *format, va_list args) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       char buf[1000]; */
+/* OBSOLETE       int ret; */
+/* OBSOLETE  */
+/* OBSOLETE       ret = vsprintf (buf, format, args); */
+/* OBSOLETE       TEInsert (buf, strlen (buf), console_text); */
+/* OBSOLETE       if (strchr (buf, '\n')) */
+/* OBSOLETE    { */
+/* OBSOLETE      adjust_console_sizes (); */
+/* OBSOLETE      adjust_console_scrollbars (); */
+/* OBSOLETE      adjust_console_text (); */
+/* OBSOLETE    } */
+/* OBSOLETE       return ret; */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     return vfprintf (fp, format, args); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef fputs */
+/* OBSOLETE  */
+/* OBSOLETE hacked_fputs (const char *s, FILE * fp) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       TEInsert (s, strlen (s), console_text); */
+/* OBSOLETE       if (strchr (s, '\n')) */
+/* OBSOLETE    { */
+/* OBSOLETE      adjust_console_sizes (); */
+/* OBSOLETE      adjust_console_scrollbars (); */
+/* OBSOLETE      adjust_console_text (); */
+/* OBSOLETE    } */
+/* OBSOLETE       return 0; */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     return fputs (s, fp); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef fputc */
+/* OBSOLETE  */
+/* OBSOLETE hacked_fputc (const char c, FILE * fp) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       char buf[1]; */
+/* OBSOLETE  */
+/* OBSOLETE       buf[0] = c; */
+/* OBSOLETE       TEInsert (buf, 1, console_text); */
+/* OBSOLETE       if (c == '\n') */
+/* OBSOLETE    { */
+/* OBSOLETE      adjust_console_sizes (); */
+/* OBSOLETE      adjust_console_scrollbars (); */
+/* OBSOLETE      adjust_console_text (); */
+/* OBSOLETE    } */
+/* OBSOLETE       return c; */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     return fputc (c, fp); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef putc */
+/* OBSOLETE  */
+/* OBSOLETE hacked_putc (const char c, FILE * fp) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       char buf[1]; */
+/* OBSOLETE  */
+/* OBSOLETE       buf[0] = c; */
+/* OBSOLETE       TEInsert (buf, 1, console_text); */
+/* OBSOLETE       if (c == '\n') */
+/* OBSOLETE    { */
+/* OBSOLETE      adjust_console_sizes (); */
+/* OBSOLETE      adjust_console_scrollbars (); */
+/* OBSOLETE      adjust_console_text (); */
+/* OBSOLETE    } */
+/* OBSOLETE       return c; */
+/* OBSOLETE     } */
+/* OBSOLETE   else */
+/* OBSOLETE     return fputc (c, fp); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef fflush */
+/* OBSOLETE  */
+/* OBSOLETE hacked_fflush (FILE * fp) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdout || fp == stderr)) */
+/* OBSOLETE     { */
+/* OBSOLETE       adjust_console_sizes (); */
+/* OBSOLETE       adjust_console_scrollbars (); */
+/* OBSOLETE       adjust_console_text (); */
+/* OBSOLETE       return 0; */
+/* OBSOLETE     } */
+/* OBSOLETE   return fflush (fp); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #undef fgetc */
+/* OBSOLETE  */
+/* OBSOLETE hacked_fgetc (FILE * fp) */
+/* OBSOLETE { */
+/* OBSOLETE   if (mac_app && (fp == stdin)) */
+/* OBSOLETE     { */
+/* OBSOLETE       /* Catch any attempts to use this.  */ */
+/* OBSOLETE       DebugStr ("\pShould not be reading from stdin!"); */
+/* OBSOLETE       return '\n'; */
+/* OBSOLETE     } */
+/* OBSOLETE   return fgetc (fp); */
+/* OBSOLETE } */