- 论坛徽章:
- 0
|
原帖由 MMMIX 于 2007-7-5 11:38 发表于 2楼
估计是头文件问题,方便的话把出错部分的代码贴上来。
以下是报告错误的代码:
int InsLog(flname,lineno,flag,frm, va_alist)
char* flname;
int lineno;
int flag;
char *frm;
va_dcl
{
static long llLogfilesize = 0;
long deflogsize;
FILE *fp;
char buf[1024],fname1[100],buf1[1024],alCmdbuf[200],logdir[100];
va_list ap;
struct tm *sttm;
int ilRc;
time_t llDatetime;
char tmpbuf2[20];
int agDebugFlag;
char ifsconf[100],defile[200];;
struct stat sgbuf;
int rc;
int defoutflag;
if ( flag != 0 && flag != 1 && flag != 2 )
{
printf("系统错误!InsLog flag 参数传递错误!flag=[%d]\n",flag);
return -1;
}
if ( IFSETC.initflag != 1 )
{
printf("系统错误!没有做系统初始化!\n");
return -1;
}
memset ( buf , 0 ,sizeof ( buf ) );
memset ( fname1 , 0 ,sizeof ( fname1 ) );
memset ( buf1 , 0 ,sizeof ( buf1 ) );
memset ( alCmdbuf , 0 ,sizeof ( alCmdbuf ) );
memset ( logdir , 0 ,sizeof ( logdir ) );
if (*frm)
{
va_start(ap);
vsprintf(buf, frm, ap);
va_end(ap);
}
sprintf( ifsconf,"%s/%s",IFSETC.home,IFSCONFIG );
strcpy ( logdir , IFSETC.logdir );
memset ( defile , 0 ,sizeof ( defile ) );
switch ( flag )
{
case 0:
strcpy ( defile , IFSETC.errlogname );
deflogsize = IFSETC.errlogsize;
defoutflag = IFSETC.errlogflag;
break;
case 1:
strcpy ( defile , IFSETC.tracelogname );
deflogsize = IFSETC.tracelogsize;
defoutflag = IFSETC.tracelogflag;
break;
case 2:
strcpy ( defile , IFSETC.detaillogname );
deflogsize = IFSETC.detaillogsize;
defoutflag = IFSETC.detaillogflag;
break;
}
/* 自动清空大于 8M 文件 --需要修改此处,改成配置文件 */
if ( !llLogfilesize )
{
ilRc = deflogsize;
if ((ilRc == -1) || (ilRc == 0)) llLogfilesize = 8388608L;
else llLogfilesize = ilRc * 1048576L;
}
sprintf(fname1,"%s/%s/%s",(char *)getenv("HOME"),logdir,defile );
rc=stat(fname1, &sgbuf);
if (sgbuf.st_size > llLogfilesize)
{
time(&llDatetime);
sttm = localtime( &llDatetime );
sprintf( alCmdbuf , "mv %s %s.bak" , fname1 ,fname1 );
/*
sprintf(alCmdbuf,"mv %s %s.%02d%02d%02d%02d%02d",
fname1,fname1,
sttm->tm_mon+1,
sttm->tm_mday,
sttm->tm_hour,
sttm->tm_min,
sttm->tm_sec );
*/
if ( ( access( fname1 , F_OK) ) != -1 )
system(alCmdbuf);
}
/** **/
if (( fp = fopen(fname1,"a+")) == NULL)
{
fprintf(stderr, "打开文件[%s]出错!\n", fname1 );
return(-1);
}
GetTime(buf1);
strcat(buf1,": ");
sprintf(tmpbuf2,"文件[%s] ",flname);
strcat(buf1, tmpbuf2);
sprintf(tmpbuf2,"行数[%d] \n",lineno);
strcat(buf1, tmpbuf2);
strcat(buf1,buf);
/*1文件2屏幕9文件和屏幕 0不处理*/
switch ( defoutflag )
{
case 1:
fprintf( fp,"%s\n",buf1 );
break;
case 2:
fprintf( stdout,"%s\n",buf1 );
break;
case 9:
fprintf( fp,"%s\n",buf1 );
fprintf( stdout,"%s\n",buf1 );
defalut:
break;
}
fclose(fp);
return 0;
}
请帮忙看看问题在哪里?谢谢! |
|