2013-09-17 Christopher Faylor * filemanip.cc (find_tar_ext): Generalize search for .tar extension, avoiding looking for specific compression types. Index: filemanip.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/filemanip.cc,v retrieving revision 2.36 diff -u -p -r2.36 filemanip.cc --- filemanip.cc 30 Aug 2012 22:32:14 -0000 2.36 +++ filemanip.cc 17 Sep 2013 19:59:43 -0000 @@ -70,18 +70,13 @@ base (const std::string& aString) int find_tar_ext (const char *path) { - char *end = strchr (path, '\0'); - /* check in longest first order */ - const char *ext; - if ((ext = trail (path, ".tar.bz2")) && (end - ext) == 8) - return ext - path; - if ((ext = trail (path, ".tar.gz")) && (end - ext) == 7) - return ext - path; - if ((ext = trail (path, ".tar")) && (end - ext) == 4) - return ext - path; - if ((ext = trail (path, ".tar.lzma")) && (end - ext) == 9) - return ext - path; - return 0; + char *p = strchr (path, '\0') - 9; + if (p <= path) + return 0; + if ((p = strstr (p, ".tar")) != NULL) + return p - path; + else + return 0; } /* Parse a filename into package, version, and extension components. */