int GetProfileString(char * profile, char * AppName, char * KeyName, char * KeyVal ) { char appname[20],keyname[20]; char buf[KEYVALLEN],*c; FILE *fp; int found=0; /* 1 AppName 2 KeyName */
if( (fp=fopen( profile,"r" ))==NULL ){ printf( "openfile [%s] error [%s]\n", profile,strerror(errno) ); return(-1); } fseek( fp, 0, SEEK_SET );
sprintf( appname,"[%s]", AppName ); memset( keyname, 0, sizeof(keyname) );
while( !feof(fp) && fgets( buf, KEYVALLEN, fp )!=NULL ){ if( l_trim( buf )==0 ) continue;
if( found==0 ){ if( buf[0]!='[' ) { continue; } else if ( strncmp(buf,appname,strlen(appname))==0 ){ found=1; continue; } } else if( found==1 ){ if( buf[0]=='#' ){ continue; } else if ( buf[0]=='[' ) { break; } else { if( (c=(char*)strchr(buf,'='))==NULL ) continue; memset( keyname, 0, sizeof(keyname) ); sscanf( buf, "%[^=]", keyname ); if( strcmp(keyname, KeyName)==0 ){ sscanf( ++c, "%[^\n]", KeyVal ); found=2; break; } else { continue; } } } }
fclose( fp );
if( found==2 ) return(0); else return(-1); }
|