| |
2010-03-17 16:40:58 2182
|
| c 에서 ini 읽기 함수구현 |
 |
호석
|
|
|
c 에서 ini 읽기
함수구현
>>> daemon.ini
[POSMAST]
port_no=33001
maxfork=40
logpath=/home/../poscomm/log
[POSSALER]
port_no=33002
maxfork=40
datapath=/home/../poscomm/data
backpath=/home/../poscomm/data/sale
logpath=/home/../poscomm/log
[POSSALEU]
datapath=/home/../poscomm/data
backpath=/home/../poscomm/data/sale
logpath=/home/../poscomm/log
runcycle=3
>>> 헤더파일
#define INIFILE "daemon.ini" /* 환경 설정 INI */
#define NPHOME getenv("NPHOME") /* HOME 디렉토리 */
#define DAEMON_NAME "POSMAST"
>>> 소스
>>>>
/*------------------------------------------------------------------------*/
/*----- INI화일 READ */
/*------------------------------------------------------------------------*/
/*-INI 파일 경로 설정-*/
snprintf(ini_path, sizeof(ini_path), "%s/bin/%s", NPHOME, INIFILE);
memset(port_no,0x00,sizeof(port_no));
if (get_inifile(ini_path, DAEMON_NAME, "port_no", port_no, sizeof(port_no)) == FALSE){
printf("환경파일[%s] 오류 => [%s]의 port_no를 확인하십시요.\n", ini_path, DAEMON_NAME);
exit(1);
}
/******************************************************************************/
/* INI FILE READ */
/******************************************************************************/
int get_inifile(cFileName, cSetionName, cKeyName, cReturned, size)
char* cFileName;
char* cSetionName;
char* cKeyName;
char* cReturned;
int size;
{
char cprobuff[BUFF_SIZE];
FILE *fp_file;
/*** 환경화일 열기 ***/
if((fp_file = fopen(cFileName, "r")) == NULL){
fclose(fp_file);
return FALSE;
}
while(1) {
memset(cprobuff, 0x00, sizeof (cprobuff));
if(fgets(cprobuff,BUFF_SIZE, fp_file) == NULL) {/* File 정보 읽기 */
fclose(fp_file);
return FALSE;
}
else{
cprobuff[strlen(cprobuff)] = '\0';
/* Section명 검사*/
if (cprobuff[0] == '[' && memcmp(&cprobuff[1], cSetionName, strlen(cSetionName)) == 0
&& cprobuff[strlen(cSetionName)+1] == ']') {
while(1) {/* File 정보 읽기*/
memset (cprobuff, '\0', sizeof (cprobuff));
if(fgets(cprobuff, BUFF_SIZE, fp_file) == NULL) {
fclose(fp_file);
return FALSE;
}
else {
cprobuff[strlen(cprobuff)] = '\0';
/* 다른 Section*/
if (cprobuff[0] == '[') {
fclose(fp_file);
return FALSE;
}
/* Key 검사 */
if (memcmp(cprobuff, cKeyName, strlen(cKeyName)) == 0
&& cprobuff[strlen(cKeyName)] == '=') {
memset (cReturned, '\0', size);
memcpy (&cReturned[0], &cprobuff[strlen(cKeyName)+1],
(int)(strlen(cprobuff) - strlen(cKeyName) - 2));
cReturned[(int)(strlen(cprobuff) - strlen(cKeyName) - 2)]= 0x00;
fclose(fp_file);
return TRUE;
}
}
}/* End of while(1) */
}
}
}/* End of while(1) { */
fclose(fp_file);
return FALSE;
|
|
|
|
|