FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

nconf: use function calls instead of ncurses' variables LINES and COLS · fabgithub/linux@e0b4260 · GitHub

Repository navigation

Commit e0b4260

Browse files
authored andcommitted
nconf: use function calls instead of ncurses' variables LINES and COLS
According to the documentation [1], LINES and COLS are initialized by initscr(); it does not say anything about the behavior when windows are resized. Do not rely on the current implementation of ncurses that updates these variables on resize, but use the propper function calls or macros to get window dimensions. The use of the variables in main() was OK, but for the sake of consistency it was modified to use the macro getmaxyx(). [1] ncurses(3X) Signed-off-by: Dirk Gouders <dirk@gouders.net> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> [yann.morin.1998@free.fr: declare 'lines' and 'columns' on a single line] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
1 parent 4f2de3e commit e0b4260

2 files changed

Lines changed: 25 additions & 16 deletions

File tree

‎scripts/kconfig/nconf.c‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,16 @@ static void print_function_line(void)
365365
int i;
366366
int offset = 1;
367367
const int skip = 1;
368+
int lines = getmaxy(stdscr);
368369

369370
for (i = 0; i < function_keys_num; i++) {
370371
(void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]);
371-
mvwprintw(main_window, LINES-3, offset,
372+
mvwprintw(main_window, lines-3, offset,
372373
"%s",
373374
function_keys[i].key_str);
374375
(void) wattrset(main_window, attributes[FUNCTION_TEXT]);
375376
offset += strlen(function_keys[i].key_str);
376-
mvwprintw(main_window, LINES-3,
377+
mvwprintw(main_window, lines-3,
377378
offset, "%s",
378379
function_keys[i].func);
379380
offset += strlen(function_keys[i].func) + skip;
@@ -954,7 +955,7 @@ static void show_menu(const char *prompt, const char *instructions,
954955

955956
clear();
956957
(void) wattrset(main_window, attributes[NORMAL]);
957-
print_in_middle(stdscr, 1, 0, COLS,
958+
print_in_middle(stdscr, 1, 0, getmaxx(stdscr),
958959
menu_backtitle,
959960
attributes[MAIN_HEADING]);
960961

@@ -1455,21 +1456,26 @@ static void conf_save(void)
14551456

14561457
void setup_windows(void)
14571458
{
1459+
int lines, columns;
1460+
1461+
getmaxyx(stdscr, lines, columns);
1462+
14581463
if (main_window != NULL)
14591464
delwin(main_window);
14601465

14611466
/* set up the menu and menu window */
1462-
main_window = newwin(LINES-2, COLS-2, 2, 1);
1467+
main_window = newwin(lines-2, columns-2, 2, 1);
14631468
keypad(main_window, TRUE);
1464-
mwin_max_lines = LINES-7;
1465-
mwin_max_cols = COLS-6;
1469+
mwin_max_lines = lines-7;
1470+
mwin_max_cols = columns-6;
14661471

14671472
/* panels order is from bottom to top */
14681473
new_panel(main_window);
14691474
}
14701475

14711476
int main(int ac, char **av)
14721477
{
1478+
int lines, columns;
14731479
char *mode;
14741480

14751481
setlocale(LC_ALL, "");
@@ -1495,7 +1501,8 @@ int main(int ac, char **av)
14951501
keypad(stdscr, TRUE);
14961502
curs_set(0);
14971503

1498-
if (COLS < 75 || LINES < 20) {
1504+
getmaxyx(stdscr, lines, columns);
1505+
if (columns < 75 || lines < 20) {
14991506
endwin();
15001507
printf("Your terminal should have at "
15011508
"least 20 lines and 75 columns\n");

‎scripts/kconfig/nconf.gui.c‎

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...)
276276

277277
total_width = max(msg_width, btns_width);
278278
/* place dialog in middle of screen */
279-
y = (LINES-(msg_lines+4))/2;
280-
x = (COLS-(total_width+4))/2;
279+
y = (getmaxy(stdscr)-(msg_lines+4))/2;
280+
x = (getmaxx(stdscr)-(total_width+4))/2;
281281

282282

283283
/* create the windows */
@@ -387,8 +387,8 @@ int dialog_inputbox(WINDOW *main_window,
387387
prompt_width = max(prompt_width, strlen(title));
388388

389389
/* place dialog in middle of screen */
390-
y = (LINES-(prompt_lines+4))/2;
391-
x = (COLS-(prompt_width+4))/2;
390+
y = (getmaxy(stdscr)-(prompt_lines+4))/2;
391+
x = (getmaxx(stdscr)-(prompt_width+4))/2;
392392

393393
strncpy(result, init, *result_len);
394394

@@ -545,7 +545,7 @@ void show_scroll_win(WINDOW *main_window,
545545
{
546546
int res;
547547
int total_lines = get_line_no(text);
548-
int x, y;
548+
int x, y, lines, columns;
549549
int start_x = 0, start_y = 0;
550550
int text_lines = 0, text_cols = 0;
551551
int total_cols = 0;
@@ -556,6 +556,8 @@ void show_scroll_win(WINDOW *main_window,
556556
WINDOW *pad;
557557
PANEL *panel;
558558

559+
getmaxyx(stdscr, lines, columns);
560+
559561
/* find the widest line of msg: */
560562
total_lines = get_line_no(text);
561563
for (i = 0; i < total_lines; i++) {
@@ -569,14 +571,14 @@ void show_scroll_win(WINDOW *main_window,
569571
(void) wattrset(pad, attributes[SCROLLWIN_TEXT]);
570572
fill_window(pad, text);
571573

572-
win_lines = min(total_lines+4, LINES-2);
573-
win_cols = min(total_cols+2, COLS-2);
574+
win_lines = min(total_lines+4, lines-2);
575+
win_cols = min(total_cols+2, columns-2);
574576
text_lines = max(win_lines-4, 0);
575577
text_cols = max(win_cols-2, 0);
576578

577579
/* place window in middle of screen */
578-
y = (LINES-win_lines)/2;
579-
x = (COLS-win_cols)/2;
580+
y = (lines-win_lines)/2;
581+
x = (columns-win_cols)/2;
580582

581583
win = newwin(win_lines, win_cols, y, x);
582584
keypad(win, TRUE);

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL