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

📄 ecuphdir.c

📁 一个通讯程序源码
💻 C
📖 第 1 页 / 共 4 页
字号:
		return;	wmove(dirw,1,1);	wstandout(dirw);#if defined(SVR4)	waddstr(dirw," entry name | telephone number | tty | baud P | description                   "		);#else	waddstr(dirw," entry name ");	waddch(dirw,(unsigned)sVR);	waddstr(dirw," telephone number ");	waddch(dirw,(unsigned)sVR);	waddstr(dirw," tty ");	waddch(dirw,(unsigned)sVR);	waddstr(dirw," baud P ");	waddch(dirw,(unsigned)sVR);	waddstr(dirw," description                   ");#endif	wstandend(dirw);	dirw_display_phonedir_name();	dirw_display_config();#if 0	touchwin(stdscr);	wrefresh(stdscr);#endif	wrefresh(dirw);}	/* end of dirw_display *//*+-------------------------------------------------------------------------	dirw_bot_msg(msg)--------------------------------------------------------------------------*/voiddirw_bot_msg(msg)char *msg;{	register itmp;	register itmp2;	static last_msglen = 0;#define DIRW_BOT_LINE_TLX 2#define DIRW_BOT_LINE_MAX_MSGLEN	(DIRW_COLS - DIRW_BOT_LINE_TLX - 8)	char msg2[80];	if(!dirw || (!last_msglen && !strlen(msg)))		return;	wmove(dirw,DIRW_LINES - 1,DIRW_BOT_LINE_TLX);	if((itmp = strlen(msg)) == 0)	{		itmp2 = last_msglen + 2;#if defined(SVR4)		whline(dirw, (unsigned long)(sHR & 0x00ff), itmp2);#else		for(itmp = 0; itmp < itmp2; itmp++)			waddch(dirw,(unsigned)sHR);#endif		last_msglen = 0;	}	else	{		waddch(dirw,' ');		if(itmp > DIRW_BOT_LINE_MAX_MSGLEN)		{			strncpy(msg2,msg,DIRW_BOT_LINE_MAX_MSGLEN);			msg2[DIRW_BOT_LINE_MAX_MSGLEN + 1] = 0;			waddstr(dirw,msg2);			itmp = strlen(msg2);		}		else		{			waddstr(dirw,msg);			itmp = strlen(msg);		}		waddch(dirw,' ');		if((itmp2 = last_msglen - itmp) > 0)		{#if defined(SVR4)			whline(dirw, (unsigned long)(sHR & 0x00ff), itmp2);#else			while(itmp2--)				waddch(dirw,(unsigned)sHR);#endif		}		last_msglen = itmp;		/* remember last message length */	}	wrefresh(dirw);}	/* end of dirw_bot_msg *//*+-------------------------------------------------------------------------	phdir_display_logical(line,tpde,stand_out)--------------------------------------------------------------------------*/voidphdir_display_logical(line,tpde,stand_out)int line;PDE *tpde;int stand_out;{	wmove(scrw,line,0);#if defined(SVR4)	wvline(scrw, (unsigned long)(sVR & 0x00ff), 1);	wmove(scrw,line,1);#else	waddch(scrw,(unsigned)sVR);#endif	if(tpde->redial)	{		wstandout(scrw);		waddch(scrw,'>');		wstandend(scrw);	}	else		waddch(scrw,' ');	if(stand_out)		wstandout(scrw);	wprintw(scrw,"%-10.10s",tpde->logical);	if(stand_out)		wstandend(scrw);}	/* end of phdir_display_logical *//*+-----------------------------------------------------------------------	phdir_display(win,line,tpde,stand_out)0000000000111111111122222222223333333333444444444455555555556666666666777777777701234567890123456789012345678901234567890123456789012345678901234567890123456789| entry name | telephone number | tty | baud P | description                   || 0123456789 | 0123456789012345 | 01  | baud P | 01234567890123456789012345678 |--------------------------------------------------------------------------*/phdir_display(line,tpde,stand_out)int line;PDE *tpde;int stand_out;{	phdir_display_logical(line,tpde,stand_out);	waddch(scrw,' ');#if defined(SVR4)	wmove(scrw, line, 13);	waddch(scrw,'|');#else	waddch(scrw,(unsigned)sVR);#endif	waddch(scrw,' ');#if defined(SVR4)	wprintw(scrw,"%-16.16s |",tpde->telno);	if(tpde->tty[0])		wprintw(scrw,"%-5.5s|",tpde->tty);	else		waddstr(scrw,"Any  |");	wprintw(scrw,"%5u %c | ",tpde->baud,		(tpde->parity) ? to_upper(tpde->parity) : 'N');	wprintw(scrw,"%-29.29s",tpde->descr);#else	wprintw(scrw,"%-16.16s ",tpde->telno);	waddch(scrw,(unsigned)sVR);	if(tpde->tty[0])		wprintw(scrw,"%-5.5s",tpde->tty);	else		waddstr(scrw,"Any  ");	waddch(scrw,(unsigned)sVR);	wprintw(scrw,"%5u %c ",tpde->baud,		(tpde->parity) ? to_upper(tpde->parity) : 'N');	waddch(scrw,(unsigned)sVR);	wprintw(scrw," %-29.29s ",tpde->descr);	waddch(scrw,(unsigned)sVR);#endif	return(0);}	/* end of phdir_display *//*+-----------------------------------------------------------------------	scrw_fill(first_pde,curr_pde_line)------------------------------------------------------------------------*/voidscrw_fill(tpde,curr_pde_line)register PDE *tpde;int *curr_pde_line;{	register line;	register is_curr_pde;	*curr_pde_line = -1;	for(line = 0; line < SCRW_LINES; line++)	{		if(tpde)		{			if(is_curr_pde = (tpde == curr_pde))				*curr_pde_line = line;			phdir_display(line,tpde,is_curr_pde);			tpde = tpde->next;		}		else		{			wmove(scrw,line,0);#if defined(SVR4)			wvline(scrw, (unsigned long)(sVR & 0x00ff), 1);			wmove(scrw,line,1);#else			waddch(scrw,(unsigned)sVR);#endif			wclrtoeol(scrw);			wmove(scrw,line,SCRW_COLS - 1);#if defined(SVR4)			wvline(scrw, (unsigned long)(sVR & 0x00ff), 1);#else			waddch(scrw,(unsigned)sVR);#endif		}	}	wrefresh(scrw);}	/* end of scrw_fill *//*+-------------------------------------------------------------------------	scrw_fill_at(line_num,first_pde,curr_pde_line)--------------------------------------------------------------------------*/voidscrw_fill_at(line_num,tpde,curr_pde_line)int line_num;register PDE *tpde;int *curr_pde_line;{	register itmp;	if(!tpde)	{		scrw_fill(tpde,curr_pde_line);		return;	}	for(itmp = 0; itmp < line_num; itmp++)	{		if(!tpde->prev)			break;		tpde = tpde->prev;	}	scrw_fill(tpde,curr_pde_line);}	/* end of scrw_fill_at *//*+-------------------------------------------------------------------------	dirw_cmd_line_setup(prompt1,prompt2)--------------------------------------------------------------------------*/voiddirw_cmd_line_setup(prompt1,prompt2)char *prompt1;char *prompt2;{	register icol;	int y;	int x;	char *cptr;	int standout_mode;	wmove(dirw,DIRW_CMD_LINE - 1,1);	wstandend(dirw);	standout_mode = 0;	waddch(dirw,' ');	cptr = prompt1;	while(*cptr)	{		if(*cptr == '~')		{			if(standout_mode)				wstandend(dirw);			else				wstandout(dirw);			standout_mode = !standout_mode;			cptr++;		}		else			waddch(dirw,*cptr++);	}	wstandend(dirw);	standout_mode = 0;	waddch(dirw,' ');	getyx(dirw,y,x);	for(icol = x; icol < DIRW_COLS - 1; icol++)		waddch(dirw,' ');	wmove(dirw,DIRW_CMD_LINE,1);	waddch(dirw,' ');	cptr = prompt2;	while(*cptr)	{		if(*cptr == '~')		{			if(standout_mode)				wstandend(dirw);			else				wstandout(dirw);			standout_mode = !standout_mode;			cptr++;		}		else			waddch(dirw,*cptr++);	}	wstandend(dirw);	waddch(dirw,' ');	getyx(dirw,y,x);	for(icol = x; icol < DIRW_COLS - 1; icol++)		waddch(dirw,' ');	wmove(dirw,y,x);	wrefresh(scrw);	wrefresh(dirw);}	/* end of dirw_cmd_line_setup *//*+-------------------------------------------------------------------------	dirw_get_cmd()--------------------------------------------------------------------------*/uchardirw_get_cmd(){	register uchar cmd;	char setupline1[128];	/* yetch ... avoid source line > 80 chars */	char *setupline1_1 = "~d~own ~u~p ~e~dit ~a~dd ~r~emove ~s~ave ~f~ind ";	char *setupline1_2 = "~c~hange dial dir ~ENTER~:dial ~ESC,q~uit";	strcpy(setupline1,setupline1_1);	strcat(setupline1,setupline1_2);	dirw_cmd_line_setup(		setupline1,		"redial: ~m~ark un~M~ark ~U~nmark all ~w~ait between dial");	cmd = ttygetc(1);	dirw_bot_msg("");	return(cmd);}	/* end of dirw_get_cmd *//*+-------------------------------------------------------------------------	phdir_cmd_save()--------------------------------------------------------------------------*/voidphdir_cmd_save(){	FILE *fpold;	FILE *fpnew;	PDE *tpde;	char *cptr;	char phonedir_ntmp[256];		/* temp phone directory name */	char iobuf[128];	int count = 0;	if(!phdir_list_dirty)	{		dirw_bot_msg("directory has not been modified");		return;	}	strcpy(phonedir_ntmp,phonedir_name);	strcat(phonedir_ntmp,".t");	if(!(fpnew = fopen(phonedir_ntmp,"w")))	/* open old file */	{		sprintf(iobuf,"cannot open %s",phonedir_ntmp);		dirw_bot_msg(iobuf);		return;	}/* write trigger */	fputs(phonedir_trigger,fpnew);/* retain commented entries */	if((fpold = fopen(phonedir_name,"r")))	/* open old file */	{		while(fgets(iobuf,sizeof(iobuf),fpold))		{			if((iobuf[0] == '#') && strcmp(iobuf,phonedir_trigger))				fputs(iobuf,fpnew);		}		fclose(fpold);	}/* write new entries */	tpde = phdir_list_head;	while(tpde)	{		cptr = tpde->descr;		while(*cptr)			/* cannot have ':' in description */		{						/* should have picked another separator, ... */			if(*cptr == ':')	/* ... but compatibility is important */				*cptr = '-';			cptr++;		}		sprintf(iobuf,"%d",count+1);		dirw_bot_msg(iobuf);		sprintf(iobuf,"%s:%s:%s:%u:%c:%s:%d:%c\n",tpde->logical,tpde->telno,			tpde->tty,tpde->baud,			(tpde->parity) ? to_upper(tpde->parity) : 'N',			tpde->descr,tpde->debug_level,to_upper(tpde->dcdwatch));		fputs(iobuf,fpnew);		tpde = tpde->next;		count++;	}	fclose(fpnew);	unlink(phonedir_name);	rename(phonedir_ntmp,phonedir_name);	sprintf(iobuf,"saved %d entries",count);	dirw_bot_msg(iobuf);	phdir_list_set_dirty(0);}	/* end of phdir_cmd_save *//*+-------------------------------------------------------------------------	phdir_list_save_if_dirty()--------------------------------------------------------------------------*/voidphdir_list_save_if_dirty(){	uint cmd = 0;	if(phdir_list_dirty)	{		dirw_bot_msg("type 'y' or 'n'");		while(!cmd)		{			ring_bell();			dirw_cmd_line_setup("","current directory modified: save?");			cmd = ttygetc(0);			if(isupper(cmd))				cmd = tolower(cmd);			switch(cmd)			{				case 'y': phdir_cmd_save(); break;				case 'n': break;				default:					cmd = 0;					break;					}		}		dirw_bot_msg("");	}}	/* end of phdir_list_save_if_dirty *//*+-------------------------------------------------------------------------	phdir_cmd_up()--------------------------------------------------------------------------*/voidphdir_cmd_up(){	register PDE *tpde;	if((!curr_pde) || (curr_pde->prev == (PDE *)0))	{		ring_bell();		return;	}	if(scrw_curr_pde_line)	{		phdir_display_logical(scrw_curr_pde_line,curr_pde,0);		scrw_curr_pde_line--;		curr_pde = curr_pde->prev;		phdir_display_logical(scrw_curr_pde_line,curr_pde,1);	}	else	{		tpde = curr_pde;		curr_pde = curr_pde->prev;		scrw_fill_at(10,tpde,&scrw_curr_pde_line);	}}	/* end of phdir_cmd_up *//*+-------------------------------------------------------------------------	phdir_cmd_down()--------------------------------------------------------------------------*/voidphdir_cmd_down(){	register PDE *tpde;	if((!curr_pde) || (curr_pde->next == (PDE *)0))	{		ring_bell();		return;	}	if(scrw_curr_pde_line < (SCRW_LINES - 1))	{		phdir_display_logical(scrw_curr_pde_line,curr_pde,0);		scrw_curr_pde_line++;		curr_pde = curr_pde->next;		phdir_display_logical(scrw_curr_pde_line,curr_pde,1);	}	else	{		tpde = curr_pde;		curr_pde = curr_pde->next;		scrw_fill_at(SCRW_LINES - 10,tpde,&scrw_curr_pde_line);	}}	/* end of phdir_cmd_down */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -