/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
Thomas E. Dickey (beginning revision 1.27 in 1996).
-$Id: ncurses.c,v 1.359 2010/05/01 22:39:06 tom Exp $
+$Id: ncurses.c,v 1.370 2011/09/17 21:57:49 tom Exp $
***************************************************************************/
#endif
#endif /* ACS_S3 */
+#ifndef WACS_S3
#ifdef CURSES_WACS_ARRAY
#define WACS_S3 (&(CURSES_WACS_ARRAY['p'])) /* scan line 3 */
#define WACS_S7 (&(CURSES_WACS_ARRAY['r'])) /* scan line 7 */
#define WACS_NEQUAL (&(CURSES_WACS_ARRAY['|'])) /* not equal */
#define WACS_STERLING (&(CURSES_WACS_ARRAY['}'])) /* UK pound sign */
#endif
+#endif
#endif
#ifdef __MINGW32__
system("cmd.exe");
#else
- system("sh");
+ IGNORE_RC(system("sh"));
#endif
if (message)
addstr("returned from shellout.\n");
wclrtoeol(win);
}
-#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE
+#if defined(KEY_RESIZE) && HAVE_WRESIZE
typedef struct {
WINDOW *text;
WINDOW *frame;
winstack[level].frame = box_win;
}
-#if USE_SOFTKEYS && (NCURSES_VERSION_PATCH < 20071229) && NCURSES_EXT_FUNCS
+#if USE_SOFTKEYS && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH < 20071229) && NCURSES_EXT_FUNCS
static void
slk_repaint(void)
{
#define slk_repaint() /* nothing */
#endif
+#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE
/*
* For wgetch_test(), we create pairs of windows - one for a box, one for text.
* Resize both and paint the box in the parent.
}
doupdate();
}
+#endif /* resize_boxes */
#else
#define forget_boxes() /* nothing */
#define remember_boxes(level,text,frame) /* nothing */
if (!(termattrs() & test)) {
printw(" (N/A)");
} else {
- if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
+ if (ncv > 0 && stdscr && (getbkgd(stdscr) & A_COLOR)) {
static const chtype table[] =
{
A_STANDOUT,
if (init_pair(pair, fg, bg) == ERR) {
beep();
} else {
- normal |= COLOR_PAIR(pair);
+ normal |= (chtype) COLOR_PAIR(pair);
}
}
if (tx >= 0) {
if (init_pair(pair, tx, bg) == ERR) {
beep();
} else {
- extras |= COLOR_PAIR(pair);
+ extras |= (chtype) COLOR_PAIR(pair);
}
}
}
add_wch(&ch);
}
} else {
- attr_t old_attr;
- short old_pair;
+ attr_t old_attr = 0;
+ short old_pair = 0;
(void) attr_get(&old_attr, &old_pair, 0);
(void) attr_set(attr, pair, 0);
for (j = 0; j < SIZEOF(attrs_to_test); ++j) {
row = wide_show_attr(row, n, j == k,
- ac |
- attrs_to_test[j].attr |
- attrs_to_test[k].attr,
+ ((attr_t) ac |
+ attrs_to_test[j].attr |
+ attrs_to_test[k].attr),
extras,
attrs_to_test[j].name);
}
(i == current ? '>' : ' '),
(i < (int) SIZEOF(the_color_names)
? the_color_names[i] : numeric));
- (void) attrset(COLOR_PAIR(i));
+ (void) attrset((attr_t) COLOR_PAIR(i));
addstr(" ");
(void) attrset(A_NORMAL);
case 'm':
endwin();
main_menu(FALSE);
+ for (i = 0; i < max_colors; i++)
+ init_pair((short) i, (short) COLOR_WHITE, (short) i);
refresh();
break;
endwin();
}
-/****************************************************************************
- *
- * Soft-key label test
- *
- ****************************************************************************/
-
-#if USE_SOFTKEYS
-
-#define SLK_HELP 17
-#define SLK_WORK (SLK_HELP + 3)
-
-static void
-slk_help(void)
-{
- static const char *table[] =
- {
- "Available commands are:"
- ,""
- ,"^L -- repaint this message and activate soft keys"
- ,"a/d -- activate/disable soft keys"
- ,"c -- set centered format for labels"
- ,"l -- set left-justified format for labels"
- ,"r -- set right-justified format for labels"
- ,"[12345678] -- set label; labels are numbered 1 through 8"
- ,"e -- erase stdscr (should not erase labels)"
- ,"s -- test scrolling of shortened screen"
- ,"v/V -- cycle through video attributes"
-#if HAVE_SLK_COLOR
- ,"F/f/B/b -- cycle through foreground/background colors"
-#endif
- ,"ESC -- return to main menu"
- ,""
- ,"Note: if activating the soft keys causes your terminal to scroll up"
- ,"one line, your terminal auto-scrolls when anything is written to the"
- ,"last screen position. The ncurses code does not yet handle this"
- ,"gracefully."
- };
- unsigned j;
-
- move(2, 0);
- for (j = 0; j < SIZEOF(table); ++j) {
- P(table[j]);
- }
- refresh();
-}
-
/****************************************************************************
*
* Alternate character-set stuff
return result;
}
+/****************************************************************************
+ *
+ * Soft-key label test
+ *
+ ****************************************************************************/
+
+#if USE_SOFTKEYS
+
+#define SLK_HELP 17
+#define SLK_WORK (SLK_HELP + 3)
+
+static void
+slk_help(void)
+{
+ static const char *table[] =
+ {
+ "Available commands are:"
+ ,""
+ ,"^L -- repaint this message and activate soft keys"
+ ,"a/d -- activate/disable soft keys"
+ ,"c -- set centered format for labels"
+ ,"l -- set left-justified format for labels"
+ ,"r -- set right-justified format for labels"
+ ,"[12345678] -- set label; labels are numbered 1 through 8"
+ ,"e -- erase stdscr (should not erase labels)"
+ ,"s -- test scrolling of shortened screen"
+ ,"v/V -- cycle through video attributes"
+#if HAVE_SLK_COLOR
+ ,"F/f/B/b -- cycle through foreground/background colors"
+#endif
+ ,"ESC -- return to main menu"
+ ,""
+ ,"Note: if activating the soft keys causes your terminal to scroll up"
+ ,"one line, your terminal auto-scrolls when anything is written to the"
+ ,"last screen position. The ncurses code does not yet handle this"
+ ,"gracefully."
+ };
+ unsigned j;
+
+ move(2, 0);
+ for (j = 0; j < SIZEOF(table); ++j) {
+ P(table[j]);
+ }
+ refresh();
+}
+
#if HAVE_SLK_COLOR
static void
-call_slk_color(short fg, short bg)
+call_slk_color(int fg, int bg)
{
- init_pair(1, bg, fg);
+ init_pair(1, (short) bg, (short) fg);
slk_color(1);
MvPrintw(SLK_WORK, 0, "Colors %d/%d\n", fg, bg);
clrtoeol();
show_box_chars(int repeat, attr_t attr, short pair)
{
(void) repeat;
- attr |= COLOR_PAIR(pair);
+
+ attr |= (attr_t) COLOR_PAIR(pair);
erase();
attron(A_BOLD);
{
int n;
-#define BOTH(name) #name, colored_chtype(name, attr, pair)
+#define BOTH(name) #name, colored_chtype(name, attr, (chtype) pair)
erase();
attron(A_BOLD);
* Mark them with reverse-video to make them simpler to find on
* the display.
*/
- if (wcwidth(code) == 0)
- addch(space | (A_REVERSE ^ attr) | COLOR_PAIR(pair));
+ if (wcwidth(code) == 0) {
+ addch((chtype) space |
+ (A_REVERSE ^ attr) |
+ (attr_t) COLOR_PAIR(pair));
+ }
/*
* This could use add_wch(), but is done for comparison with the
* normal 'f' test (and to make a test-case for echo_wchar()).
* The repeat-count may make text wrap - avoid that.
*/
getyx(stdscr, y, x);
+ (void) y;
if (x >= col + (COLS / 2) - 2)
break;
} while (--count > 0);
neww->next = current ? current->next : 0;
neww->last = current;
- neww->last->next = neww;
- neww->next->last = neww;
+ if (neww->last != 0)
+ neww->last->next = neww;
+ if (neww->next != 0)
+ neww->next->last = neww;
neww->wind = getwin(fp);
short bg = color;
init_pair(color, fg, bg);
- wbkgdset(win, (chtype) (COLOR_PAIR(color) | ' '));
+ wbkgdset(win, (attr_t) (COLOR_PAIR(color) | ' '));
} else {
wbkgdset(win, A_BOLD | ' ');
}
doupdate();
#if HAVE_GETTIMEOFDAY
+#define TIMEVAL2S(data) ((double) data.tv_sec + ((double) data.tv_usec / 1.0e6))
if (timing) {
double elapsed;
gettimeofday(&after, 0);
- elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
- - (before.tv_sec + before.tv_usec / 1.0e6);
+ elapsed = (TIMEVAL2S(after) - TIMEVAL2S(before));
move(LINES - 1, COLS - 12);
printw("Secs: %2.03f", elapsed);
refresh();
if (f) {
set_field_buffer(f, 0, label);
- set_field_opts(f, (int) (field_opts(f) & ~O_ACTIVE));
+ set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
}
return (f);
}
break;
case 2:
init_pair(cpair, COLOR_BLUE, COLOR_WHITE);
- (void) wattrset(win, COLOR_PAIR(cpair) | A_NORMAL);
+ (void) wattrset(win, (attr_t) COLOR_PAIR(cpair) | A_NORMAL);
break;
case 3:
init_pair(cpair, COLOR_WHITE, COLOR_BLUE);
- (void) wattrset(win, COLOR_PAIR(cpair) | A_BOLD);
+ (void) wattrset(win, (attr_t) COLOR_PAIR(cpair) | A_BOLD);
break;
}
}
case 'e':
slk_test();
break;
-#endif
#if USE_WIDEC_SUPPORT
case 'E':
wide_slk_test();
break;
#endif
+#endif
+
case 'f':
acs_display();
break;
break;
#if USE_LIBPANEL
case 's':
- nap_msec = atol(optarg);
+ nap_msec = (int) atol(optarg);
break;
#endif
#ifdef TRACE
use_default_colors();
min_colors = -1;
}
-#if NCURSES_VERSION_PATCH >= 20000708
+#if HAVE_ASSUME_DEFAULT_COLORS
if (assumed_colors)
assume_default_colors(default_fg, default_bg);
#endif