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

📄 esdutil.c

📁 一个通讯程序源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	if(skip_cmd_break(tesd) || (*(tesd->pb + tesd->index) == ';') ||			(*(tesd->pb + tesd->index) == '#'))		return(1);	return(0);}	/* end of end_of_cmd *//*+-------------------------------------------------------------------------    erc = skip_cmd_char(tesd,skipchar)--------------------------------------------------------------------------*/intskip_cmd_char(tesd,skipchar)register ESD *tesd;register char skipchar;{int erc;	if(erc = skip_cmd_break(tesd))		return(erc);	if(tesd->pb[tesd->index] == skipchar)	{		++tesd->index;		return(0);	}	return(eSyntaxError);}   /* end of skip_cmd_char *//*+-------------------------------------------------------------------------    erc = skip_colon(tesd)--------------------------------------------------------------------------*/intskip_colon(tesd)register ESD *tesd;{	register erc;	if(erc = skip_cmd_break(tesd))		return(erc);	if(tesd->pb[tesd->index] == ':')	{		++tesd->index;		return(0);	}	return(eCommaExpected);}   /* end of skip_colon *//*+-------------------------------------------------------------------------    erc = skip_comma(tesd)--------------------------------------------------------------------------*/intskip_comma(tesd)register ESD *tesd;{	register erc;	if(erc = skip_cmd_break(tesd))		return(erc);	if(tesd->pb[tesd->index] == ',')	{		++tesd->index;		return(0);	}	return(eCommaExpected);}   /* end of skip_comma *//*+-------------------------------------------------------------------------    erc = skip_paren(fparam,LEFT or RIGHT)--------------------------------------------------------------------------*/intskip_paren(tesd,fLeft)register ESD *tesd;int fLeft;{register erc;register char search = (fLeft) ? '(' : ')';	if(erc = skip_cmd_break(tesd))		return(erc);	if(tesd->pb[tesd->index] == search)	{		tesd->index++;		return(0);	}	return((fLeft) ? eMissingLeftParen : eMissingRightParen);}   /* end of skip_paren *//*+-------------------------------------------------------------------------	get_cmd_char(tesd,pchar)--------------------------------------------------------------------------*/intget_cmd_char(tesd,pchar)register ESD *tesd;char *pchar;{int erc;	if(erc = skip_cmd_break(tesd))		return(erc);	*pchar = tesd->pb[tesd->index++];	return(0);}	/* end of get_cmd_char *//*+----------------------------------------------------------------    get_alpha_zstr(&esd,&strbuf,strbuf_maxcb)  places next alphabetic string token [A-Za-z_] into  the null-terminated 'strbuf' string.  returns 0 or -1  or skip_cmd_break error codes-----------------------------------------------------------------*/intget_alpha_zstr(tesd,strbuf,strbuf_maxcb)ESD *tesd;register char *strbuf;int strbuf_maxcb;{register izstr;register schar;register char *pb = tesd->pb;	if(izstr = skip_cmd_break(tesd))		return(izstr);	izstr = 0;	while( (izstr < strbuf_maxcb-1) && (tesd->index < tesd->cb) )	{		schar = pb[tesd->index];		if((!isalpha(schar)) && (schar != '_'))			break;		strbuf[izstr++] = schar;		tesd->index++;	}	strbuf[izstr] = 0;	return(izstr ? 0 : eBadParameter);}   /* end of get_alpha_zstr *//*+----------------------------------------------------------------    get_alphanum_zstr(&esd,&strbuf,strbuf_maxcb)  places next alphanumeric string token [A-Za-z0-9_]  into the null-terminated 'strbuf' string.  returns 0  or -1 or skip_cmd_break error codes-----------------------------------------------------------------*/intget_alphanum_zstr(tesd,strbuf,strbuf_maxcb)register ESD *tesd;register char *strbuf;int strbuf_maxcb;{int izstr = 0;int schar;register cb = tesd->cb;register index;	if(izstr = skip_cmd_break(tesd))		return(izstr);	index = tesd->index;	while( (izstr < strbuf_maxcb-1) && (index < cb))	{		schar = tesd->pb[index++];		if(isalnum(schar) || (schar == '_'))			strbuf[izstr++] = schar;		else		{			--index;			break;		}	}	tesd->index = index;	strbuf[izstr]=0;	return(izstr ? 0 : eBadParameter);}   /* end of get_alphanum_zstr *//*+----------------------------------------------------------------    get_numeric_zstr(&esd,&strbuf,strbuf_maxcb)    gets next numeric string token places it    into the null-terminated 'strbuf' string.  returns 0 or -1     or skip_cmd_break error codes-----------------------------------------------------------------*/intget_numeric_zstr(tesd,strbuf,strbuf_maxcb)register ESD *tesd;register char *strbuf;register strbuf_maxcb;{	register izstr;	register schar;	if(izstr = skip_cmd_break(tesd))		return(izstr);	while( (izstr < strbuf_maxcb-1) && (tesd->index < tesd->cb) )	{		schar = tesd->pb[tesd->index++];		if( isdigit(schar) )			strbuf[izstr++]=schar;		else		{			--tesd->index;			break;		}	}	strbuf[izstr]=0;	return(izstr ? 0 : eBadParameter);}   /* end of get_numeric_zstr *//*+-----------------------------------------------------------------------	get_numeric_value(tesd,&long_var)------------------------------------------------------------------------*/get_numeric_value(tesd,value)register ESD *tesd;register long *value;{register erc;char buf[32];	if(erc = get_numeric_zstr(tesd,buf,sizeof(buf)))		return(erc);	sscanf(buf,"%ld",value);	return(0);}	/* end of get_numeric_value *//*+----------------------------------------------------------------    get_word_zstr(&esd,&strbuf,strbuf_maxcb)  gets next word (continuous string of characters without spaces  or tabs) returns 0 or -1 or skip_cmd_break error codes-----------------------------------------------------------------*/intget_word_zstr(tesd,strbuf,strbuf_maxcb)register ESD *tesd;register char *strbuf;register strbuf_maxcb;{	register izstr;	register schar;	if(izstr = skip_cmd_break(tesd))		return(izstr);	strbuf_maxcb--;	while((izstr < strbuf_maxcb) && (tesd->index < tesd->cb))	{		schar = tesd->pb[tesd->index++];		if( (schar > 0x20) && (schar <= 0x7e))			strbuf[izstr++]=schar;		else		{			--tesd->index;			break;		}	}	strbuf[izstr]=0;	return(izstr ? 0 : eBadParameter);}   /* end of get_word_zstr *//*+-------------------------------------------------------------------------    esd_strip_trail_break(tesd)--------------------------------------------------------------------------*/voidesd_strip_trail_break(ztext)register ESD *ztext;{	while(ztext->cb &&		((ztext->pb[ztext->cb-1] == 0x20) || (ztext->pb[ztext->cb-1] == 0x20)))	{		ztext->cb--;	}}   /* end of esd_strip_trail_break *//*+-------------------------------------------------------------------------	esdfgets(&esd,fileptr)  stdio read from FILE *fileptr into esd  returns tesd->cb set up not including trailing nl, tesd->index == 0--------------------------------------------------------------------------*/intesdfgets(tesd,fileptr)register ESD *tesd;register FILE *fileptr;{register char *cptr;	tesd->cb = 0;	if(!fgets(tesd->pb,tesd->maxcb+1,fileptr))		return(eEOF);	if(!(cptr = strchr(tesd->pb,0x0A)))		return(eBufferTooSmall);	tesd->cb = (int)(cptr - tesd->pb);	esd_null_terminate(tesd);	tesd->index = 0;	tesd->old_index = 0;	return(0);}	/* end of esdfgets *//*+-------------------------------------------------------------------------	esdfputs(&esd,fileptr,index_flag,nl_flag)  write esd contents to stdio FILE *fileptr  if index_flag is true, write from tesd->index thru end of esd  otherwise, from start of esd  if nl_flag is true, append nl to write, else just esd contents--------------------------------------------------------------------------*/intesdfputs(tesd,fileptr,index_flag,nl_flag)register ESD *tesd;FILE *fileptr;int index_flag;int nl_flag;{register char *cptr;register write_length;	if(index_flag)	{		cptr = &tesd->pb[tesd->index];		write_length = tesd->cb - tesd->index;	}	else	{		cptr = tesd->pb;		write_length = tesd->cb;	}	if(write_length)		fwrite(cptr,write_length,1,fileptr);	if(nl_flag)		fputc(0x0A,fileptr);	return(0);}	/* end of esdfputs *//*+-------------------------------------------------------------------------    get_switches(tesd,switches,switches_max)--------------------------------------------------------------------------*/intget_switches(tesd,switches,switches_max)ESD *tesd;char *switches;int switches_max;{register erc;register index;register char *pb = tesd->pb;int cb = tesd->cb;char schar;	*switches = 0;	if(erc = skip_cmd_break(tesd))		return(erc);	index = tesd->index;	if(*(pb + index) != '-')		return(eNoSwitches);	if(switches_max < 3)		return(eSwitchesTooLong);	switches_max--;			/* for trailing null */	*switches++ = '-';	switches_max--;	index++;	while(index < cb)	{		schar = *(pb + index++);		if(switches_max > 0)			*switches++ = schar;		switches_max--;		if(isspace(schar))			break;	}	tesd->index = index;	*switches = 0;	return((switches_max < 0) ? eSwitchesTooLong : 0);}   /* end of get_switches() *//* vi: set tabstop=4 shiftwidth=4: *//* end of esdutil.c */

⌨️ 快捷键说明

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