From 9dd5768ecc2605a4d6986f24e2ae56ed92f85464 Mon Sep 17 00:00:00 2001 From: Elms Date: Mon, 19 Apr 2021 22:34:31 -0700 Subject: [PATCH] Intime: simplify and fix stat on different directory --- wolfcrypt/src/wc_port.c | 40 ++++++++++++++++++------------------- wolfssl/wolfcrypt/wc_port.h | 21 +++++-------------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c index 41616f887..79e742919 100644 --- a/wolfcrypt/src/wc_port.c +++ b/wolfcrypt/src/wc_port.c @@ -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; diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index 0b41c3410..81616e3a7 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -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;