📄 screen.c
字号:
(void) mvprintw(prc_counters[i - soff].pr_inty, prc_counters[i - soff].pr_intx, "%5d", prc_counters[i].pr_interval); (void) mvprintw(prc_counters[i - soff].pr_pcty, prc_counters[i - soff].pr_pctx, "%3.0f%%", percent); (void) mvprintw(prc_counters[i - soff].pr_toty, prc_counters[i - soff].pr_totx, "%8d", prc_counters[i].pr_total); } } else if (showwhich == SHOWCLIENTS) { long tot_count; tot_count = 0; /* Sum up all over all the clients */ for (i = 0; i < nclientcounters; i++) { tot_count += clnt_counters[i].cl_interval; } HowMany("client hosts", nclientcounters); for (i = soff; (i < nclientcounters) && ((i - soff) < NFSLINES); i++) { if (tot_count) percent = (((float) clnt_counters[i].cl_interval) / ((float)tot_count)) * 100.0; else percent = 0.0; (void) mvprintw(clnt_counters[i - soff].cl_inty, clnt_counters[i - soff].cl_intx, "%5d", clnt_counters[i].cl_interval); (void) mvprintw(clnt_counters[i - soff].cl_pcty, clnt_counters[i - soff].cl_pctx, "%3.0f%%", percent); (void) mvprintw(clnt_counters[i - soff].cl_toty, clnt_counters[i - soff].cl_totx, "%8d", clnt_counters[i].cl_total); } } else if (showwhich == SHOWHELP) { /* do nothing */ } else { /* * Print the file counters. Percentage is calculated as * packets this interval over total NFS packets this * interval. */ HowMany("files", nfilecounters); for (i = soff; (i < nfilecounters) && ((i - soff) < NFSLINES); i++) { if (nfstotal) { percent = ((float) fil_counters[i].fc_interval / (float) nfstotal) * 100.0; } else { percent = 0.0; } (void) mvprintw(fil_counters[i - soff].fc_inty, fil_counters[i - soff].fc_intx, "%5d", fil_counters[i].fc_interval); (void) mvprintw(fil_counters[i - soff].fc_pcty, fil_counters[i - soff].fc_pctx, "%3.0f%%", percent); (void) mvprintw(fil_counters[i - soff].fc_toty, fil_counters[i - soff].fc_totx, "%8d", fil_counters[i].fc_total); } } (void) move(SCR_PROMPT_Y, SCR_PROMPT_X); (void) clrtoeol(); (void) refresh();}/* * HowMany - put up a label showing how many XXs known/not displayed */HowMany(legend, number)char *legend;int number;{ static char message[80]; int mlen; if (number > NFSLINES) { sprintf(message, "%d %s [%d not displayed]", number, legend, number - NFSLINES); } else sprintf(message, "%d %s", number, legend); mlen = strlen(message); (void)move(SCR_NFSHDR_Y - 1, 0); (void)clrtoeol(); (void)mvprintw(SCR_NFSHDR_Y - 1, SCR_MIDDLE - (mlen/2), message); /* * Display scrolling information */ if (scroll_off[showwhich] > 0) (void)mvprintw(SCR_NFSHDR_Y - 1, 2, "<-more"); if (scroll_limit[showwhich]) { int slim = *scroll_limit[showwhich]; if ((scroll_off[showwhich] + NFSLINES) < slim) (void)mvprintw(SCR_NFSHDR_Y - 1, (SCR_MIDDLE * 2) - 8, "more->"); }}/* * command - process a command. */voidcommand(){ register int c; struct itimerval itv; int oldm; int reset_prevshowwhich = 1; if ((c = getchar()) == EOF) finish(-1); c &= 0177; switch (c) { case '\014': /* redraw */ (void) clearok(curscr, TRUE); (void) refresh(); reset_prevshowwhich = 0; break; case 'c': /* show NFS clients */ case 'C': showwhich = SHOWCLIENTS; (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "display NFS clients (starting next update)"); (void) clrtoeol(); (void) refresh(); /* * Change screen labels. */ label_screen(); break; case 'f': /* toggle what we show */ case 'F': switch (showwhich) { case SHOWFILESYSTEM: /* * Only do this if it makes sense. */ if (filelist == NULL) break; showwhich = SHOWINDVFILES; break; case SHOWINDVFILES: showwhich = SHOWFILESYSTEM; break; case SHOWNFSPROCS: case SHOWCLIENTS: case SHOWHELP: showwhich = SHOWFILESYSTEM; break; } (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "display %s (starting next update)", (showwhich == SHOWFILESYSTEM ? "file systems" : "individual files")); (void) clrtoeol(); (void) refresh(); /* * Change screen labels. */ label_screen(); break; case 'l': /* toggle logging */ case 'L': reset_prevshowwhich = 0; if (logging) { (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "logging turned off"); (void) fprintf(logfp, "#\n# endlog\n#\n"); (void) fclose(logfp); logging = 0; } else { if ((logfp = fopen(logfile, "a")) == NULL) { (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "could not open \"%s\"", logfile); } else { (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "logging to \"%s\"", logfile); (void) fprintf(logfp, "#\n# startlog\n#\n"); (void) fprintf(logfp, "# NFSwatch log file\n"); (void) fprintf(logfp, "# Packets from: %s\n", (srcflag ? srchost : "all hosts")); (void) fprintf(logfp, "# Packets to: %s\n#\n", dsthost); logging = 1; } } (void) clrtoeol(); (void) refresh(); break; case 'p': /* show NFS procedures */ case 'P': showwhich = SHOWNFSPROCS; (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "display NFS procedures (starting next update)"); (void) clrtoeol(); (void) refresh(); /* * Change screen labels. */ label_screen(); break; case 'q': /* quit */ case 'Q': (void) mvaddch(SCR_PROMPT_Y, SCR_PROMPT_X, c); (void) refresh(); finish(-1); break; case 's': /* snapshot */ case 'S': reset_prevshowwhich = 0; oldm = sigblock(sigmask(SIGALRM)); /* no async redisplay while dumping */ snapshot(); (void) sigsetmask(oldm); /* permit async redisplay */ break; case 'u': /* toggle sort method */ case 'U': reset_prevshowwhich = 0; sortbyusage = (!sortbyusage); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "sort by %s", sortbyusage ? "percent usage" : "name"); (void) clrtoeol(); (void) refresh(); /* * Change the sort order now. */ oldm = sigblock(sigmask(SIGALRM)); /* no redisplay while unstable */ sort_nfs_counters(); sort_prc_counters(); sort_clnt_counters(); (void) sigsetmask(oldm); /* permit redisplay */ /* * Update screen labels and values. */ label_screen(); update_screen(); break; case '>': /* add 1 to cycle time */ reset_prevshowwhich = 0; cycletime++; (void) getitimer(ITIMER_REAL, &itv); itv.it_interval.tv_sec = cycletime; itv.it_interval.tv_usec = 0; (void) setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "cycletime = %d seconds", cycletime); (void) clrtoeol(); (void) refresh(); break; case '<': /* subtract 1 from cycletime */ reset_prevshowwhich = 0; if (cycletime > 1) { cycletime--; (void) getitimer(ITIMER_REAL, &itv); itv.it_interval.tv_sec = cycletime; itv.it_interval.tv_usec = 0; (void) setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "cycletime = %d seconds", cycletime); (void) clrtoeol(); (void) refresh(); } break; case '+': /* increase cycletime */ reset_prevshowwhich = 0; cycletime += CYCLETIME; (void) getitimer(ITIMER_REAL, &itv); itv.it_interval.tv_sec = cycletime; itv.it_interval.tv_usec = 0; (void) setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "cycletime = %d seconds", cycletime); (void) clrtoeol(); (void) refresh(); break; case '-': /* decrease cycletime */ reset_prevshowwhich = 0; if (cycletime > CYCLETIME) { cycletime -= CYCLETIME; (void) getitimer(ITIMER_REAL, &itv); itv.it_interval.tv_sec = cycletime; itv.it_interval.tv_usec = 0; (void) setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "cycletime = %d seconds", cycletime); (void) clrtoeol(); (void) refresh(); } break; case '=': /* reset cycletime */ reset_prevshowwhich = 0; cycletime = CYCLETIME; (void) getitimer(ITIMER_REAL, &itv); itv.it_interval.tv_sec = cycletime; itv.it_interval.tv_usec = 0; (void) setitimer(ITIMER_REAL, &itv, (struct itimerval *) 0); (void) mvprintw(SCR_PROMPT_Y, SCR_PROMPT_X, "cycletime reset to %d seconds", cycletime); (void) clrtoeol(); (void) refresh(); break; case ']': /* scroll forward */ reset_prevshowwhich = 0; { int slim; if (scroll_limit[showwhich] == NULL) break; slim = *(scroll_limit[showwhich]); if (slim <= NFSLINES) break; scroll_off[showwhich] += NFSLINES - 2; if (scroll_off[showwhich] > (slim - NFSLINES)) { scroll_off[showwhich] = (slim - NFSLINES); } } (void) clrtoeol(); label_screen(); update_screen(); (void) refresh(); break; case '[': /* scroll back */ reset_prevshowwhich = 0; scroll_off[showwhich] -= NFSLINES - 2; if (scroll_off[showwhich] < 0) scroll_off[showwhich] = 0; (void) clrtoeol(); label_screen(); update_screen(); (void) refresh(); break; case ' ': /* resume after help */ if (prev_showwhich > 0) { showwhich = prev_showwhich; label_screen(); update_screen(); (void) refresh(); break; } /* not set? drops through to "default" */ default: /* give them some help */ reset_prevshowwhich = 0; if (showwhich != SHOWHELP) /* save current display mode */ prev_showwhich = showwhich; showwhich = SHOWHELP; label_screen(); (void) refresh(); break; } if (reset_prevshowwhich) prev_showwhich = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -