⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 screen.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 2 页
字号:
		    (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 + -