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

Function FIO_createFilename_fromOutDir

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

FIO_createFilename_fromOutDir() : * Takes a source file name and specified output directory, and * allocates memory for and returns a pointer to final path. * This function never returns an error (it may abort() in case of pb) */

Source from the content-addressed store, hash-verified

777 * This function never returns an error (it may abort() in case of pb)
778 */
779static char*
780FIO_createFilename_fromOutDir(const char* path, const char* outDirName, const size_t suffixLen)
781{
782 const char* filenameStart;
783 char separator;
784 char* result;
785
786#if defined(_MSC_VER) || defined(__MINGW32__) || defined (__MSVCRT__) /* windows support */
787 separator = '\\';
788#else
789 separator = '/';
790#endif
791
792 filenameStart = extractFilename(path, separator);
793#if defined(_MSC_VER) || defined(__MINGW32__) || defined (__MSVCRT__) /* windows support */
794 filenameStart = extractFilename(filenameStart, '/'); /* sometimes, '/' separator is also used on Windows (mingw+msys2) */
795#endif
796
797 result = (char*) calloc(1, strlen(outDirName) + 1 + strlen(filenameStart) + suffixLen + 1);
798 if (!result) {
799 EXM_THROW(30, "zstd: FIO_createFilename_fromOutDir: %s", strerror(errno));
800 }
801
802 memcpy(result, outDirName, strlen(outDirName));
803 if (outDirName[strlen(outDirName)-1] == separator) {
804 memcpy(result + strlen(outDirName), filenameStart, strlen(filenameStart));
805 } else {
806 memcpy(result + strlen(outDirName), &separator, 1);
807 memcpy(result + strlen(outDirName) + 1, filenameStart, strlen(filenameStart));
808 }
809
810 return result;
811}
812
813/* FIO_highbit64() :
814 * gives position of highest bit.

Callers 2

FIO_determineDstNameFunction · 0.85

Calls 3

extractFilenameFunction · 0.85
callocFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected