About: Source:NetHack 2.3e/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 2.3e. To link to a particular line, write [[NetHack 2.3e/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 2.3e/pctty.c
rdfs:comment
  • Below is the full text to pctty.c from the source code of NetHack 2.3e. To link to a particular line, write [[NetHack 2.3e/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 2.3e. To link to a particular line, write [[NetHack 2.3e/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 2.3 87/12/12 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* tty.c - (PC) version */ 4. 5. /* With thanks to the people who sent code for SYSV - hpscdi!jon, 6. * arnold@ucsf-cgl, wcs@bo95b, cbcephus!pds and others. 7. */ 8. 9. #include 10. #include "hack.h" 11. #include "func_tab.h" 12. 13. extern void savech(); 14. 15. static char erase_char, kill_char; 16. 17. /* 18. * Get initial state of terminal, set ospeed (for termcap routines) 19. * and switch off tab expansion if necessary. 20. * Called by startup() in termcap.c and after returning from ! or ^Z 21. */ 22. gettty(){ 23. erase_char = '\b'; 24. kill_char = 21; /* cntl-U */ 25. flags.cbreak = TRUE; 26. #ifdef DGK 27. disable_ctrlP(); /* turn off ^P processing */ 28. #endif 29. } 30. 31. /* reset terminal to original state */ 32. settty(s) char *s; { 33. end_screen(); 34. if(s) printf(s); 35. (void) fflush(stdout); 36. #ifdef DGK 37. enable_ctrlP(); /* turn on ^P processing */ 38. #endif 39. } 40. 41. 42. /* fatal error */ 43. /*VARARGS1*/ 44. error(s,x,y) char *s; { 45. end_screen(); 46. putchar(' '); 47. printf(s,x,y); 48. putchar(' '); 49. exit(1); 50. } 51. 52. /* 53. * Read a line closed with ' ' into the array char bufp[BUFSZ]. 54. * (The ' ' is not stored. The string is closed with a '\0'.) 55. * Reading can be interrupted by an escape ('\033') - now the 56. * resulting string is "\033". 57. */ 58. getlin(bufp) 59. register char *bufp; 60. { 61. register char *obufp = bufp; 62. register int c; 63. 64. flags.toplin = 2; /* nonempty, no --More-- required */ 65. for(;;) { 66. (void) fflush(stdout); 67. if((c = getchar()) == EOF) { 68. *bufp = 0; 69. return; 70. } 71. if(c == '\033') { 72. *obufp = c; 73. obufp[1] = 0; 74. return; 75. } 76. if(c == erase_char || c == '\b') { 77. if(bufp != obufp) { 78. bufp--; 79. putstr("\b \b"); /* putsym converts \b */ 80. } else bell(); 81. } else if(c == ' ') { 82. *bufp = 0; 83. return; 84. } else if(' ' <= c && c < '\177') { 85. /* avoid isprint() - some people don't have it 86. ' ' is not always a printing char */ 87. *bufp = c; 88. bufp[1] = 0; 89. putstr(bufp); 90. if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) 91. bufp++; 92. } else if(c == kill_char || c == '\177') { /* Robert Viduya */ 93. /* this test last - @ might be the kill_char */ 94. while(bufp != obufp) { 95. bufp--; 96. putstr("\b \b"); 97. } 98. } else 99. bell(); 100. } 101. } 102. 103. getret() { 104. cgetret(""); 105. } 106. 107. cgetret(s) 108. register char *s; 109. { 110. putsym(' '); 111. if(flags.standout) 112. standoutbeg(); 113. putstr("Hit "); 114. putstr(flags.cbreak ? "space" : "return"); 115. putstr(" to continue: "); 116. if(flags.standout) 117. standoutend(); 118. xwaitforspace(s); 119. } 120. 121. char morc; /* tell the outside world what char he used */ 122. 123. xwaitforspace(s) 124. register char *s; /* chars allowed besides space or return */ 125. { 126. register int c; 127. 128. morc = 0; 129. while((c = readchar()) != ' ') { 130. if(flags.cbreak) { 131. if(c == ' ') break; 132. if(s && index(s,c)) { 133. morc = c; 134. break; 135. } 136. bell(); 137. } 138. } 139. } 140. 141. static int last_multi; 142. 143. char * 144. parse() 145. { 146. static char inline[COLNO]; 147. register foo; 148. 149. flags.move = 1; 150. if(!Invisible) curs_on_u(); else home(); 151. multi = 0; 152. #ifdef DGK 153. while((foo = readchar()) >= '0' && foo <= '9') { 154. multi = 10*multi+foo-'0'; 155. if (multi < 0 || multi > LARGEST_INT) 156. multi = LARGEST_INT; 157. if (multi > 9) { 158. remember_topl(); 159. home(); 160. cl_end(); 161. printf("Count: %d", multi); 162. } 163. last_multi = multi; 164. } 165. # ifdef REDO 166. if (foo == DOAGAIN || in_doagain) 167. multi = last_multi; 168. else { 169. savech(0); /* reset input queue */ 170. savech(foo); 171. } 172. # endif 173. 174. #else /* DGK */ 175. 176. while((foo = readchar()) >= '0' && foo <= '9') 177. multi = 10*multi+foo-'0'; 178. 179. #endif /* DGK */ 180. 181. if(multi) { 182. multi--; 183. save_cm = inline; 184. } 185. inline[0] = foo; 186. inline[1] = 0; 187. if(foo == 'g' || foo == 'G'){ 188. inline[1] = getchar(); 189. #ifdef REDO 190. savech(inline[1]); 191. #endif 192. inline[2] = 0; 193. } 194. if(foo == 'm' || foo == 'M'){ 195. inline[1] = getchar(); 196. #ifdef REDO 197. savech(inline[1]); 198. #endif 199. inline[2] = 0; 200. } 201. clrlin(); 202. return(inline); 203. } 204. 205. char 206. readchar() { 207. register int sym; 208. 209. (void) fflush(stdout); 210. sym = getchar(); 211. if(flags.toplin == 1) 212. flags.toplin = 2; 213. return((char) sym); 214. } 215. #ifdef COM_COMPL 216. /* Read in an extended command - doing command line completion for 217. * when enough character have been entered to make a unique command. 218. * This is just a modified getlin(). -jsb 219. */ 220. get_ext_cmd(bufp) 221. register char *bufp; 222. { 223. register char *obufp = bufp; 224. register int c; 225. int com_index, index; 226. 227. flags.toplin = 2; /* nonempty, no --More-- required */ 228. 229. for(;;) { 230. (void) fflush(stdout); 231. if((c = readchar()) == EOF) { 232. *bufp = 0; 233. return; 234. } 235. if(c == '\033') { 236. *obufp = c; 237. obufp[1] = 0; 238. return; 239. } 240. if(c == erase_char || c == '\b') { 241. if(bufp != obufp) { 242. bufp--; 243. putstr("\b \b"); /* putsym converts \b */ 244. } else bell(); 245. } else if(c == ' ') { 246. *bufp = 0; 247. return; 248. } else if(' ' <= c && c < '\177') { 249. /* avoid isprint() - some people don't have it 250. ' ' is not always a printing char */ 251. *bufp = c; 252. bufp[1] = 0; 253. index = 0; 254. com_index = -1; 255. 256. while(extcmdlist[index].ef_txt != (char *) 0){ 257. if(!strncmp(obufp, extcmdlist[index].ef_txt, 258. strlen(obufp))) 259. if(com_index == -1) /* No matches yet*/ 260. com_index = index; 261. else /* More than 1 match */ 262. com_index = -2; 263. index++; 264. } 265. if(com_index >= 0){ 266. strcpy(obufp, 267. extcmdlist[com_index].ef_txt); 268. /* finish print our string */ 269. putstr(bufp); 270. bufp = obufp; /* reset it */ 271. if(strlen(obufp) < BUFSIZ-1 && 272. strlen(obufp) < COLNO) 273. /* set bufp at the end of our 274. * string 275. */ 276. bufp += strlen(obufp); 277. } else { 278. putstr(bufp); 279. if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) 280. bufp++; 281. } 282. } else if(c == kill_char || c == '\177') { /* Robert Viduya */ 283. /* this test last - @ might be the kill_char */ 284. while(bufp != obufp) { 285. bufp--; 286. putstr("\b \b"); 287. } 288. } else 289. bell(); 290. } 291. 292. } 293. #endif /* COM_COMPL /* */
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