| Index: source/tools/toolutil/filetools.cpp
|
| diff --git a/source/tools/toolutil/filetools.cpp b/source/tools/toolutil/filetools.cpp
|
| index 238ef7ba155004f835fbe54ce94c402c4358caad..9b61c879285f2cdfef1649943857a47502c7b113 100644
|
| --- a/source/tools/toolutil/filetools.cpp
|
| +++ b/source/tools/toolutil/filetools.cpp
|
| @@ -4,6 +4,7 @@
|
| *******************************************************************************
|
| */
|
|
|
| +#include "unicode/platform.h"
|
| #if U_PLATFORM == U_PF_MINGW
|
| // *cough* - for struct stat
|
| #ifdef __STRICT_ANSI__
|
| @@ -13,6 +14,7 @@
|
|
|
| #include "filetools.h"
|
| #include "filestrm.h"
|
| +#include "charstr.h"
|
| #include "cstring.h"
|
| #include "unicode/putil.h"
|
| #include "putilimp.h"
|
| @@ -27,8 +29,6 @@
|
| #include <dirent.h>
|
| typedef struct dirent DIRENT;
|
|
|
| -#define MAX_PATH_SIZE 4096 /* Set the limit for the size of the path. */
|
| -
|
| #define SKIP1 "."
|
| #define SKIP2 ".."
|
| #endif
|
| @@ -56,20 +56,24 @@ isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir)
|
|
|
| while ((dirEntry = readdir(pDir)) != NULL) {
|
| if (uprv_strcmp(dirEntry->d_name, SKIP1) != 0 && uprv_strcmp(dirEntry->d_name, SKIP2) != 0) {
|
| - char newpath[MAX_PATH_SIZE] = "";
|
| - uprv_strcpy(newpath, checkAgainst);
|
| - uprv_strcat(newpath, U_FILE_SEP_STRING);
|
| - uprv_strcat(newpath, dirEntry->d_name);
|
| -
|
| - if ((subDirp = opendir(newpath)) != NULL) {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + icu::CharString newpath(checkAgainst, -1, status);
|
| + newpath.append(U_FILE_SEP_STRING, -1, status);
|
| + newpath.append(dirEntry->d_name, -1, status);
|
| + if (U_FAILURE(status)) {
|
| + fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, u_errorName(status));
|
| + return FALSE;
|
| + };
|
| +
|
| + if ((subDirp = opendir(newpath.data())) != NULL) {
|
| /* If this new path is a directory, make a recursive call with the newpath. */
|
| closedir(subDirp);
|
| - isLatest = isFileModTimeLater(filePath, newpath, isDir);
|
| + isLatest = isFileModTimeLater(filePath, newpath.data(), isDir);
|
| if (!isLatest) {
|
| break;
|
| }
|
| } else {
|
| - int32_t latest = whichFileModTimeIsLater(filePath, newpath);
|
| + int32_t latest = whichFileModTimeIsLater(filePath, newpath.data());
|
| if (latest < 0 || latest == 2) {
|
| isLatest = FALSE;
|
| break;
|
|
|