瀏覽代碼

REVIEWED: GetDirectoryPath()

pull/1092/head
Ray 5 年之前
父節點
當前提交
46774a8167
共有 1 個文件被更改,包括 20 次插入5 次删除
  1. +20
    -5
      src/core.c

+ 20
- 5
src/core.c 查看文件

@ -1941,16 +1941,31 @@ const char *GetFileNameWithoutExt(const char *filePath)
// Get directory for a given filePath // Get directory for a given filePath
const char *GetDirectoryPath(const char *filePath) const char *GetDirectoryPath(const char *filePath)
{ {
/*
// NOTE: Directory separator is different in Windows and other platforms,
// fortunately, Windows also support the '/' separator, that's the one should be used
#if defined(_WIN32)
char separator = '\\';
#else
char separator = '/';
#endif
*/
const char *lastSlash = NULL; const char *lastSlash = NULL;
static char dirPath[MAX_FILEPATH_LENGTH]; static char dirPath[MAX_FILEPATH_LENGTH];
memset(dirPath, 0, MAX_FILEPATH_LENGTH); memset(dirPath, 0, MAX_FILEPATH_LENGTH);
// For security, we set starting path to current directory,
// obtained path will be concated to this
dirPath[0] = '.';
dirPath[1] = '/';
lastSlash = strprbrk(filePath, "\\/"); lastSlash = strprbrk(filePath, "\\/");
if (!lastSlash) return NULL;
// NOTE: Be careful, strncpy() is not safe, it does not care about '\0'
strncpy(dirPath, filePath, strlen(filePath) - (strlen(lastSlash) - 1));
dirPath[strlen(filePath) - strlen(lastSlash)] = '\0'; // Add '\0' manually
if (lastSlash)
{
// NOTE: Be careful, strncpy() is not safe, it does not care about '\0'
strncpy(dirPath + 2, filePath, strlen(filePath) - (strlen(lastSlash) - 1));
dirPath[2 + strlen(filePath) - strlen(lastSlash)] = '\0'; // Add '\0' manually
}
return dirPath; return dirPath;
} }

Loading…
取消
儲存