1583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o/* 2583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 3583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o/usr/src/ext2ed/win.c 4583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 5583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'oA part of the extended file system 2 disk editor. 6583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 7583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o-------------------------------------------------------- 8583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'oWindow management - Interfacing with the ncurses library 9583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o-------------------------------------------------------- 10583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 11583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'oFirst written on: April 17 1995 120f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'oModified on : April 05 2001 Christian.Bac@int-evry.fr 130f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'oit looks like readline does not like that initscr decides to set the tty to 140f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'onoecho. 15583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 16583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'oCopyright (C) 1995 Gadi Oxman 17583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 18583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o*/ 19583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 20583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#include <stdio.h> 21583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#include <stdlib.h> 22583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#include <string.h> 230f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o#include <termios.h> 240f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o#include <unistd.h> 255e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o#include <sys/ioctl.h> 26583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 27583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#include "ext2ed.h" 287c36779aebf962d44ce9f320efd40658a44ff063Theodore Ts'o#include "../version.h" 29583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 30583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ostruct struct_pad_info show_pad_info; 315e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'oWINDOW *title_win,*show_win,*command_win,*mt_win1,*mt_win2,*show_pad; 32583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 33efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o/* to remember configuration after initscr 340f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o * and modify it 350f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o */ 365e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'ostruct termios termioInit, termioCurrent; 370f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o 385e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'ovoid draw_title_win (void) 395e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o{ 405e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o char title_string [128]; 41583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 425e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o werase(title_win); 435e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o box (title_win,0,0); 445e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o sprintf (title_string,"EXT2ED - Extended-2 File System editor ver %s (%s)", E2FSPROGS_VERSION, E2FSPROGS_DATE); 455e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wmove (title_win,TITLE_WIN_LINES/2,(COLS-strlen (title_string))/2); 465e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wprintw (title_win,title_string); 475e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(title_win); 485e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o} 495e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o 505e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'ovoid setup_show_win(void) 515e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o{ 525e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wbkgdset (show_win,A_REVERSE);werase (show_win); 535e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.line=0; 545e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.col=0; 555e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.display_lines=LINES-TITLE_WIN_LINES-SHOW_WIN_LINES-COMMAND_WIN_LINES-2; 565e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.display_cols=COLS; 575e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.max_line=show_pad_info.display_lines-1;show_pad_info.max_col=show_pad_info.display_cols-1; 585e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.disable_output=0; 59efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o} 605e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o 615e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'ovoid init_windows (void) 62583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 63583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o initscr (); 640f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o tcgetattr(0,&termioInit); /* save initial config */ 650f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o termioCurrent = termioInit; 660f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o termioCurrent.c_lflag |= ECHO; /* set echo on */ 670f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o tcsetattr(0,TCSANOW,&termioCurrent); 68efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 69583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (LINES<TITLE_WIN_LINES+SHOW_WIN_LINES+COMMAND_WIN_LINES+3) { 70583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o printf ("Sorry, your terminal screen is too small\n"); 71583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o printf ("Error - Can not initialize windows\n"); 72583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o exit (1); 73583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o } 74583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 75583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o title_win=newwin (TITLE_WIN_LINES,COLS,0,0); 76583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o show_win=newwin (SHOW_WIN_LINES,COLS,TITLE_WIN_LINES,0); 77583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o show_pad=newpad (SHOW_PAD_LINES,SHOW_PAD_COLS); 785e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o mt_win1=newwin (1,COLS,TITLE_WIN_LINES+SHOW_WIN_LINES,0); 795e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o mt_win2=newwin (1,COLS,LINES-COMMAND_WIN_LINES-1,0); 80583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o command_win=newwin (COMMAND_WIN_LINES,COLS,LINES-COMMAND_WIN_LINES,0); 81583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 82583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (title_win==NULL || show_win==NULL || show_pad==NULL || command_win==NULL) { 83583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o printf ("Error - Not enough memory - Can not initialize windows\n");exit (1); 84583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o } 85583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 865e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o draw_title_win(); 875e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o 885e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o setup_show_win(); 89583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 90583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o scrollok (command_win,TRUE); 91583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 925e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_title_win (); 935e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_show_win (); 945e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_show_pad(); 955e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_command_win (); 965e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(mt_win1); 975e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(mt_win2); 98583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 99583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 100583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid refresh_title_win (void) 101583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 102583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wrefresh (title_win); 103583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 104583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 105583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid refresh_show_win (void) 106583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 107583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o int current_page,total_pages; 108efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 109583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o current_page=show_pad_info.line/show_pad_info.display_lines+1; 110583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (show_pad_info.line%show_pad_info.display_lines) 111583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o current_page++; 112583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o total_pages=show_pad_info.max_line/show_pad_info.display_lines+1; 113583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 114583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wmove (show_win,2,COLS-18); 115583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wprintw (show_win,"Page %d of %d\n",current_page,total_pages); 116583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 117583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wmove (show_win,2,COLS-18); 118583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wrefresh (show_win); 119583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 120583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 121583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 122583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid refresh_show_pad (void) 123583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 124583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 125583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o int left,top,right,bottom,i; 126efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 127583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (show_pad_info.disable_output) 128583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o return; 129efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 130583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (show_pad_info.max_line < show_pad_info.display_lines-1) { 131583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o for (i=show_pad_info.max_line+1;i<show_pad_info.display_lines;i++) { 132583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wmove (show_pad,i,0);wprintw (show_pad,"\n"); 133583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o } 134583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o } 135583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o left=0;right=show_pad_info.display_cols-1; 136583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o top=TITLE_WIN_LINES+SHOW_WIN_LINES+1;bottom=top+show_pad_info.display_lines-1; 137583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 138583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (show_pad_info.line > show_pad_info.max_line-show_pad_info.display_lines+1) 139583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o show_pad_info.line=show_pad_info.max_line-show_pad_info.display_lines+1; 140583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 141583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (show_pad_info.line < 0) 142583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o show_pad_info.line=0; 143583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 144583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#ifdef OLD_NCURSES 145583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o prefresh (show_pad,show_pad_info.line,show_pad_info.col,top,left,show_pad_info.display_lines-1,show_pad_info.display_cols-1); 146583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#else 147583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o prefresh (show_pad,show_pad_info.line,show_pad_info.col,top,left,top+show_pad_info.display_lines-1,left+show_pad_info.display_cols-1); 148583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o#endif 149583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 150583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 151583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid refresh_command_win (void) 152583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 153583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wrefresh (command_win); 154583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 155583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 156583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid close_windows (void) 157583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 1580f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o// echo (); 1590f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o tcsetattr(0,TCSANOW,&termioInit); 160efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 161583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o delwin (title_win); 162583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o delwin (command_win); 163583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o delwin (show_win); 164583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o delwin (show_pad); 165efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 166583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o endwin (); 167583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 168583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 169583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid show_info (void) 170583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 171583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o int block_num,block_offset; 172efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 173583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o block_num=device_offset/file_system_info.block_size; 174583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o block_offset=device_offset%file_system_info.block_size; 175583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 176583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wmove (show_win,0,0); 177583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wprintw (show_win,"Offset %-3ld in block %ld. ",block_offset,block_num); 178583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o if (current_type != NULL) 179583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wprintw (show_win,"Type: %s\n",current_type->name); 180583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o else 181583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o wprintw (show_win,"Type: %s\n","none"); 182583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 183583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o refresh_show_win (); 184583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o} 185583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 186583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o 187583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'ovoid redraw_all (void) 188583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9Theodore Ts'o{ 1895e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o int min_lines = TITLE_WIN_LINES+SHOW_WIN_LINES+COMMAND_WIN_LINES+3; 1905e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o struct winsize ws; 1915e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o int save_col, save_lines; 1925e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o 1935e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o /* get the size of the terminal connected to stdout */ 1945e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o ioctl(1, TIOCGWINSZ, &ws); 1955e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o /* 1965e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o * Do it again because GDB doesn't stop before the first ioctl 1975e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o * call, we want an up-to-date size when we're 1985e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o * single-stepping. 1995e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o */ 2005e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o if (ioctl(1, TIOCGWINSZ, &ws) == 0) { 2015e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o if (ws.ws_row < min_lines) 2025e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o ws.ws_row = min_lines; 2035e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o if ((ws.ws_row != LINES) || (ws.ws_col != COLS)) { 2045e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wmove (show_win,2,COLS-18); 2055e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wclrtoeol(show_win); 2065e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(show_win); 2075e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o resizeterm(ws.ws_row, ws.ws_col); 2085e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wresize(title_win, TITLE_WIN_LINES,COLS); 2095e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wresize(show_win, SHOW_WIN_LINES,COLS); 2105e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wresize(command_win, COMMAND_WIN_LINES,COLS); 2115e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wresize(mt_win1, 1,COLS); 2125e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wresize(mt_win2, 1,COLS); 2135e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o mvwin(mt_win2, LINES-COMMAND_WIN_LINES-1,0); 2145e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o mvwin(command_win, LINES-COMMAND_WIN_LINES,0); 2155e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o draw_title_win(); 2165e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.display_lines=LINES-TITLE_WIN_LINES-SHOW_WIN_LINES-COMMAND_WIN_LINES-2; 2175e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o show_pad_info.display_cols=COLS; 2185e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o } 2195e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o } 2205e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o clearok(title_win, 1); 2215e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o clearok(show_win, 1); 2225e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o clearok(command_win, 1); 2235e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o clearok(mt_win1, 1); 2245e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o clearok(mt_win2, 1); 2255e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(mt_win1); 2265e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o wrefresh(mt_win2); 2275e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_show_pad(); 2285e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_show_win(); 2295e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_title_win (); 2305e941d2979aeab97929de6c0682425dead3bae74Theodore Ts'o refresh_command_win (); 2310f31c737dbf999c90a0842e6a499416b8e1f0cb4Theodore Ts'o} 232