void mtr_curses_redraw(void) { int maxx; int startstat; int rowstat; time_t t; int i, j; int hd_len = 0; char buf[1024]; char fmt[16]; erase(); getmaxyx(stdscr, __unused_int, maxx); rowstat = 5; move(0, 0); attron(A_BOLD); pwcenter("My traceroute [v" MTR_VERSION "]"); attroff(A_BOLD); mvprintw(1, 0, "%s (%s)", LocalHostname, net_localaddr()); /* printw("(tos=0x%X ", tos); printw("psize=%d ", packetsize ); printw("bitpattern=0x%02X)", (unsigned char)(abs(bitpattern))); if( cpacketsize > 0 ){ printw("psize=%d ", cpacketsize); } else { printw("psize=rand(%d,%d) ",MINPACKET, -cpacketsize); } if( bitpattern>=0 ){ printw("bitpattern=0x%02X)", (unsigned char)(bitpattern)); } else { printw("bitpattern=rand(0x00-FF))"); } */ time(&t); mvprintw(1, maxx-25, ctime(&t)); printw("Keys: "); attron(A_BOLD); printw("H"); attroff(A_BOLD); printw("elp "); attron(A_BOLD); printw("D"); attroff(A_BOLD); printw("isplay mode "); attron(A_BOLD); printw("R"); attroff(A_BOLD); printw("estart statistics "); attron(A_BOLD); printw("O"); attroff(A_BOLD); printw("rder of fields "); attron(A_BOLD); printw("q"); attroff(A_BOLD); printw("uit\n"); if (display_mode == 0) { for (i=0; i < MAXFLD; i++ ) { j = fld_index[fld_active[i]]; if (j < 0) continue; sprintf( fmt, "%%%ds", data_fields[j].length ); sprintf( buf + hd_len, fmt, data_fields[j].title ); hd_len += data_fields[j].length; } attron(A_BOLD); mvprintw(rowstat - 1, 0, " Host"); mvprintw(rowstat - 1, maxx-hd_len-1, "%s", buf); mvprintw(rowstat - 2, maxx-hd_len-1, " Packets Pings"); attroff(A_BOLD); move(rowstat, 0); mtr_curses_hosts(maxx-hd_len-1); } else { char msg[80]; int padding = 30; #ifdef IPINFO if (is_printii()) padding += get_iiwidth(); #endif int max_cols = maxx<=SAVED_PINGS+padding ? maxx-padding : SAVED_PINGS; startstat = padding - 2; sprintf(msg, " Last %3d pings", max_cols); mvprintw(rowstat - 1, startstat, msg); attroff(A_BOLD); move(rowstat, 0); mtr_gen_scale(); mtr_curses_graph(startstat, max_cols); printw("\n"); attron(A_BOLD); printw("Scale:"); attroff(A_BOLD); for (i = 0; i < NUM_FACTORS-1; i++) { printw(" "); attrset(block_col[i+1]); printw("%c", block_map[i]); attrset(A_NORMAL); printw(":%d ms", block_map[i], scale[i]/1000); } printw(" "); attrset(block_col[NUM_FACTORS]); printw("%c", block_map[NUM_FACTORS-1]); attrset(A_NORMAL); } refresh(); }
void mtr_curses_redraw(void) { int maxx, maxy; int startstat; int rowstat; time_t t; int i, j; int hd_len = 0; char buf[1024]; char fmt[16]; erase(); getmaxyx(stdscr, maxy, maxx); rowstat = 5; move(0, 0); attron(A_BOLD); pwcenter("My traceroute [v" VERSION "]"); attroff(A_BOLD); mvprintw(1, 0, "%s (%s)", LocalHostname, net_localaddr()); /* printw("(tos=0x%X ", tos); printw("psize=%d ", packetsize ); printw("bitpattern=0x%02X)", (unsigned char)(abs(bitpattern))); if( cpacketsize > 0 ){ printw("psize=%d ", cpacketsize); } else { printw("psize=rand(%d,%d) ",MINPACKET, -cpacketsize); } if( bitpattern>=0 ){ printw("bitpattern=0x%02X)", (unsigned char)(bitpattern)); } else { printw("bitpattern=rand(0x00-FF))"); } */ time(&t); mvprintw(1, maxx-25, ctime(&t)); printw("Keys: "); attron(A_BOLD); printw("H"); attroff(A_BOLD); printw("elp "); attron(A_BOLD); printw("D"); attroff(A_BOLD); printw("isplay mode "); attron(A_BOLD); printw("R"); attroff(A_BOLD); printw("estart statistics "); attron(A_BOLD); printw("O"); attroff(A_BOLD); printw("rder of fields "); attron(A_BOLD); printw("q"); attroff(A_BOLD); printw("uit\n"); if (display_mode == 0) { /* changedByMin */ for (i=0; i < MAXFLD; i++ ) { j = fld_index[fld_active[i]]; if (j < 0) continue; sprintf( fmt, "%%%ds", data_fields[j].length ); sprintf( buf + hd_len, fmt, data_fields[j].title ); hd_len += data_fields[j].length; } attron(A_BOLD); mvprintw(rowstat - 1, 0, " Host"); mvprintw(rowstat - 1, maxx-hd_len-1, "%s", buf); mvprintw(rowstat - 2, maxx-hd_len-1, " Packets Pings"); attroff(A_BOLD); move(rowstat, 0); mtr_curses_hosts(maxx-hd_len-1); } else { /* David Sward, Jan 1999 */ char msg[80]; int max_cols = maxx<=SAVED_PINGS+30 ? maxx-30 : SAVED_PINGS; startstat = 28; sprintf(msg, " Last %3d pings", max_cols); mvprintw(rowstat - 1, startstat, msg); attroff(A_BOLD); move(rowstat, 0); mtr_gen_scale(); mtr_curses_graph(startstat, max_cols); printw("\n"); attron(A_BOLD); printw("Scale:"); attroff(A_BOLD); for (i = 0; i < 7; i++) { printw(" %c:%d ms", block_map[i], scale[i]/1000); } } refresh(); }