1 /*	SCCS Id: @(#)dprintf.c	3.1	94/01/29		  */
2 /* Copyright (c) Jon W{tte, 1993.				  */
3 /* NetHack may be freely redistributed.  See license for details. */
4 
5 #include "hack.h"
6 #include "macwin.h"
7 
8 static Boolean
KeyDown(unsigned short code)9 KeyDown (unsigned short code) {
10 unsigned char keys [16];
11 
12 	GetKeys ((void *) keys);
13 	return ((keys [code >> 3] >> (code & 7)) & 1) != 0;
14 }
15 
16 
17 void
dprintf(char * format,...)18 dprintf (char *format, ...)
19 {
20 char buffer [500];
21 va_list list;
22 int doit;
23 #define DO_DEBUGSTR 1
24 #define DO_PLINE 2
25 
26 	if (flags.debug) {
27 		doit = 0;
28 		if (macFlags.hasDebugger && KeyDown (0x39)) {					/* Caps Lock */
29 			doit = DO_DEBUGSTR;
30 		} else if (KeyDown (0x3B) && iflags.window_inited &&			/* Control */
31 			(WIN_MESSAGE != -1) && theWindows [WIN_MESSAGE].its_window) {
32 			doit = DO_PLINE;
33 		}
34 
35 		if (doit) {
36 			va_start (list, format);
37 			vsprintf (&buffer [1], format, list);
38 			va_end (list) ;
39 
40 			if (doit == DO_DEBUGSTR) {
41 				buffer [0] = strlen (&buffer [1]);
42 				DebugStr ((uchar *) buffer);
43 			} else if (doit == DO_PLINE)
44 				pline ("%s", &buffer [1]);
45 		}
46 	}
47 }
48