Intime: simplify and fix stat on different directory

This commit is contained in:
Elms
2021-04-19 22:34:31 -07:00
parent 18eca4deff
commit 9dd5768ecc
2 changed files with 25 additions and 36 deletions

View File

@@ -514,17 +514,17 @@ int wc_ReadDirFirst(ReadDirCtx* ctx, const char* path, char** name)
}
do {
if (IntimeNormalFile(ctx)) {
dnameLen = (int)XSTRLEN(IntimeFilename(ctx));
dnameLen = (int)XSTRLEN(IntimeFilename(ctx));
if (pathLen + dnameLen + 2 > MAX_FILENAME_SZ) {
return BAD_PATH_ERROR;
}
XSTRNCPY(ctx->name, path, pathLen + 1);
ctx->name[pathLen] = '\\';
XSTRNCPY(ctx->name + pathLen + 1,
IntimeFilename(ctx),
MAX_FILENAME_SZ - pathLen - 1);
if (pathLen + dnameLen + 2 > MAX_FILENAME_SZ) {
return BAD_PATH_ERROR;
}
XSTRNCPY(ctx->name, path, pathLen + 1);
ctx->name[pathLen] = '\\';
XSTRNCPY(ctx->name + pathLen + 1,
IntimeFilename(ctx),
MAX_FILENAME_SZ - pathLen - 1);
if (0 == wc_FileExists(ctx->name)) {
if (name)
*name = ctx->name;
return 0;
@@ -657,17 +657,17 @@ int wc_ReadDirNext(ReadDirCtx* ctx, const char* path, char** name)
#elif defined(INTIME_RTOS)
while (IntimeFindNext(&ctx->FindFileData)) {
if (IntimeNormalFile(ctx)) {
dnameLen = (int)XSTRLEN(IntimeFilename(ctx));
dnameLen = (int)XSTRLEN(IntimeFilename(ctx));
if (pathLen + dnameLen + 2 > MAX_FILENAME_SZ) {
return BAD_PATH_ERROR;
}
XSTRNCPY(ctx->name, path, pathLen + 1);
ctx->name[pathLen] = '\\';
XSTRNCPY(ctx->name + pathLen + 1,
IntimeFilename(ctx),
MAX_FILENAME_SZ - pathLen - 1);
if (pathLen + dnameLen + 2 > MAX_FILENAME_SZ) {
return BAD_PATH_ERROR;
}
XSTRNCPY(ctx->name, path, pathLen + 1);
ctx->name[pathLen] = '\\';
XSTRNCPY(ctx->name + pathLen + 1,
IntimeFilename(ctx),
MAX_FILENAME_SZ - pathLen - 1);
if (0 == wc_FileExists(ctx->name)) {
if (name)
*name = ctx->name;
return 0;

View File

@@ -776,22 +776,11 @@ WOLFSSL_API int wolfCrypt_Cleanup(void);
struct M2MB_STAT s;
#elif defined(INTIME_RTOS)
struct stat64 s;
#if defined(INTIMEVER) && INTIMEVER > 0x0600
FIND_FILE_DATA FindFileData;
#define IntimeFindFirst(name, data) FindFirstRtFile(name, data, 0)
#define IntimeFindNext(data) FindNextRtFile(data)
#define IntimeFindClose(data) FindRtFileClose(data)
#define IntimeFilename(ctx) ctx->FindFileData.cFileName
#define IntimeNormalFile(ctx) (ctx->FindFileData.dwFileAttributes \
& FILE_ATTR_NORMAL)
#else
struct _find64 FindFileData;
#define IntimeFindFirst(name, data) (0 == _findfirst64(name, data))
#define IntimeFindNext(data) (0 == _findnext64(data))
#define IntimeFindClose(data) (0 == _findclose64(data))
#define IntimeFilename(ctx) ctx->FindFileData.f_filename
#define IntimeNormalFile(ctx) (0 == wc_FileExists(IntimeFilename(ctx)))
#endif
struct _find64 FindFileData;
#define IntimeFindFirst(name, data) (0 == _findfirst64(name, data))
#define IntimeFindNext(data) (0 == _findnext64(data))
#define IntimeFindClose(data) (0 == _findclose64(data))
#define IntimeFilename(ctx) ctx->FindFileData.f_filename
#else
struct dirent* entry;
DIR* dir;