Source:Windows.c

Below is the full text to src/windows.c from NetHack 3.4.3. To link to a particular line, write [[windows.c#line123 ]], for example. 1.   /*	SCCS Id: @(#)windows.c	3.4	1996/05/19	*/ 2.   /* Copyright (c) D. Cohrs, 1993. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.

5.   #include "hack.h"  6.    #ifdef TTY_GRAPHICS 7.   #include "wintty.h"  8.    #endif 9.   #ifdef X11_GRAPHICS 10.  /* cannot just blindly include winX.h without including all of X11 stuff */ 11.  /* and must get the order of include files right. Don't bother */ 12.  extern struct window_procs X11_procs; 13.  extern void NDECL(win_X11_init); 14.  #endif 15.  #ifdef QT_GRAPHICS 16.  extern struct window_procs Qt_procs; 17.  #endif 18.  #ifdef GEM_GRAPHICS 19.  #include "wingem.h"  20. #endif 21.  #ifdef MAC 22.  extern struct window_procs mac_procs; 23.  #endif 24.  #ifdef BEOS_GRAPHICS 25.  extern struct window_procs beos_procs; 26.  extern void NDECL(be_win_init); 27.  #endif 28.  #ifdef AMIGA_INTUITION 29.  extern struct window_procs amii_procs; 30.  extern struct window_procs amiv_procs; 31.  extern void NDECL(ami_wininit_data); 32.  #endif 33.  #ifdef WIN32_GRAPHICS 34.  extern struct window_procs win32_procs; 35.  #endif 36.  #ifdef GNOME_GRAPHICS 37.  #include "winGnome.h"  38. extern struct window_procs Gnome_procs; 39.  #endif 40.  #ifdef MSWIN_GRAPHICS 41.  extern struct window_procs mswin_procs; 42.  #endif 43.   44.   STATIC_DCL void FDECL(def_raw_print, (const char *s)); 45.   46.   NEARDATA struct window_procs windowprocs; 47.   48.   static 49.  struct win_choices { 50.      struct window_procs *procs; 51.      void NDECL((*ini_routine));		/* optional (can be 0) */ 52.  } winchoices[] = { 53.  #ifdef TTY_GRAPHICS 54.      { &tty_procs, win_tty_init }, 55.  #endif 56.  #ifdef X11_GRAPHICS 57.      { &X11_procs, win_X11_init }, 58.  #endif 59.  #ifdef QT_GRAPHICS 60.      { &Qt_procs, 0 }, 61.  #endif 62.  #ifdef GEM_GRAPHICS 63.      { &Gem_procs, win_Gem_init }, 64.  #endif 65.  #ifdef MAC 66.      { &mac_procs, 0 }, 67.  #endif 68.  #ifdef BEOS_GRAPHICS 69.      { &beos_procs, be_win_init }, 70.  #endif 71.  #ifdef AMIGA_INTUITION 72.      { &amii_procs, ami_wininit_data },		/* Old font version of the game */ 73.      { &amiv_procs, ami_wininit_data },		/* Tile version of the game */ 74.  #endif 75.  #ifdef WIN32_GRAPHICS 76.      { &win32_procs, 0 }, 77.  #endif 78.  #ifdef GNOME_GRAPHICS 79.      { &Gnome_procs, 0 }, 80.  #endif 81.  #ifdef MSWIN_GRAPHICS 82.      { &mswin_procs, 0 }, 83.  #endif 84.      { 0, 0 }		/* must be last */ 85.  };  86.    87.   STATIC_OVL 88.  void 89.  def_raw_print(s) 90.  const char *s; 91.  {  92.       puts(s); 93.  }  94.    95.   void 96.  choose_windows(s) 97.  const char *s; 98.  {  99.       register int i;  100. 101.     for(i=0; winchoices[i].procs; i++) 102. 	if (!strcmpi(s, winchoices[i].procs->name)) { 103. 	    windowprocs = *winchoices[i].procs; 104. 	    if (winchoices[i].ini_routine) (*winchoices[i].ini_routine); 105. 	    return; 106. 	}  107.   108.      if (!windowprocs.win_raw_print) 109. 	windowprocs.win_raw_print = def_raw_print; 110.  111.      raw_printf("Window type %s not recognized.  Choices are:", s); 112.     for(i=0; winchoices[i].procs; i++) 113. 	raw_printf("        %s", winchoices[i].procs->name); 114.  115.      if (windowprocs.win_raw_print == def_raw_print) 116. 	terminate(EXIT_SUCCESS); 117.     wait_synch; 118. }  119.   120.  /*  121.   * tty_message_menu provides a means to get feedback from the 122.  * --More-- prompt; other interfaces generally don't need that. 123.  */  124.  /*ARGSUSED*/ 125. char 126. genl_message_menu(let, how, mesg) 127. char let; 128. int how; 129. const char *mesg; 130. {  131.      pline("%s", mesg); 132.     return 0; 133. }  134.   135.  /*ARGSUSED*/ 136. void 137. genl_preference_update(pref) 138. const char *pref; 139. {  140.  	/* window ports are expected to provide 141. 	   their own preference update routine 142. 	   for the preference capabilities that 143. 	   they support. 144. 	   Just return in this genl one. */ 145.  }  146.  /*windows.c*/