Below is the full text to windows.c from the source code of NetHack 3.4.0. To link to a particular line, write [[NetHack 3.4.0/windows.c#line123]], for example.
Warning! This is the source code from an old release. For the latest release, see Source code
The NetHack General Public License applies to screenshots, source code and other content from NetHack. |
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*/