89 lines
1.6 KiB
C++
89 lines
1.6 KiB
C++
#include "HGLog.h"
|
|
#include "HGInc.h"
|
|
|
|
struct HGLogImpl
|
|
{
|
|
HGLogImpl()
|
|
{
|
|
m_file = NULL;
|
|
}
|
|
|
|
~HGLogImpl()
|
|
{
|
|
if (NULL != m_file)
|
|
{
|
|
fclose(m_file);
|
|
m_file = NULL;
|
|
}
|
|
}
|
|
|
|
FILE* m_file;
|
|
};
|
|
|
|
HGResult HGAPI HGBase_OpenLog(const HGChar* fileName, HGLog* log)
|
|
{
|
|
if (NULL == fileName || NULL == log)
|
|
{
|
|
return HGBASE_ERR_INVALIDARG;
|
|
}
|
|
|
|
FILE *file = fopen(fileName, "a+");
|
|
if (NULL == file)
|
|
{
|
|
return HGBASE_ERR_ACCESSDENIED;
|
|
}
|
|
|
|
HGLogImpl* logImpl = new HGLogImpl;
|
|
logImpl->m_file = file;
|
|
*log = (HGLog)logImpl;
|
|
return HGBASE_ERR_OK;
|
|
}
|
|
|
|
HGResult HGAPI HGBase_CloseLog(HGLog log)
|
|
{
|
|
if (NULL == log)
|
|
{
|
|
return HGBASE_ERR_INVALIDARG;
|
|
}
|
|
|
|
HGLogImpl* logImpl = (HGLogImpl*)log;
|
|
delete logImpl;
|
|
return HGBASE_ERR_OK;
|
|
}
|
|
|
|
HGResult HGAPI HGBase_GetLogFileSize(HGLog log, HGLonglong* size)
|
|
{
|
|
if (NULL == log || NULL == size)
|
|
{
|
|
return HGBASE_ERR_INVALIDARG;
|
|
}
|
|
|
|
HGLogImpl* logImpl = (HGLogImpl*)log;
|
|
#if defined(HG_CMP_MSC)
|
|
_fseeki64(logImpl->m_file, 0, SEEK_END);
|
|
*size = _ftelli64(logImpl->m_file);
|
|
#else
|
|
fseeko64(logImpl->m_file, 0, SEEK_END);
|
|
*size = ftello64(logImpl->m_file);
|
|
#endif
|
|
return HGBASE_ERR_OK;
|
|
}
|
|
|
|
HGResult HGAPI HGBase_WriteLog(HGLog log, const HGChar* info)
|
|
{
|
|
if (NULL == log || NULL == info || '\0' == *info)
|
|
{
|
|
return HGBASE_ERR_INVALIDARG;
|
|
}
|
|
|
|
HGLogImpl* logImpl = (HGLogImpl*)log;
|
|
#if defined(HG_CMP_MSC)
|
|
_fseeki64(logImpl->m_file, 0, SEEK_END);
|
|
#else
|
|
fseeko64(logImpl->m_file, 0, SEEK_END);
|
|
#endif
|
|
fwrite(info, 1, strlen(info), logImpl->m_file);
|
|
fwrite("\n", 1, strlen("\n"), logImpl->m_file);
|
|
fflush(logImpl->m_file);
|
|
return HGBASE_ERR_OK;
|
|
} |