OSDN Git Service

import nethack-3.6.0
[jnethack/source.git] / sys / mac / dprintf.c
1 /* NetHack 3.6  dprintf.c       $NHDT-Date: 1432512798 2015/05/25 00:13:18 $  $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
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
9 KeyDown(unsigned short code)
10 {
11     unsigned char keys[16];
12
13     GetKeys((void *) keys);
14     return ((keys[code >> 3] >> (code & 7)) & 1) != 0;
15 }
16
17 void
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)
32                    && theWindows[WIN_MESSAGE].its_window) {
33             doit = DO_PLINE;
34         }
35
36         if (doit) {
37             va_start(list, format);
38             vsprintf(&buffer[1], format, list);
39             va_end(list);
40
41             if (doit == DO_DEBUGSTR) {
42                 buffer[0] = strlen(&buffer[1]);
43                 DebugStr((uchar *) buffer);
44             } else if (doit == DO_PLINE)
45                 pline("%s", &buffer[1]);
46         }
47     }
48 }