/**********************************************************************************/
/* 디렉토리를 체크하여 최종 수정일이 1시간이 지난파일이 있으면 삭제 한다. */
/**********************************************************************************/
void ExpiredFileRemove()
{
DIR *dirp;
struct dirent *dp;
char szFilePath[512] = {'\0'};
char szFileName[512] = {'\0'};
struct timeval curr;
long lExpireTime = 0;
char szCurrTime[20] = {'\0'};
char szExpireTime[20] = {'\0'};
char szFileTime[20] = {'\0'};
struct stat Fstat;
int nFileCnt = 0;
/***************************************************************************************/
/* 현재 시간 */
gettimeofday( &curr, NULL);
memset(szCurrTime, 0x00, sizeof(szCurrTime));
strftime(szCurrTime, sizeof(szCurrTime), "%Y%m%d%H%M%S", localtime((time_t*)&curr.tv_sec));
/* 현재시간의 1시간 이전 시간 */
lExpireTime = (curr.tv_sec) - ( 1 * 60 * 60 );
memset(szExpireTime, 0x00, sizeof(szExpireTime));
strftime(szExpireTime, sizeof(szExpireTime), "%Y%m%d%H%M%S", localtime((time_t*)&lExpireTime));
/* 디렉토리 Search, 없으면 디렉토리 생성 */
memset(szFilePath, 0x00, sizeof(szFilePath));
sprintf(szFilePath, "/data/log/");
if ((dirp = opendir(szFilePath)) == NULL)
{
if (errno != ENOENT)
{
sprintf(stderr,"(ERROR) Opendir Failed. szFilePath[%s] errno=%d(%s)\n",szFilePath,errno,strerror(errno));
return;
}
if (mkdir(szFilePath,0755) < 0)
{
sprintf(stderr,"(ERROR) Mkdir Failed. szFilePath[%s] errno=%d(%s)\n",szFilePath,errno,strerror(errno));
return;
}
}
else
{
closedir(dirp);
}
/***************************************************************************************/
if ((dirp = opendir(szFilePath)) == NULL)
{
sprintf(stderr, "(ERROR) opendir(). Failed.[%s] errno=%d(%s)\n",szFilePath,errno,strerror(errno));
return;
}
else
{
while ( ( dp = readdir( dirp )) != NULL )
{
if( strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0 )
{
nFileCnt++;
memset(szFileName, 0x00, sizeof(szFileName));
sprintf(szFileName, "%s%s", szFilePath, dp->d_name);
if (stat(szFileName, &Fstat) != 0)
{
sprintf(stderr, "(ERROR) File Not Found. szFileName[%s]\n", szFileName);
continue;
}
memset(szFileTime, 0x00, sizeof(szFileTime));
strftime(szFileTime, sizeof(szFileTime), "%Y%m%d%H%M%S", localtime((time_t*)&Fstat.st_mtime));
/* 파일의 최종수정시간이 1시간이전의 파일 삭제 처리 */
if( strncmp(szExpireTime, szFileTime, 14) > 0 ) {
if( remove(szFileName) < 0 ) {
remove(szFileName);
}
}
} /* 현재디렉토리와 상위디렉토리가 아닌 파일이 있을 경우 */
}
closedir(dirp);
}
return;
}