About: Source:NetHack 1.3d/pctty.c   Sponge Permalink

An Entity of Type : owl:Thing, within Data Space : 134.155.108.49:8890 associated with source dataset(s)

Below is the full text to pctty.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/pctty.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code

AttributesValues
rdfs:label
  • Source:NetHack 1.3d/pctty.c
rdfs:comment
  • Below is the full text to pctty.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/pctty.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code
dcterms:subject
dbkwik:nethack/pro...iPageUsesTemplate
abstract
  • Below is the full text to pctty.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/pctty.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)pctty.c 1.3 87/07/14 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* tty.c - (PC) version 1.0.3 */ 4. /* With thanks to the people who sent code for SYSV - hpscdi!jon, 5. arnold@ucsf-cgl, wcs@bo95b, cbcephus!pds and others. */ 6. 7. #include 8. #include "hack.h" 9. 10. static char erase_char, kill_char; 11. 12. /* 13. * Get initial state of terminal, set ospeed (for termcap routines) 14. * and switch off tab expansion if necessary. 15. * Called by startup() in termcap.c and after returning from ! or ^Z 16. */ 17. gettty(){ 18. erase_char = '\b'; 19. kill_char = 21; /* cntl-U */ 20. flags.cbreak = TRUE; 21. #ifdef DGK 22. disable_ctrlP(); /* turn off ^P processing */ 23. #endif 24. } 25. 26. /* reset terminal to original state */ 27. settty(s) char *s; { 28. end_screen(); 29. if(s) printf(s); 30. (void) fflush(stdout); 31. #ifdef DGK 32. enable_ctrlP(); /* turn on ^P processing */ 33. #endif 34. } 35. 36. 37. /* fatal error */ 38. /*VARARGS1*/ 39. error(s,x,y) char *s; { 40. end_screen(); 41. putchar(' '); 42. printf(s,x,y); 43. putchar(' '); 44. exit(1); 45. } 46. 47. /* 48. * Read a line closed with ' ' into the array char bufp[BUFSZ]. 49. * (The ' ' is not stored. The string is closed with a '\0'.) 50. * Reading can be interrupted by an escape ('\033') - now the 51. * resulting string is "\033". 52. */ 53. getlin(bufp) 54. register char *bufp; 55. { 56. register char *obufp = bufp; 57. register int c; 58. 59. flags.toplin = 2; /* nonempty, no --More-- required */ 60. for(;;) { 61. (void) fflush(stdout); 62. if((c = getchar()) == EOF) { 63. *bufp = 0; 64. return; 65. } 66. if(c == '\033') { 67. *obufp = c; 68. obufp[1] = 0; 69. return; 70. } 71. if(c == erase_char || c == '\b') { 72. if(bufp != obufp) { 73. bufp--; 74. putstr("\b \b"); /* putsym converts \b */ 75. } else bell(); 76. } else if(c == ' ') { 77. *bufp = 0; 78. return; 79. } else if(' ' <= c && c < '\177') { 80. /* avoid isprint() - some people don't have it 81. ' ' is not always a printing char */ 82. *bufp = c; 83. bufp[1] = 0; 84. putstr(bufp); 85. if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) 86. bufp++; 87. } else if(c == kill_char || c == '\177') { /* Robert Viduya */ 88. /* this test last - @ might be the kill_char */ 89. while(bufp != obufp) { 90. bufp--; 91. putstr("\b \b"); 92. } 93. } else 94. bell(); 95. } 96. } 97. 98. getret() { 99. cgetret(""); 100. } 101. 102. cgetret(s) 103. register char *s; 104. { 105. putsym(' '); 106. if(flags.standout) 107. standoutbeg(); 108. putstr("Hit "); 109. putstr(flags.cbreak ? "space" : "return"); 110. putstr(" to continue: "); 111. if(flags.standout) 112. standoutend(); 113. xwaitforspace(s); 114. } 115. 116. char morc; /* tell the outside world what char he used */ 117. 118. xwaitforspace(s) 119. register char *s; /* chars allowed besides space or return */ 120. { 121. register int c; 122. 123. morc = 0; 124. while((c = readchar()) != ' ') { 125. if(flags.cbreak) { 126. if(c == ' ') break; 127. if(s && index(s,c)) { 128. morc = c; 129. break; 130. } 131. bell(); 132. } 133. } 134. } 135. 136. static int last_multi; 137. 138. char * 139. parse() 140. { 141. static char inline[COLNO]; 142. register foo; 143. 144. flags.move = 1; 145. if(!Invisible) curs_on_u(); else home(); 146. multi = 0; 147. #ifdef DGK 148. while((foo = readchar()) >= '0' && foo <= '9') { 149. multi = 10*multi+foo-'0'; 150. if (multi < 0 || multi > LARGEST_INT) 151. multi = LARGEST_INT; 152. if (multi > 9) { 153. remember_topl(); 154. home(); 155. cl_end(); 156. printf("Count: %d", multi); 157. } 158. last_multi = multi; 159. } 160. # ifdef REDO 161. if (foo == DOAGAIN || in_doagain) 162. multi = last_multi; 163. else { 164. savech(0); /* reset input queue */ 165. savech(foo); 166. } 167. # endif 168. 169. #else /* DGK */ 170. 171. while((foo = readchar()) >= '0' && foo <= '9') 172. multi = 10*multi+foo-'0'; 173. 174. #endif /* DGK */ 175. 176. if(multi) { 177. multi--; 178. save_cm = inline; 179. } 180. inline[0] = foo; 181. inline[1] = 0; 182. if(foo == 'g' || foo == 'G'){ 183. inline[1] = getchar(); 184. savech(inline[1]); 185. inline[2] = 0; 186. } 187. if(foo == 'm' || foo == 'M'){ 188. inline[1] = getchar(); 189. savech(inline[1]); 190. inline[2] = 0; 191. } 192. clrlin(); 193. return(inline); 194. } 195. 196. char 197. readchar() { 198. register int sym; 199. 200. (void) fflush(stdout); 201. sym = getchar(); 202. if(flags.toplin == 1) 203. flags.toplin = 2; 204. return((char) sym); 205. }
Alternative Linked Data Views: ODE     Raw Data in: CXML | CSV | RDF ( N-Triples N3/Turtle JSON XML ) | OData ( Atom JSON ) | Microdata ( JSON HTML) | JSON-LD    About   
This material is Open Knowledge   W3C Semantic Web Technology [RDF Data] Valid XHTML + RDFa
OpenLink Virtuoso version 07.20.3217, on Linux (x86_64-pc-linux-gnu), Standard Edition
Data on this page belongs to its respective rights holders.
Virtuoso Faceted Browser Copyright © 2009-2012 OpenLink Software