Ignore extension in command name matching
This commit is contained in:
+26
-12
@@ -179,6 +179,23 @@ static void waitEnter(void)
|
|||||||
(void)unused;
|
(void)unused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* lastNameFromPath(const char* path)
|
||||||
|
{
|
||||||
|
const char* name = path;
|
||||||
|
if (strrchr(name, '/')) name = strrchr(name, '/') + 1;
|
||||||
|
if (strrchr(name, '\\')) name = strrchr(name, '\\') + 1; /* windows */
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! exeNameMatch() :
|
||||||
|
@return : a non-zero value if exeName matches test, excluding the extension
|
||||||
|
*/
|
||||||
|
static int exeNameMatch(const char* exeName, const char* test)
|
||||||
|
{
|
||||||
|
return !strncmp(exeName, test, strlen(test)) &&
|
||||||
|
(exeName[strlen(test)] == '\0' || exeName[strlen(test)] == '.');
|
||||||
|
}
|
||||||
|
|
||||||
/*! readU32FromChar() :
|
/*! readU32FromChar() :
|
||||||
@return : unsigned integer value read from input in `char` format
|
@return : unsigned integer value read from input in `char` format
|
||||||
allows and interprets K, KB, KiB, M, MB and MiB suffix.
|
allows and interprets K, KB, KiB, M, MB and MiB suffix.
|
||||||
@@ -318,20 +335,17 @@ int main(int argCount, const char* argv[])
|
|||||||
if (filenameTable==NULL) { DISPLAY("zstd: %s \n", strerror(errno)); exit(1); }
|
if (filenameTable==NULL) { DISPLAY("zstd: %s \n", strerror(errno)); exit(1); }
|
||||||
filenameTable[0] = stdinmark;
|
filenameTable[0] = stdinmark;
|
||||||
g_displayOut = stderr;
|
g_displayOut = stderr;
|
||||||
/* Pick out program name from path. Don't rely on stdlib because of conflicting behavior */
|
|
||||||
{ size_t pos;
|
programName = lastNameFromPath(programName);
|
||||||
for (pos = (int)strlen(programName); pos > 0; pos--) { if (programName[pos] == '/') { pos++; break; } }
|
|
||||||
programName += pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* preset behaviors */
|
/* preset behaviors */
|
||||||
if (!strcmp(programName, ZSTD_UNZSTD)) operation=zom_decompress;
|
if (exeNameMatch(programName, ZSTD_UNZSTD)) operation=zom_decompress;
|
||||||
if (!strcmp(programName, ZSTD_CAT)) { operation=zom_decompress; forceStdout=1; FIO_overwriteMode(); outFileName=stdoutmark; g_displayLevel=1; }
|
if (exeNameMatch(programName, ZSTD_CAT)) { operation=zom_decompress; forceStdout=1; FIO_overwriteMode(); outFileName=stdoutmark; g_displayLevel=1; }
|
||||||
if (!strcmp(programName, ZSTD_GZ)) { suffix = GZ_EXTENSION; FIO_setCompressionType(FIO_gzipCompression); FIO_setRemoveSrcFile(1); } /* behave like gzip */
|
if (exeNameMatch(programName, ZSTD_GZ)) { suffix = GZ_EXTENSION; FIO_setCompressionType(FIO_gzipCompression); FIO_setRemoveSrcFile(1); } /* behave like gzip */
|
||||||
if (!strcmp(programName, ZSTD_GUNZIP)) { operation=zom_decompress; FIO_setRemoveSrcFile(1); } /* behave like gunzip */
|
if (exeNameMatch(programName, ZSTD_GUNZIP)) { operation=zom_decompress; FIO_setRemoveSrcFile(1); } /* behave like gunzip */
|
||||||
if (!strcmp(programName, ZSTD_GZCAT)) { operation=zom_decompress; forceStdout=1; FIO_overwriteMode(); outFileName=stdoutmark; g_displayLevel=1; } /* behave like gzcat */
|
if (exeNameMatch(programName, ZSTD_GZCAT)) { operation=zom_decompress; forceStdout=1; FIO_overwriteMode(); outFileName=stdoutmark; g_displayLevel=1; } /* behave like gzcat */
|
||||||
if (!strcmp(programName, ZSTD_LZMA)) { suffix = LZMA_EXTENSION; FIO_setCompressionType(FIO_lzmaCompression); FIO_setRemoveSrcFile(1); } /* behave like lzma */
|
if (exeNameMatch(programName, ZSTD_LZMA)) { suffix = LZMA_EXTENSION; FIO_setCompressionType(FIO_lzmaCompression); FIO_setRemoveSrcFile(1); } /* behave like lzma */
|
||||||
if (!strcmp(programName, ZSTD_XZ)) { suffix = XZ_EXTENSION; FIO_setCompressionType(FIO_xzCompression); FIO_setRemoveSrcFile(1); } /* behave like xz */
|
if (exeNameMatch(programName, ZSTD_XZ)) { suffix = XZ_EXTENSION; FIO_setCompressionType(FIO_xzCompression); FIO_setRemoveSrcFile(1); } /* behave like xz */
|
||||||
memset(&compressionParams, 0, sizeof(compressionParams));
|
memset(&compressionParams, 0, sizeof(compressionParams));
|
||||||
|
|
||||||
/* command switches */
|
/* command switches */
|
||||||
|
|||||||
Reference in New Issue
Block a user