MCPcopy Create free account
hub / github.com/F-Stack/f-stack / FIO_determineCompressedName

Function FIO_determineCompressedName

freebsd/contrib/zstd/programs/fileio.c:1734–1767  ·  view source on GitHub ↗

FIO_determineCompressedName() : * create a destination filename for compressed srcFileName. * @return a pointer to it. * This function never returns an error (it may abort() in case of pb) */

Source from the content-addressed store, hash-verified

1732 * This function never returns an error (it may abort() in case of pb)
1733 */
1734static const char*
1735FIO_determineCompressedName(const char* srcFileName, const char* outDirName, const char* suffix)
1736{
1737 static size_t dfnbCapacity = 0;
1738 static char* dstFileNameBuffer = NULL; /* using static allocation : this function cannot be multi-threaded */
1739 char* outDirFilename = NULL;
1740 size_t sfnSize = strlen(srcFileName);
1741 size_t const srcSuffixLen = strlen(suffix);
1742 if (outDirName) {
1743 outDirFilename = FIO_createFilename_fromOutDir(srcFileName, outDirName, srcSuffixLen);
1744 sfnSize = strlen(outDirFilename);
1745 assert(outDirFilename != NULL);
1746 }
1747
1748 if (dfnbCapacity <= sfnSize+srcSuffixLen+1) {
1749 /* resize buffer for dstName */
1750 free(dstFileNameBuffer);
1751 dfnbCapacity = sfnSize + srcSuffixLen + 30;
1752 dstFileNameBuffer = (char*)malloc(dfnbCapacity);
1753 if (!dstFileNameBuffer) {
1754 EXM_THROW(30, "zstd: %s", strerror(errno));
1755 }
1756 }
1757 assert(dstFileNameBuffer != NULL);
1758
1759 if (outDirFilename) {
1760 memcpy(dstFileNameBuffer, outDirFilename, sfnSize);
1761 free(outDirFilename);
1762 } else {
1763 memcpy(dstFileNameBuffer, srcFileName, sfnSize);
1764 }
1765 memcpy(dstFileNameBuffer+sfnSize, suffix, srcSuffixLen+1 /* Include terminating null */);
1766 return dstFileNameBuffer;
1767}
1768
1769static unsigned long long FIO_getLargestFileSize(const char** inFileNames, unsigned nbFiles)
1770{

Callers 1

Calls 4

mallocFunction · 0.85
freeFunction · 0.50
memcpyFunction · 0.50

Tested by

no test coverage detected