summaryrefslogtreecommitdiffstats
path: root/contrib/dialog/trace.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/dialog/trace.c')
-rw-r--r--contrib/dialog/trace.c111
1 files changed, 23 insertions, 88 deletions
diff --git a/contrib/dialog/trace.c b/contrib/dialog/trace.c
index 50ccfac..a742ae8 100644
--- a/contrib/dialog/trace.c
+++ b/contrib/dialog/trace.c
@@ -1,5 +1,5 @@
/*
- * $Id: trace.c,v 1.20 2011/10/18 10:47:26 tom Exp $
+ * $Id: trace.c,v 1.14 2011/06/21 21:12:56 tom Exp $
*
* trace.c -- implements screen-dump and keystroke-logging
*
@@ -24,10 +24,6 @@
#ifdef HAVE_DLG_TRACE
-#ifdef NEED_WCHAR_H
-#include <wchar.h>
-#endif
-
#include <dlg_keys.h>
#include <time.h>
@@ -58,94 +54,38 @@ dlg_trace_win(WINDOW *win)
if (myFP != 0) {
int y, x;
int j, k;
- WINDOW *top = wgetparent(win);
-
- while (top != 0 && top != stdscr) {
- win = top;
- top = wgetparent(win);
- }
-
- if (win != 0) {
- int rc = getmaxy(win);
- int cc = getmaxx(win);
- chtype ch, c2;
-
- fprintf(myFP, "window %dx%d at %d,%d\n",
- rc, cc, getbegy(win), getbegx(win));
-
- getyx(win, y, x);
- for (j = 0; j < rc; ++j) {
- fprintf(myFP, "%3d:", j);
- for (k = 0; k < cc; ++k) {
-#ifdef USE_WIDE_CURSES
- char buffer[80];
-
- ch = mvwinch(win, j, k) & (A_CHARTEXT | A_ALTCHARSET);
- if (ch & A_ALTCHARSET) {
- c2 = dlg_asciibox(ch);
- if (c2 != 0) {
- ch = c2;
- }
- buffer[0] = (char) ch;
- buffer[1] = '\0';
- } else {
- cchar_t cch;
- wchar_t *uc;
-
- if (win_wch(win, &cch) == ERR
- || (uc = wunctrl(&cch)) == 0
- || uc[1] != 0
- || wcwidth(uc[0]) <= 0) {
- buffer[0] = '.';
- buffer[1] = '\0';
- } else {
- mbstate_t state;
- const wchar_t *ucp = uc;
-
- memset(&state, 0, sizeof(state));
- wcsrtombs(buffer, &ucp, sizeof(buffer), &state);
- k += wcwidth(uc[0]) - 1;
- }
- }
- fputs(buffer, myFP);
-#else
- ch = mvwinch(win, j, k) & (A_CHARTEXT | A_ALTCHARSET);
- c2 = dlg_asciibox(ch);
- if (c2 != 0) {
- ch = c2;
- } else if (unctrl(ch) == 0 || strlen(unctrl(ch)) > 1) {
- ch = '.';
- }
- fputc((int) (ch & 0xff), myFP);
-#endif
+ int rc = getmaxy(win);
+ int cc = getmaxx(win);
+ chtype ch, c2;
+
+ fprintf(myFP, "window %dx%d at %d,%d\n",
+ rc, cc, getbegy(win), getbegx(win));
+
+ getyx(win, y, x);
+ for (j = 0; j < rc; ++j) {
+ fprintf(myFP, "%3d:", j);
+ for (k = 0; k < cc; ++k) {
+ ch = mvwinch(win, j, k) & (A_CHARTEXT | A_ALTCHARSET);
+ c2 = dlg_asciibox(ch);
+ if (c2 != 0) {
+ ch = c2;
+ } else if (unctrl(ch) == 0 || strlen(unctrl(ch)) > 1) {
+ ch = '.';
}
- fputc('\n', myFP);
+ fputc((int) (ch & 0xff), myFP);
}
- wmove(win, y, x);
- fflush(myFP);
+ fputc('\n', myFP);
}
+ wmove(win, y, x);
+ fflush(myFP);
}
}
void
dlg_trace_chr(int ch, int fkey)
{
- static int last_err = 0;
-
- /*
- * Do not bother to trace ERR's indefinitely, since those are usually due
- * to relatively short polling timeouts.
- */
- if (last_err && !fkey && ch == ERR) {
- ++last_err;
- } else if (myFP != 0) {
+ if (myFP != 0) {
const char *fkey_name = "?";
-
- if (last_err) {
- fprintf(myFP, "skipped %d ERR's\n", last_err);
- last_err = 0;
- }
-
if (fkey) {
if (fkey > KEY_MAX || (fkey_name = keyname(fkey)) == 0) {
#define CASE(name) case name: fkey_name = #name; break
@@ -168,10 +108,6 @@ dlg_trace_chr(int ch, int fkey)
CASE(DLGK_FIELD_LAST);
CASE(DLGK_FIELD_NEXT);
CASE(DLGK_FIELD_PREV);
- CASE(DLGK_FORM_FIRST);
- CASE(DLGK_FORM_LAST);
- CASE(DLGK_FORM_NEXT);
- CASE(DLGK_FORM_PREV);
CASE(DLGK_GRID_UP);
CASE(DLGK_GRID_DOWN);
CASE(DLGK_GRID_LEFT);
@@ -189,7 +125,6 @@ dlg_trace_chr(int ch, int fkey)
}
} else if (ch == ERR) {
fkey_name = "ERR";
- last_err = 1;
} else {
fkey_name = unctrl((chtype) ch);
if (fkey_name == 0)
OpenPOWER on IntegriCloud