mirror of
https://github.com/facebook/zstd.git
synced 2025-07-29 11:21:22 +03:00
use strerror() to generate error message
as suggested by @terrelln . also: - hopefully fixed Windows version - changed the test, so that it passes on non-english OS stdlib errors.
This commit is contained in:
@ -389,8 +389,8 @@ static FILE* FIO_openSrcFile(const char* srcFileName)
|
||||
}
|
||||
|
||||
if (!UTIL_fileExist(srcFileName)) {
|
||||
DISPLAYLEVEL(1, "zstd: %s : No such file or directory (can't stat) -- ignored \n",
|
||||
srcFileName);
|
||||
DISPLAYLEVEL(1, "zstd: can't stat %s : %s -- ignored \n",
|
||||
srcFileName, strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -425,25 +425,26 @@ static FILE* FIO_openDstFile(const char* srcFileName, const char* dstFileName)
|
||||
if (srcFileName != NULL) {
|
||||
stat_t srcStat;
|
||||
stat_t dstStat;
|
||||
if (UTIL_getFileStat(srcFileName, &srcStat) && UTIL_getFileStat(dstFileName, &dstStat)) {
|
||||
if (srcStat.st_dev == dstStat.st_dev && srcStat.st_ino == dstStat.st_ino) {
|
||||
if ( UTIL_getFileStat(srcFileName, &srcStat)
|
||||
&& UTIL_getFileStat(dstFileName, &dstStat)
|
||||
&& srcStat.st_dev == dstStat.st_dev
|
||||
&& srcStat.st_ino == dstStat.st_ino ) {
|
||||
DISPLAYLEVEL(1, "zstd: Refusing to open a output file which will overwrite the input file \n");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (g_sparseFileSupport == 1) {
|
||||
g_sparseFileSupport = ZSTD_SPARSE_DEFAULT;
|
||||
}
|
||||
|
||||
if (UTIL_isRegularFile(dstFileName)) {
|
||||
FILE* fCheck;
|
||||
if (!strcmp(dstFileName, nulmark)) {
|
||||
EXM_THROW(40, "%s is unexpectedly a regular file", dstFileName);
|
||||
}
|
||||
/* Check if destination file already exists */
|
||||
fCheck = fopen( dstFileName, "rb" );
|
||||
FILE* const fCheck = fopen( dstFileName, "rb" );
|
||||
if (!strcmp(dstFileName, nulmark)) {
|
||||
EXM_THROW(40, "%s is unexpectedly categorized as a regular file",
|
||||
dstFileName);
|
||||
}
|
||||
if (fCheck != NULL) { /* dst file exists, authorization prompt */
|
||||
fclose(fCheck);
|
||||
if (!g_overwrite) {
|
||||
|
@ -24,8 +24,12 @@ extern "C" {
|
||||
int UTIL_fileExist(const char* filename)
|
||||
{
|
||||
stat_t statbuf;
|
||||
int const stat_success = stat(filename, &statbuf);
|
||||
return !stat_success;
|
||||
#if defined(_MSC_VER)
|
||||
int const stat_error = _stat64(filename, &statbuf);
|
||||
#else
|
||||
int const stat_error = stat(filename, &statbuf);
|
||||
#endif
|
||||
return !stat_error;
|
||||
}
|
||||
|
||||
int UTIL_isRegularFile(const char* infilename)
|
||||
|
@ -187,7 +187,7 @@ $ECHO "test: overwrite input file (must fail)"
|
||||
$ZSTD tmp -fo tmp && die "zstd overwrote the input file"
|
||||
$ZSTD tmp.zst -dfo tmp.zst && die "zstd overwrote the input file"
|
||||
$ECHO "test: properly detect input file does not exist"
|
||||
$ZSTD nothere 2>&1 | grep "o such file"
|
||||
$ZSTD nothere && die "zstd hasn't detected that input file does not exist"
|
||||
|
||||
$ECHO "test : file removal"
|
||||
$ZSTD -f --rm tmp
|
||||
|
Reference in New Issue
Block a user