diff --git a/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro b/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro index 3d33b963..af6b281a 100644 --- a/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro +++ b/build-qt/HGSolution/HGUpgrade/HGUpgrade.pro @@ -168,7 +168,7 @@ SOURCES += \ ../../../modules/base/HGMd5.cpp \ ../../../modules/base/HGUtility.cpp \ ../../../modules/base/HGThread.cpp \ - ../../../utility/HGString.cpp + ../../../utility/HGString.cpp \ HEADERS += \ ../../../app/upgrade/HGUpgrade.h \ @@ -177,7 +177,7 @@ HEADERS += \ ../../../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/modules/base/HGUtility.cpp b/modules/base/HGUtility.cpp index 4ebc1321..74425743 100644 --- a/modules/base/HGUtility.cpp +++ b/modules/base/HGUtility.cpp @@ -171,12 +171,24 @@ 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 @@ -252,7 +264,7 @@ HGResult HGAPI HGBase_GetConfigPath(HGChar* configPath, HGUInt maxLen) return HGBASE_ERR_INVALIDARG; } - HGChar moduleName[56]; + HGChar moduleName[256]; HGBase_GetModuleName(NULL, moduleName, 256); HGChar modulePath[256]; HGBase_GetFilePath(moduleName, modulePath, 256); @@ -269,7 +281,7 @@ HGResult HGAPI HGBase_GetConfigPath(HGChar* configPath, HGUInt maxLen) #else if (dataPath[strlen(dataPath) - 1] != '/') strcat(dataPath, "/"); - strcat(cfgPath, "Cfg/"); + strcat(dataPath, "Cfg/"); #endif if (maxLen < strlen(dataPath) + 1) @@ -316,7 +328,7 @@ HGResult HGAPI HGBase_GetLogFilePath(HGChar* logFilePath, HGUInt maxLen) return HGBASE_ERR_INVALIDARG; } - HGChar moduleName[56]; + HGChar moduleName[256]; HGBase_GetModuleName(NULL, moduleName, 256); HGChar modulePath[256]; HGBase_GetFilePath(moduleName, modulePath, 256); @@ -333,7 +345,7 @@ HGResult HGAPI HGBase_GetLogFilePath(HGChar* logFilePath, HGUInt maxLen) #else if (dataPath[strlen(dataPath) - 1] != '/') strcat(dataPath, "/"); - strcat(cfgPath, "Cfg/"); + strcat(dataPath, "Cfg/"); #endif if (maxLen < strlen(dataPath) + 1) 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 +}