static void resize_abook() { #ifdef TIOCGWINSZ struct winsize winsz; ioctl(0, TIOCGWINSZ, &winsz); #ifdef DEBUG if(winsz.ws_col >= MIN_COLS && winsz.ws_row >= MIN_LINES) { fprintf(stderr, "Warning: COLS=%d, LINES=%d\n", winsz.ws_col, winsz.ws_row); } #endif if(winsz.ws_col >= MIN_COLS && winsz.ws_row >= MIN_LINES) { #ifdef HAVE_RESIZETERM resizeterm(winsz.ws_row, winsz.ws_col); #else COLS = winsz.ws_col; LINES = winsz.ws_row; #endif } should_resize = FALSE; close_list(); /* we need to recreate windows */ init_list(); free_windows(); init_windows(); refresh_screen(); refresh(); #endif /* TIOCGWINSZ */ }
void close_ui() { close_list(); free_windows(); clear(); refresh(); endwin(); ui_initialized = FALSE; }
int main(int argc, char *argv[]) /* main program */ { int x, retval = 1; /* counters, etc. */ off_t val, len; /* len need to be off_t*/ windows = (WINS *) calloc(1, sizeof(WINS)); /* malloc windows */ head = llalloc(); /* malloc list space */ fpINfilename = NULL; /* allocate in and */ fpOUTfilename = NULL; /* out file name ptrs */ printHex = TRUE; /* address format */ USE_EBCDIC = FALSE; /*use ascii by default*/ /* get cmd line args */ len = parseArgs(argc, argv); MIN_ADDR_LENGTH = getMinimumAddressLength(len); use_env(TRUE); /* use env values */ slk_init(0); /* init menu bar */ init_screen(); /* init visuals */ init_colors(); if ((COLS < MIN_COLS) || (LINES < MIN_LINES)) /* screen's too small */ { endwin(); fprintf(stderr,"\n\nThe screen size too small.\nThe minimum allowable"); fprintf(stderr," screen size is %dx%d\n\n", MIN_COLS, MIN_LINES + 1); exit(-1); } slk_set(6, (printHex) ? "Hex Addr":"Dec Addr", 1); init_fkeys(); /* define menu bar */ while (retval) { free_windows(windows); /* calculate screen */ BASE = (resize > 0 && resize < COLS) ? resize:((COLS-6-MIN_ADDR_LENGTH)/4); MAXY = (LINES) - 3; hex_win_width = BASE * 3; ascii_win_width = BASE; hex_outline_width = (BASE * 3) + 3 + MIN_ADDR_LENGTH; ascii_outline_width = BASE + 2; init_menu(windows); /* init windows */ head = freeList(head); /* free & init head */ /* print origin loc */ mvwprintw(windows->hex_outline, 0, 1, "%0*d", MIN_ADDR_LENGTH, 0); if (fpIN != NULL) /* if no infile... */ { len = maxLoc(fpIN); /* get last file loc */ val = maxLines(len); /* max file lines */ for (x = 0; x <= MAXY && x<=val; x++) /* output lines */ outline(fpIN, x); } wmove(windows->hex, 0, 0); /* cursor to origin */ refreshall(windows); /* refresh all wins */ doupdate(); /* update screen */ mvwaddch(windows->scrollbar, 1, 0, ACS_CKBOARD);/* clear scroller */ /* get user input */ retval = wacceptch(windows, len); } free(fpINfilename); free(fpOUTfilename); freeList(head); screen_exit(0); /* end visualizations */ return retval; /* return */ }