en?这段代码和我现在的不一样也.现在是这样的
/* Add By KCN for auto crlf*/
void
autolfline(line,fp)
char* line;
FILE* fp;
{
char *p1,*p2;
int dbchar=0;
int n;
int curlinelen=0;
int inESC=0;
p2=p1=line;
while (*p2!=0)
{
switch (inESC)
{
case 0:
//data mode
if (*p2==KEY_ESC)
inESC=1;
else
{
curlinelen++;
if (curlinelen>73)
{
if (dbchar)
{
fwrite(p1,1,p2-p1-1,fp);
p1=p2-1;
}
else
{
fwrite(p1,1,p2-p1,fp);
p1=p2;
}
fprintf(fp,"\n");
curlinelen=0;
}
if (dbchar)
dbchar=0;
else
if (*p2&0x80)
dbchar=1;
}
break;
case 1:
//ESC mode
if (*p2=='[')
inESC=2;
else
{
inESC=0;
//Error ESC format.Need to correct curlinelen;
}
n=0;
dbchar=0;
break;
case 2:
//'*[' begin
if (*p2==';')
{
n=0;
break;
}
if (isdigit(*p2))
{
n=n*10+(int)*p2-'0';
break;
}
switch(*p2)
{
case 'C':
curlinelen+=n;
break;
case 'D':
curlinelen-=n;
break;
case 'H':
case 'f':
if (n==0) n=1;
curlinelen=n-1;
break;
case 's':
savecursor=curlinelen;
break;
case 'u':
if (savecursor!=-1)
curlinelen=savecursor;
break;
//Need add other esc command.
};
inESC=0;
}
p2++;
}
fprintf(fp,"%s\n",p1);
}
--
FROM 166.111.2.138