1 /* NetHack 3.6 wc_trace.c $NHDT-Date: 1433806611 2015/06/08 23:36:51 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
2 /* Copyright (c) Kenneth Lorber, 2012 */
3 /* NetHack may be freely redistributed. See license for details. */
12 FILE *wc_tracelogf
; /* Should be static, but it's just too useful to have
13 * access to this logfile from arbitrary other files. */
14 static unsigned int indent_level
; /* Some winfuncs call other winfuncs, so
15 * we need to support nesting. */
17 static char indentdata
[10] = " ";
21 &indentdata[((indent_level * ISCALE) < (sizeof(indentdata))) \
22 ? ((sizeof(indentdata) - 1) - (indent_level * ISCALE)) \
25 /* for debugging this file */
28 static char buf[50]; \
29 sprintf(buf, "[%s:%d %d]\t", __func__, __LINE__, indent_level); \
33 #define PRE indent_level++
34 #define POST indent_level--
37 struct chain_procs
*nprocs
;
44 trace_procs_chain(cmd
, n
, me
, nextprocs
, nextdata
)
52 case WINCHAIN_ALLOC
: {
53 struct trace_data
*tdp
= calloc(1, sizeof(struct trace_data
));
58 struct trace_data
*tdp
= me
;
59 tdp
->nprocs
= nextprocs
;
60 tdp
->ndata
= nextdata
;
64 raw_printf("trace_procs_chain: bad cmd\n");
75 /* processors shouldn't need this test, but just in case */
79 sprintf(fname
, "%s/tlog.%d", HACKDIR
, getpid());
80 wc_tracelogf
= fopen(fname
, "w");
81 if (wc_tracelogf
== NULL
) {
82 fprintf(stderr
, "Can't open trace log file %s: %s\n", fname
,
86 setvbuf(wc_tracelogf
, (char *) NULL
, _IONBF
, 0);
87 fprintf(wc_tracelogf
, "Trace log started for pid %d\n", getpid());
97 trace_init_nhwindows(vp
, argcp
, argv
)
102 struct trace_data
*tdp
= vp
;
104 fprintf(wc_tracelogf
, "%sinit_nhwindows(%d,*)\n", INDENT
, *argcp
);
107 (*tdp
->nprocs
->win_init_nhwindows
)(tdp
->ndata
, argcp
, argv
);
112 trace_player_selection(vp
)
115 struct trace_data
*tdp
= vp
;
116 fprintf(wc_tracelogf
, "%splayer_selection()\n", INDENT
);
119 (*tdp
->nprocs
->win_player_selection
)(tdp
->ndata
);
127 struct trace_data
*tdp
= vp
;
128 fprintf(wc_tracelogf
, "%saskname()\n", INDENT
);
131 (*tdp
->nprocs
->win_askname
)(tdp
->ndata
);
136 trace_get_nh_event(vp
)
139 struct trace_data
*tdp
= vp
;
140 fprintf(wc_tracelogf
, "%sget_nh_event()\n", INDENT
);
143 (*tdp
->nprocs
->win_get_nh_event
)(tdp
->ndata
);
148 trace_exit_nhwindows(vp
, str
)
152 struct trace_data
*tdp
= vp
;
153 fprintf(wc_tracelogf
, "%sexit_nhwindows(%s)\n", INDENT
, str
);
156 (*tdp
->nprocs
->win_exit_nhwindows
)(tdp
->ndata
, str
);
161 trace_suspend_nhwindows(vp
, str
)
165 struct trace_data
*tdp
= vp
;
166 fprintf(wc_tracelogf
, "%ssuspend_nhwindows(%s)\n", INDENT
, str
);
169 (*tdp
->nprocs
->win_suspend_nhwindows
)(tdp
->ndata
, str
);
174 trace_resume_nhwindows(vp
)
177 struct trace_data
*tdp
= vp
;
178 fprintf(wc_tracelogf
, "%sresume_nhwindows()\n", INDENT
);
181 (*tdp
->nprocs
->win_resume_nhwindows
)(tdp
->ndata
);
204 sprintf(b
, "(%d)", type
);
211 trace_create_nhwindow(vp
, type
)
215 struct trace_data
*tdp
= vp
;
216 const char *typestring
= NHWname(type
);
219 fprintf(wc_tracelogf
, "%screate_nhwindow(%s)\n", INDENT
, typestring
);
222 rv
= (*tdp
->nprocs
->win_create_nhwindow
)(tdp
->ndata
, type
);
225 fprintf(wc_tracelogf
, "%s=> %d\n", INDENT
, rv
);
230 trace_clear_nhwindow(vp
, window
)
234 struct trace_data
*tdp
= vp
;
236 fprintf(wc_tracelogf
, "%sclear_nhwindow(%d)\n", INDENT
, window
);
239 (*tdp
->nprocs
->win_clear_nhwindow
)(tdp
->ndata
, window
);
244 trace_display_nhwindow(vp
, window
, blocking
)
249 struct trace_data
*tdp
= vp
;
251 fprintf(wc_tracelogf
, "%sdisplay_nhwindow(%d, %d)\n", INDENT
, window
,
255 (*tdp
->nprocs
->win_display_nhwindow
)(tdp
->ndata
, window
, blocking
);
260 trace_destroy_nhwindow(vp
, window
)
264 struct trace_data
*tdp
= vp
;
266 fprintf(wc_tracelogf
, "%sdestroy_nhwindow(%d)\n", INDENT
, window
);
269 (*tdp
->nprocs
->win_destroy_nhwindow
)(tdp
->ndata
, window
);
274 trace_curs(vp
, window
, x
, y
)
280 struct trace_data
*tdp
= vp
;
282 fprintf(wc_tracelogf
, "%scurs(%d, %d, %d)\n", INDENT
, window
, x
, y
);
285 (*tdp
->nprocs
->win_curs
)(tdp
->ndata
, window
, x
, y
);
290 trace_putstr(vp
, window
, attr
, str
)
296 struct trace_data
*tdp
= vp
;
299 fprintf(wc_tracelogf
, "%sputstr(%d, %d, '%s'(%d))\n", INDENT
, window
,
300 attr
, str
, (int) strlen(str
));
302 fprintf(wc_tracelogf
, "%sputstr(%d, %d, NULL)\n", INDENT
, window
,
307 (*tdp
->nprocs
->win_putstr
)(tdp
->ndata
, window
, attr
, str
);
312 trace_putmixed(vp
, window
, attr
, str
)
318 struct trace_data
*tdp
= vp
;
321 fprintf(wc_tracelogf
, "%sputmixed(%d, %d, '%s'(%d))\n", INDENT
,
322 window
, attr
, str
, (int) strlen(str
));
324 fprintf(wc_tracelogf
, "%sputmixed(%d, %d, NULL)\n", INDENT
, window
,
329 (*tdp
->nprocs
->win_putmixed
)(tdp
->ndata
, window
, attr
, str
);
334 trace_display_file(vp
, fname
, complain
)
339 struct trace_data
*tdp
= vp
;
342 fprintf(wc_tracelogf
, "%sdisplay_file('%s'(%d), %d)\n", INDENT
, fname
,
343 (int) strlen(fname
), complain
);
345 fprintf(wc_tracelogf
, "%sdisplay_file(NULL, %d)\n", INDENT
, complain
);
349 (*tdp
->nprocs
->win_display_file
)(tdp
->ndata
, fname
, complain
);
354 trace_start_menu(vp
, window
)
358 struct trace_data
*tdp
= vp
;
360 fprintf(wc_tracelogf
, "%sstart_menu(%d)\n", INDENT
, window
);
363 (*tdp
->nprocs
->win_start_menu
)(tdp
->ndata
, window
);
368 trace_add_menu(vp
, window
, glyph
, identifier
, ch
, gch
, attr
, str
, preselected
)
370 winid window
; /* window to use, must be of type NHW_MENU */
371 int glyph
; /* glyph to display with item (unused) */
372 const anything
*identifier
; /* what to return if selected */
373 char ch
; /* keyboard accelerator (0 = pick our own) */
374 char gch
; /* group accelerator (0 = no group) */
375 int attr
; /* attribute for string (like tty_putstr()) */
376 const char *str
; /* menu string */
377 boolean preselected
; /* item is marked as selected */
379 struct trace_data
*tdp
= vp
;
385 sprintf(buf_ch
, "'%c'(%d)", ch
, ch
);
387 sprintf(buf_ch
, "(%d)", ch
);
391 sprintf(buf_gch
, "'%c'(%d)", gch
, gch
);
393 sprintf(buf_gch
, "(%d)", gch
);
397 fprintf(wc_tracelogf
,
398 "%sadd_menu(%d, %d, %p, %s, %s, %d, '%s'(%d), %d)\n", INDENT
,
399 window
, glyph
, (void *) identifier
, buf_ch
, buf_gch
, attr
,
400 str
, (int) strlen(str
), preselected
);
402 fprintf(wc_tracelogf
,
403 "%sadd_menu(%d, %d, %p, %s, %s, %d, NULL, %d)\n", INDENT
,
404 window
, glyph
, (void *) identifier
, buf_ch
, buf_gch
, attr
,
409 (*tdp
->nprocs
->win_add_menu
)(tdp
->ndata
, window
, glyph
, identifier
, ch
,
410 gch
, attr
, str
, preselected
);
415 trace_end_menu(vp
, window
, prompt
)
420 struct trace_data
*tdp
= vp
;
423 fprintf(wc_tracelogf
, "%send_menu(%d, '%s'(%d))\n", INDENT
, window
,
424 prompt
, (int) strlen(prompt
));
426 fprintf(wc_tracelogf
, "%send_menu(%d, NULL)\n", INDENT
, window
);
430 (*tdp
->nprocs
->win_end_menu
)(tdp
->ndata
, window
, prompt
);
435 trace_select_menu(vp
, window
, how
, menu_list
)
439 menu_item
**menu_list
;
441 struct trace_data
*tdp
= vp
;
444 fprintf(wc_tracelogf
, "%sselect_menu(%d, %d, %p)\n", INDENT
, window
, how
,
448 rv
= (*tdp
->nprocs
->win_select_menu
)(tdp
->ndata
, window
, how
,
452 fprintf(wc_tracelogf
, "%s=> %d\n", INDENT
, rv
);
457 trace_message_menu(vp
, let
, how
, mesg
)
463 struct trace_data
*tdp
= vp
;
468 sprintf(buf_let
, "'%c'(%d)", let
, let
);
470 sprintf(buf_let
, "(%d)", let
);
474 fprintf(wc_tracelogf
, "%smessage_menu(%s, %d, '%s'(%d))\n", INDENT
,
475 buf_let
, how
, mesg
, (int) strlen(mesg
));
477 fprintf(wc_tracelogf
, "%smessage_menu(%s, %d, NULL)\n", INDENT
,
482 rv
= (*tdp
->nprocs
->win_message_menu
)(tdp
->ndata
, let
, how
, mesg
);
486 sprintf(buf_let
, "'%c'(%d)", rv
, rv
);
488 sprintf(buf_let
, "(%d)", rv
);
490 fprintf(wc_tracelogf
, "%s=> %s\n", INDENT
, buf_let
);
496 trace_update_inventory(vp
)
499 struct trace_data
*tdp
= vp
;
501 fprintf(wc_tracelogf
, "%supdate_inventory()\n", INDENT
);
504 (*tdp
->nprocs
->win_update_inventory
)(tdp
->ndata
);
512 struct trace_data
*tdp
= vp
;
514 fprintf(wc_tracelogf
, "%smark_synch()\n", INDENT
);
517 (*tdp
->nprocs
->win_mark_synch
)(tdp
->ndata
);
525 struct trace_data
*tdp
= vp
;
527 fprintf(wc_tracelogf
, "%swait_synch()\n", INDENT
);
530 (*tdp
->nprocs
->win_wait_synch
)(tdp
->ndata
);
536 trace_cliparound(vp
, x
, y
)
541 struct trace_data
*tdp
= vp
;
543 fprintf(wc_tracelogf
, "%scliparound(%d, %d)\n", INDENT
, x
, y
);
546 (*tdp
->nprocs
->win_cliparound
)(tdp
->ndata
, x
, y
);
553 trace_update_positionbar(vp
, posbar
)
557 struct trace_data
*tdp
= vp
;
560 fprintf(wc_tracelogf
, "%supdate_positionbar('%s'(%d))\n", INDENT
,
561 posbar
, (int) strlen(posbar
));
563 fprintf(wc_tracelogf
, "%supdate_positionbar(NULL)\n");
566 (*tdp
->nprocs
->win_update_positionbar
)(tdp
->ndata
, posbar
);
571 /* XXX can we decode the glyph in a meaningful way? see mapglyph()?
574 trace_print_glyph(vp
, window
, x
, y
, glyph
, bkglyph
)
580 struct trace_data
*tdp
= vp
;
582 fprintf(wc_tracelogf
, "%sprint_glyph(%d, %d, %d, %d, %d)\n", INDENT
, window
,
583 x
, y
, glyph
, bkglyph
);
586 (*tdp
->nprocs
->win_print_glyph
)(tdp
->ndata
, window
, x
, y
, glyph
, bkglyph
);
591 trace_raw_print(vp
, str
)
595 struct trace_data
*tdp
= vp
;
598 fprintf(wc_tracelogf
, "%sraw_print('%s'(%d))\n", INDENT
, str
,
601 fprintf(wc_tracelogf
, "%sraw_print(NULL)\n", INDENT
);
605 (*tdp
->nprocs
->win_raw_print
)(tdp
->ndata
, str
);
610 trace_raw_print_bold(vp
, str
)
614 struct trace_data
*tdp
= vp
;
617 fprintf(wc_tracelogf
, "%sraw_print_bold('%s'(%d))\n", INDENT
, str
,
620 fprintf(wc_tracelogf
, "%sraw_print_bold(NULL)\n", INDENT
);
624 (*tdp
->nprocs
->win_raw_print_bold
)(tdp
->ndata
, str
);
632 struct trace_data
*tdp
= vp
;
636 fprintf(wc_tracelogf
, "%snhgetch()\n", INDENT
);
639 rv
= (*tdp
->nprocs
->win_nhgetch
)(tdp
->ndata
);
642 if (rv
> 0 && rv
< 256 && isprint(rv
)) {
643 sprintf(buf
, "'%c'(%d)", rv
, rv
);
645 sprintf(buf
, "(%d)", rv
);
647 fprintf(wc_tracelogf
, "%s=> %s\n", INDENT
, buf
);
653 trace_nh_poskey(vp
, x
, y
, mod
)
659 struct trace_data
*tdp
= vp
;
663 fprintf(wc_tracelogf
, "%snh_poskey(%d, %d, %d)\n", INDENT
, *x
, *y
, *mod
);
666 rv
= (*tdp
->nprocs
->win_nh_poskey
)(tdp
->ndata
, x
, y
, mod
);
668 if (rv
> 0 && rv
< 256 && isprint(rv
)) {
669 sprintf(buf
, "'%c'(%d)", rv
, rv
);
671 sprintf(buf
, "(%d)", rv
);
673 fprintf(wc_tracelogf
, "%s=> %s (%d, %d, %d)\n", INDENT
, buf
, *x
, *y
,
683 struct trace_data
*tdp
= vp
;
685 fprintf(wc_tracelogf
, "%snhbell()\n", INDENT
);
688 (*tdp
->nprocs
->win_nhbell
)(tdp
->ndata
);
693 trace_doprev_message(vp
)
696 struct trace_data
*tdp
= vp
;
699 fprintf(wc_tracelogf
, "%sdoprev_message()\n", INDENT
);
702 rv
= (*tdp
->nprocs
->win_doprev_message
)(tdp
->ndata
);
705 fprintf(wc_tracelogf
, "%s=> %d\n", INDENT
, rv
);
711 trace_yn_function(vp
, query
, resp
, def
)
713 const char *query
, *resp
;
716 struct trace_data
*tdp
= vp
;
721 fprintf(wc_tracelogf
, "%syn_function('%s'(%d), ", INDENT
, query
,
722 (int) strlen(query
));
724 fprintf(wc_tracelogf
, "%syn_function(NULL, ", INDENT
);
728 fprintf(wc_tracelogf
, "'%s'(%d), ", resp
, (int) strlen(resp
));
730 fprintf(wc_tracelogf
, "NULL, ");
734 sprintf(buf
, "'%c'(%d)", def
, def
);
736 sprintf(buf
, "(%d)", def
);
739 fprintf(wc_tracelogf
, "%s)\n", buf
);
742 rv
= (*tdp
->nprocs
->win_yn_function
)(tdp
->ndata
, query
, resp
, def
);
746 sprintf(buf
, "'%c'(%d)", rv
, rv
);
748 sprintf(buf
, "(%d)", rv
);
751 fprintf(wc_tracelogf
, "%s=> %s\n", INDENT
, buf
);
757 trace_getlin(vp
, query
, bufp
)
762 struct trace_data
*tdp
= vp
;
765 fprintf(wc_tracelogf
, "%sgetlin('%s'(%d), ", INDENT
, query
,
766 (int) strlen(query
));
768 fprintf(wc_tracelogf
, "%sgetlin(NULL, ", INDENT
);
772 fprintf(wc_tracelogf
, "%p)\n", bufp
);
774 fprintf(wc_tracelogf
, "NULL)\n");
778 (*tdp
->nprocs
->win_getlin
)(tdp
->ndata
, query
, bufp
);
783 trace_get_ext_cmd(vp
)
786 struct trace_data
*tdp
= vp
;
790 /* this is ugly, but the size isn't exposed */
791 const struct ext_func_tab
*efp
;
792 for (efp
= extcmdlist
; efp
->ef_txt
; efp
++)
795 fprintf(wc_tracelogf
, "%sget_ext_cmd()\n", INDENT
);
798 rv
= (*tdp
->nprocs
->win_get_ext_cmd
)(tdp
->ndata
);
801 if (rv
< 0 || rv
>= ecl_size
) {
802 fprintf(wc_tracelogf
, "%s=> (%d)\n", INDENT
, rv
);
804 fprintf(wc_tracelogf
, "%s=> %d/%s\n", INDENT
, rv
,
805 extcmdlist
[rv
].ef_txt
);
812 trace_number_pad(vp
, state
)
816 struct trace_data
*tdp
= vp
;
818 fprintf(wc_tracelogf
, "%snumber_pad(%d)\n", INDENT
, state
);
821 (*tdp
->nprocs
->win_number_pad
)(tdp
->ndata
, state
);
826 trace_delay_output(vp
)
829 struct trace_data
*tdp
= vp
;
831 fprintf(wc_tracelogf
, "%sdelay_output()\n", INDENT
);
834 (*tdp
->nprocs
->win_delay_output
)(tdp
->ndata
);
840 trace_change_color(vp
, color
, value
, reverse
)
846 struct trace_data
*tdp
= vp
;
848 fprintf(wc_tracelogf
, "%schange_color(%d, $%lx, %d)\n", INDENT
, color
,
852 (*tdp
->nprocs
->win_change_color
)(tdp
->ndata
, color
, value
, reverse
);
858 trace_change_background(vp
, bw
)
862 struct trace_data
*tdp
= vp
;
864 fprintf(wc_tracelogf
, "%schange_background(%d)\n", INDENT
, bw
);
867 (*tdp
->nprocs
->win_change_background
)(tdp
->ndata
, bw
);
872 trace_set_font_name(vp
, window
, font
)
877 struct trace_data
*tdp
= vp
;
881 fprintf(wc_tracelogf
, "%sset_font_name(%d, '%s'(%d))\n", INDENT
,
882 window
, font
, (int) (strlen(font
)));
884 fprintf(wc_tracelogf
, "%sset_font_name(%d, NULL)\n", INDENT
, window
);
888 rv
= (*tdp
->nprocs
->win_set_font_name
)(tdp
->ndata
, window
, font
);
891 fprintf(wc_tracelogf
, "%s=> %d\n", INDENT
, rv
);
898 trace_get_color_string(vp
)
901 struct trace_data
*tdp
= vp
;
904 fprintf(wc_tracelogf
, "%sget_color_string()\n");
907 rv
= (*tdp
->nprocs
->win_get_color_string
)(tdp
->ndata
);
911 fprintf(wc_tracelogf
, "%s=> '%s'(%d)\n", INDENT
, rv
,
914 fprintf(wc_tracelogf
, "%s=> NULL\n");
922 /* other defs that really should go away (they're tty specific) */
924 trace_start_screen(vp
)
927 struct trace_data
*tdp
= vp
;
929 fprintf(wc_tracelogf
, "%sstart_screen()\n", INDENT
);
932 (*tdp
->nprocs
->win_start_screen
)(tdp
->ndata
);
940 struct trace_data
*tdp
= vp
;
942 fprintf(wc_tracelogf
, "%send_screen()\n", INDENT
);
945 (*tdp
->nprocs
->win_end_screen
)(tdp
->ndata
);
950 trace_outrip(vp
, tmpwin
, how
, when
)
956 struct trace_data
*tdp
= vp
;
958 fprintf(wc_tracelogf
, "%soutrip(%d, %d, %ld)\n", INDENT
, (int) tmpwin
,
962 (*tdp
->nprocs
->win_outrip
)(tdp
->ndata
, tmpwin
, how
, when
);
967 trace_preference_update(vp
, pref
)
971 struct trace_data
*tdp
= vp
;
974 fprintf(wc_tracelogf
, "%spreference_update('%s'(%d))\n", INDENT
, pref
,
977 fprintf(wc_tracelogf
, "%spreference_update(NULL)\n", INDENT
);
981 (*tdp
->nprocs
->win_preference_update
)(tdp
->ndata
, pref
);
986 trace_getmsghistory(vp
, init
)
990 struct trace_data
*tdp
= vp
;
993 fprintf(wc_tracelogf
, "%sgetmsghistory(%d)\n", INDENT
, init
);
996 rv
= (*tdp
->nprocs
->win_getmsghistory
)(tdp
->ndata
, init
);
1000 fprintf(wc_tracelogf
, "%s=> '%s'(%d)\n", INDENT
, rv
,
1003 fprintf(wc_tracelogf
, "%s=> NULL\n", INDENT
);
1010 trace_putmsghistory(vp
, msg
, is_restoring
)
1013 boolean is_restoring
;
1015 struct trace_data
*tdp
= vp
;
1018 fprintf(wc_tracelogf
, "%sputmsghistory('%s'(%d), %d)\n", INDENT
, msg
,
1019 (int) strlen(msg
), is_restoring
);
1021 fprintf(wc_tracelogf
, "%sputmghistory(NULL, %d)\n", INDENT
,
1026 (*tdp
->nprocs
->win_putmsghistory
)(tdp
->ndata
, msg
, is_restoring
);
1030 #ifdef STATUS_VIA_WINDOWPORT
1032 trace_status_init(vp
)
1035 struct trace_data
*tdp
= vp
;
1037 fprintf(wc_tracelogf
, "%sstatus_init()\n", INDENT
);
1040 (*tdp
->nprocs
->win_status_init
)(tdp
->ndata
);
1045 trace_status_finish(vp
)
1048 struct trace_data
*tdp
= vp
;
1050 fprintf(wc_tracelogf
, "%sstatus_finish()\n", INDENT
);
1053 (*tdp
->nprocs
->win_status_finish
)(tdp
->ndata
);
1058 trace_status_enablefield(vp
, fieldidx
, nm
, fmt
, enable
)
1065 struct trace_data
*tdp
= vp
;
1067 fprintf(wc_tracelogf
, "%sstatus_enablefield(%d, ", INDENT
, fieldidx
);
1069 fprintf(wc_tracelogf
, "'%s'(%d), ", nm
, (int) strlen(nm
));
1071 fprintf(wc_tracelogf
, "NULL, ");
1074 fprintf(wc_tracelogf
, "'%s'(%d), ", fmt
, (int) strlen(fmt
));
1076 fprintf(wc_tracelogf
, "NULL, ");
1078 fprintf(wc_tracelogf
, "%d)\n", enable
);
1081 (*tdp
->nprocs
->win_status_enablefield
)(tdp
->ndata
, fieldidx
, nm
, fmt
,
1087 trace_status_update(vp
, idx
, ptr
, chg
, percent
)
1089 int idx
, chg
, percent
;
1092 struct trace_data
*tdp
= vp
;
1094 fprintf(wc_tracelogf
, "%sstatus_update(%d, %p, %d, %d)\n", INDENT
, idx
,
1098 (*tdp
->nprocs
->win_status_update
)(tdp
->ndata
, idx
, ptr
, chg
, percent
);
1102 #ifdef STATUS_HILITES
1104 trace_status_threshold(vp
, fldidx
, thresholdtype
, threshold
, behavior
, under
,
1107 int fldidx
, thresholdtype
;
1108 int behavior
, under
, over
;
1111 struct trace_data
*tdp
= vp
;
1113 /* XXX how do we print an anything? We don't. */
1114 fprintf(wc_tracelogf
, "%sstatus_threshold(%d, %d, -, %d, %d, %d)\n",
1115 INDENT
, fldidx
, thresholdtype
, behavior
, under
, over
);
1118 (*tdp
->nprocs
->win_status_threshold
)(tdp
->ndata
, fldidx
, thresholdtype
,
1119 threshold
, behavior
, under
, over
);
1126 trace_can_suspend(vp
)
1129 struct trace_data
*tdp
= vp
;
1132 fprintf(wc_tracelogf
, "%scan_suspend()\n", INDENT
);
1135 rv
= (*tdp
->nprocs
->win_can_suspend
)(tdp
->ndata
);
1138 fprintf(wc_tracelogf
, "%s=> %d\n", INDENT
, rv
);
1143 struct chain_procs trace_procs
= {
1144 "+trace", 0, /* wincap */
1147 XXX problem - the above need to come from the real window port, possibly
1148 modified. May need to do something to call an additional init fn later
1149 or if this is the only place like this the choose_windows fn can do the
1151 (but not if the value can be modified by the stack?) TBD
1153 trace_init_nhwindows
,
1154 trace_player_selection
, trace_askname
, trace_get_nh_event
,
1155 trace_exit_nhwindows
, trace_suspend_nhwindows
, trace_resume_nhwindows
,
1156 trace_create_nhwindow
, trace_clear_nhwindow
, trace_display_nhwindow
,
1157 trace_destroy_nhwindow
, trace_curs
, trace_putstr
, trace_putmixed
,
1158 trace_display_file
, trace_start_menu
, trace_add_menu
, trace_end_menu
,
1159 trace_select_menu
, trace_message_menu
, trace_update_inventory
,
1160 trace_mark_synch
, trace_wait_synch
,
1165 trace_update_positionbar
,
1167 trace_print_glyph
, trace_raw_print
, trace_raw_print_bold
, trace_nhgetch
,
1168 trace_nh_poskey
, trace_nhbell
, trace_doprev_message
, trace_yn_function
,
1169 trace_getlin
, trace_get_ext_cmd
, trace_number_pad
, trace_delay_output
,
1173 trace_change_background
, trace_set_font_name
,
1175 trace_get_color_string
,
1178 trace_start_screen
, trace_end_screen
,
1180 trace_outrip
, trace_preference_update
, trace_getmsghistory
,
1181 trace_putmsghistory
,
1182 #ifdef STATUS_VIA_WINDOWPORT
1183 trace_status_init
, trace_status_finish
, trace_status_enablefield
,
1184 trace_status_update
,
1185 #ifdef STATUS_HILITES
1186 trace_status_threshold
,