diff --git a/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro b/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro
index d7599652..af6b281a 100644
--- a/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro
+++ b/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro
@@ -164,18 +164,20 @@ SOURCES += \
../../../app/upgrade/HGUpgrade.cpp \
../../../app/upgrade/main.cpp \
../../../app/upgrade/mainwindow.cpp \
+ ../../../modules/base/HGIni.cpp \
../../../modules/base/HGMd5.cpp \
../../../modules/base/HGUtility.cpp \
../../../modules/base/HGThread.cpp \
- ../../../utility/HGString.cpp
+ ../../../utility/HGString.cpp \
HEADERS += \
../../../app/upgrade/HGUpgrade.h \
../../../app/upgrade/mainwindow.h \
+ ../../../modules/base/HGIni.h \
../../../modules/base/HGMd5.h \
../../../modules/base/HGUtility.h \
../../../modules/base/HGThread.h \
- ../../../utility/HGString.h
+ ../../../utility/HGString.h \
FORMS += \
../../../app/upgrade/mainwindow.ui
diff --git a/build/linux/HGUpload/HGUpload.cbp b/build/linux/HGUpload/HGUpload.cbp
index 93cedbd7..62c8a0b9 100644
--- a/build/linux/HGUpload/HGUpload.cbp
+++ b/build/linux/HGUpload/HGUpload.cbp
@@ -168,6 +168,8 @@
+
+
diff --git a/build/windows/HGUpload/HGUpload.vcxproj b/build/windows/HGUpload/HGUpload.vcxproj
index ca2c2d30..8aff5ebe 100644
--- a/build/windows/HGUpload/HGUpload.vcxproj
+++ b/build/windows/HGUpload/HGUpload.vcxproj
@@ -19,11 +19,13 @@
+
+
diff --git a/modules/base/HGUtility.cpp b/modules/base/HGUtility.cpp
index 729a9257..74425743 100644
--- a/modules/base/HGUtility.cpp
+++ b/modules/base/HGUtility.cpp
@@ -1,5 +1,6 @@
#include "HGUtility.h"
#include "HGInc.h"
+#include "HGIni.h"
#if defined(HG_CMP_MSC)
#include
#include
@@ -170,18 +171,28 @@ HGResult HGAPI HGBase_GetModuleName(HGPointer addr, HGChar* name, HGUInt maxLen)
}
#if !defined(HG_CMP_MSC)
- Dl_info dlinfo;
- if (0 == dladdr(addr, &dlinfo))
- return HGBASE_ERR_FAIL;
- if (maxLen < strlen(dlinfo.dli_fname) + 1)
- return HGBASE_ERR_FAIL;
- strcpy(name, dlinfo.dli_fname);
+ if (NULL == addr)
+ {
+ char dir[PATH_MAX] = {0};
+ if (0 == readlink("/proc/self/exe", dir, PATH_MAX))
+ return HGBASE_ERR_FAIL;
+ if (maxLen < strlen(dir) + 1)
+ return HGBASE_ERR_FAIL;
+ strcpy(name, dir);
+ }
+ else
+ {
+ Dl_info dlinfo;
+ if (0 == dladdr(addr, &dlinfo))
+ return HGBASE_ERR_FAIL;
+ if (maxLen < strlen(dlinfo.dli_fname) + 1)
+ return HGBASE_ERR_FAIL;
+ strcpy(name, dlinfo.dli_fname);
+ }
#else
HMODULE hModule = NULL;
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
| GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (LPCSTR)addr, &hModule);
- if (NULL == hModule)
- return HGBASE_ERR_FAIL;
CHAR moduleName[MAX_PATH] = { 0 };
DWORD len = GetModuleFileNameA(hModule, moduleName, MAX_PATH);
@@ -253,6 +264,32 @@ HGResult HGAPI HGBase_GetConfigPath(HGChar* configPath, HGUInt maxLen)
return HGBASE_ERR_INVALIDARG;
}
+ HGChar moduleName[256];
+ HGBase_GetModuleName(NULL, moduleName, 256);
+ HGChar modulePath[256];
+ HGBase_GetFilePath(moduleName, modulePath, 256);
+ strcat(modulePath, "first.cfg");
+
+ HGChar dataPath[256] = {0};
+ HGBase_GetProfileString(modulePath, "constraints", "local_data_path", "", dataPath, 256);
+ if ('\0' != *dataPath)
+ {
+#if defined(HG_CMP_MSC)
+ if (dataPath[strlen(dataPath) - 1] != '\\')
+ strcat(dataPath, "\\");
+ strcat(dataPath, "Cfg\\");
+#else
+ if (dataPath[strlen(dataPath) - 1] != '/')
+ strcat(dataPath, "/");
+ strcat(dataPath, "Cfg/");
+#endif
+
+ if (maxLen < strlen(dataPath) + 1)
+ return HGBASE_ERR_FAIL;
+ strcpy(configPath, dataPath);
+ return HGBASE_ERR_OK;
+ }
+
#if defined(HG_CMP_MSC)
CHAR cfgPath[MAX_PATH] = { 0 };
BOOL ret = SHGetSpecialFolderPathA(NULL, cfgPath, CSIDL_APPDATA, FALSE);
@@ -291,6 +328,32 @@ HGResult HGAPI HGBase_GetLogFilePath(HGChar* logFilePath, HGUInt maxLen)
return HGBASE_ERR_INVALIDARG;
}
+ HGChar moduleName[256];
+ HGBase_GetModuleName(NULL, moduleName, 256);
+ HGChar modulePath[256];
+ HGBase_GetFilePath(moduleName, modulePath, 256);
+ strcat(modulePath, "first.cfg");
+
+ HGChar dataPath[256] = { 0 };
+ HGBase_GetProfileString(modulePath, "constraints", "local_data_path", "", dataPath, 256);
+ if ('\0' != *dataPath)
+ {
+#if defined(HG_CMP_MSC)
+ if (dataPath[strlen(dataPath) - 1] != '\\')
+ strcat(dataPath, "\\");
+ strcat(dataPath, "Cfg\\");
+#else
+ if (dataPath[strlen(dataPath) - 1] != '/')
+ strcat(dataPath, "/");
+ strcat(dataPath, "Cfg/");
+#endif
+
+ if (maxLen < strlen(dataPath) + 1)
+ return HGBASE_ERR_FAIL;
+ strcpy(logFilePath, dataPath);
+ return HGBASE_ERR_OK;
+ }
+
#if defined(HG_CMP_MSC)
CHAR logPath[MAX_PATH] = { 0 };
BOOL ret = SHGetSpecialFolderPathA(NULL, logPath, CSIDL_APPDATA, FALSE);
diff --git a/sdk/upload/main.cpp b/sdk/upload/main.cpp
index c34876e3..a9505e21 100644
--- a/sdk/upload/main.cpp
+++ b/sdk/upload/main.cpp
@@ -108,4 +108,4 @@ int cgiMain()
//´òÓ¡Êä³ö
fprintf(cgiOut, " upload file success.
\n");
return cgiFormSuccess;
-}
\ No newline at end of file
+}