mirror of
https://github.com/facebook/zstd.git
synced 2025-12-10 00:06:51 -05:00
FIO_openSrcFile() Returns File Stat
This commit is contained in:
parent
23a356cdde
commit
2ad6855ac1
@ -531,26 +531,26 @@ static int FIO_removeFile(const char* path)
|
|||||||
/** FIO_openSrcFile() :
|
/** FIO_openSrcFile() :
|
||||||
* condition : `srcFileName` must be non-NULL. `prefs` may be NULL.
|
* condition : `srcFileName` must be non-NULL. `prefs` may be NULL.
|
||||||
* @result : FILE* to `srcFileName`, or NULL if it fails */
|
* @result : FILE* to `srcFileName`, or NULL if it fails */
|
||||||
static FILE* FIO_openSrcFile(const FIO_prefs_t* const prefs, const char* srcFileName)
|
static FILE* FIO_openSrcFile(const FIO_prefs_t* const prefs, const char* srcFileName, stat_t* statbuf)
|
||||||
{
|
{
|
||||||
stat_t statbuf;
|
|
||||||
int allowBlockDevices = prefs != NULL ? prefs->allowBlockDevices : 0;
|
int allowBlockDevices = prefs != NULL ? prefs->allowBlockDevices : 0;
|
||||||
assert(srcFileName != NULL);
|
assert(srcFileName != NULL);
|
||||||
|
assert(statbuf != NULL);
|
||||||
if (!strcmp (srcFileName, stdinmark)) {
|
if (!strcmp (srcFileName, stdinmark)) {
|
||||||
DISPLAYLEVEL(4,"Using stdin for input \n");
|
DISPLAYLEVEL(4,"Using stdin for input \n");
|
||||||
SET_BINARY_MODE(stdin);
|
SET_BINARY_MODE(stdin);
|
||||||
return stdin;
|
return stdin;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UTIL_stat(srcFileName, &statbuf)) {
|
if (!UTIL_stat(srcFileName, statbuf)) {
|
||||||
DISPLAYLEVEL(1, "zstd: can't stat %s : %s -- ignored \n",
|
DISPLAYLEVEL(1, "zstd: can't stat %s : %s -- ignored \n",
|
||||||
srcFileName, strerror(errno));
|
srcFileName, strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UTIL_isRegularFileStat(&statbuf)
|
if (!UTIL_isRegularFileStat(statbuf)
|
||||||
&& !UTIL_isFIFOStat(&statbuf)
|
&& !UTIL_isFIFOStat(statbuf)
|
||||||
&& !(allowBlockDevices && UTIL_isBlockDevStat(&statbuf))
|
&& !(allowBlockDevices && UTIL_isBlockDevStat(statbuf))
|
||||||
) {
|
) {
|
||||||
DISPLAYLEVEL(1, "zstd: %s is not a regular file -- ignored \n",
|
DISPLAYLEVEL(1, "zstd: %s is not a regular file -- ignored \n",
|
||||||
srcFileName);
|
srcFileName);
|
||||||
@ -1709,6 +1709,7 @@ FIO_compressFilename_srcFile(FIO_ctx_t* const fCtx,
|
|||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
FILE* srcFile;
|
FILE* srcFile;
|
||||||
|
stat_t srcFileStat;
|
||||||
DISPLAYLEVEL(6, "FIO_compressFilename_srcFile: %s \n", srcFileName);
|
DISPLAYLEVEL(6, "FIO_compressFilename_srcFile: %s \n", srcFileName);
|
||||||
|
|
||||||
/* ensure src is not a directory */
|
/* ensure src is not a directory */
|
||||||
@ -1732,7 +1733,7 @@ FIO_compressFilename_srcFile(FIO_ctx_t* const fCtx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
srcFile = FIO_openSrcFile(prefs, srcFileName);
|
srcFile = FIO_openSrcFile(prefs, srcFileName, &srcFileStat);
|
||||||
if (srcFile == NULL) return 1; /* srcFile could not be opened */
|
if (srcFile == NULL) return 1; /* srcFile could not be opened */
|
||||||
|
|
||||||
AIO_ReadPool_setFile(ress.readCtx, srcFile);
|
AIO_ReadPool_setFile(ress.readCtx, srcFile);
|
||||||
@ -2524,6 +2525,7 @@ static int FIO_decompressDstFile(FIO_ctx_t* const fCtx,
|
|||||||
static int FIO_decompressSrcFile(FIO_ctx_t* const fCtx, FIO_prefs_t* const prefs, dRess_t ress, const char* dstFileName, const char* srcFileName)
|
static int FIO_decompressSrcFile(FIO_ctx_t* const fCtx, FIO_prefs_t* const prefs, dRess_t ress, const char* dstFileName, const char* srcFileName)
|
||||||
{
|
{
|
||||||
FILE* srcFile;
|
FILE* srcFile;
|
||||||
|
stat_t srcFileStat;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
if (UTIL_isDirectory(srcFileName)) {
|
if (UTIL_isDirectory(srcFileName)) {
|
||||||
@ -2531,7 +2533,7 @@ static int FIO_decompressSrcFile(FIO_ctx_t* const fCtx, FIO_prefs_t* const prefs
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
srcFile = FIO_openSrcFile(prefs, srcFileName);
|
srcFile = FIO_openSrcFile(prefs, srcFileName, &srcFileStat);
|
||||||
if (srcFile==NULL) return 1;
|
if (srcFile==NULL) return 1;
|
||||||
AIO_ReadPool_setFile(ress.readCtx, srcFile);
|
AIO_ReadPool_setFile(ress.readCtx, srcFile);
|
||||||
|
|
||||||
@ -2899,10 +2901,11 @@ static InfoError
|
|||||||
getFileInfo_fileConfirmed(fileInfo_t* info, const char* inFileName)
|
getFileInfo_fileConfirmed(fileInfo_t* info, const char* inFileName)
|
||||||
{
|
{
|
||||||
InfoError status;
|
InfoError status;
|
||||||
FILE* const srcFile = FIO_openSrcFile(NULL, inFileName);
|
stat_t srcFileStat;
|
||||||
|
FILE* const srcFile = FIO_openSrcFile(NULL, inFileName, &srcFileStat);
|
||||||
ERROR_IF(srcFile == NULL, info_file_error, "Error: could not open source file %s", inFileName);
|
ERROR_IF(srcFile == NULL, info_file_error, "Error: could not open source file %s", inFileName);
|
||||||
|
|
||||||
info->compressedSize = UTIL_getFileSize(inFileName);
|
info->compressedSize = UTIL_getFileSizeStat(&srcFileStat);
|
||||||
status = FIO_analyzeFrames(info, srcFile);
|
status = FIO_analyzeFrames(info, srcFile);
|
||||||
|
|
||||||
fclose(srcFile);
|
fclose(srcFile);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user