diff -uprN old/src/main.c new/src/main.c --- old/src/main.c 2009-05-09 17:52:57.000000000 +0200 +++ new/src/main.c 2009-05-09 18:06:05.000000000 +0200 @@ -172,7 +172,7 @@ main(int argc, char **argv) if (opt.purge && !opt.purge_all) { fprintf (stdout, "Cleaning packages and build sources...\n"); - if (purge ("tgz") + rmdir_rf (SRCDIR, 1, opt.verbose) == 0) + if (purge ("tgz") + purge ("txz") + rmdir_rf (SRCDIR, 1, opt.verbose) == 0) fprintf (stderr, "Nothing was removed.\n"); } else if (!opt.purge && opt.purge_all) { diff -uprN old/src/search.c new/src/search.c --- old/src/search.c 2009-05-09 17:52:57.000000000 +0200 +++ new/src/search.c 2009-05-09 17:55:55.000000000 +0200 @@ -642,8 +642,11 @@ pkg_ok (short set_match, regex_t *preg, while (strchr (" :\r\n", ptr[0])) ptr++; e = strcasestr (ptr, ".tgz"); - if (!e) - return false; + if (!e) { + e = strcasestr (ptr, ".txz"); + if (!e) + return false; + } *(e + 4) = 0x00; /* remove spaces, tab or other after package extension */ switch (set_match) { @@ -688,7 +691,7 @@ pkg_ok (short set_match, regex_t *preg, if (pkgname && !xstrstr (ptr, pkgname)) return false; l = strlen (ptr) - 4; - if (!strncasecmp (ptr + l, ".tgz", 4)) + if (!(strncasecmp (ptr + l, ".tgz", 4) || strncasecmp (ptr + l, ".txz", 4))) ptr[l] = 0x00; return (is_installed (ptr, MATCH_EXACTLY_PACKAGE, 0) >= 0) ? true : false; break; @@ -747,7 +750,7 @@ search_pkg (dlist **datalist, short set_ switch (set_match) { case MATCH_EXACTLY_NAME: snprintf (regex, BUFFSIZE, - "^%s\\-[^-]+\\-[^-]+\\-[^-]+\\.tgz$" , set_regex (pkgname)); + "^%s\\-[^-]+\\-[^-]+\\-[^-]+\\.[tgz|txz]$" , set_regex (pkgname)); break; case MATCH_USING_REGEX: case MATCH_ALL_NAME_BLACK_REG: