void RarArchiverStrategy::configure() { addExtension(".rar"); addExtension(".cbr"); setExecutables("rar", "unrar"); if (which("rar") != QString::null) { setExtractArguments("rar x @F"); setListArguments("rar lb @F"); setSupported(); } else if (which("unrar") != QString::null) { FILE *f; // // now determine which unrar it is - free or non-free if ((f = popen("unrar", "r")) != NULL) { QRegExp regexp("^UNRAR.+freeware"); for (QTextStream s(f); !s.atEnd(); ) { if (regexp.indexIn(s.readLine()) >= 0) { nonfree_unrar = true; break; } } pclose(f); if (nonfree_unrar) { setExtractArguments("unrar x @F"); setListArguments("unrar lb @F"); } else { setExtractArguments("unrar -x @F"); setListArguments("unrar -t @F"); } setSupported(); } } else if (which("unrar-free") != QString::null) //some distros rename free unrar like this { setExtractArguments("unrar-free -x @F"); setListArguments("unrar-free -t @F"); setSupported(); } }
void P7zipArchiverStrategy::configure() { addExtension(".7z"); addExtension(".cb7"); setExecutables("7z", "7zr"); if (which("7z") != QString::null) { setExtractArguments("7z x @F"); setListArguments("7z l @F"); setSupported(); } else if (which("7zr") != QString::null) { setExtractArguments("7zr x @F"); setListArguments("7zr l @F"); setSupported(); } }