File indexing completed on 2024-05-12 16:06:33
0001 /* 0002 SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "unrarflavours.h" 0008 0009 #include <QRegularExpression> 0010 0011 ProcessArgs::ProcessArgs() 0012 { 0013 } 0014 0015 ProcessArgs::ProcessArgs(const QStringList &args, bool lsar) 0016 : appArgs {args} 0017 , useLsar {lsar} 0018 { 0019 } 0020 0021 UnrarFlavour::UnrarFlavour() 0022 { 0023 } 0024 0025 UnrarFlavour::~UnrarFlavour() 0026 { 0027 } 0028 0029 void UnrarFlavour::setFileName(const QString &fileName) 0030 { 0031 mFileName = fileName; 0032 } 0033 0034 QString UnrarFlavour::fileName() const 0035 { 0036 return mFileName; 0037 } 0038 0039 NonFreeUnrarFlavour::NonFreeUnrarFlavour() 0040 : UnrarFlavour() 0041 { 0042 } 0043 0044 QStringList NonFreeUnrarFlavour::processListing(const QStringList &data) 0045 { 0046 // unrar-nonfree just lists the files 0047 return data; 0048 } 0049 0050 QString NonFreeUnrarFlavour::name() const 0051 { 0052 return QStringLiteral("unrar-nonfree"); 0053 } 0054 0055 ProcessArgs NonFreeUnrarFlavour::processListArgs(const QString &fileName) const 0056 { 0057 return ProcessArgs(QStringList() << QStringLiteral("lb") << fileName, false); 0058 } 0059 0060 ProcessArgs NonFreeUnrarFlavour::processOpenArchiveArgs(const QString &fileName, const QString &path) const 0061 { 0062 return ProcessArgs(QStringList() << QStringLiteral("e") << fileName << path + QLatin1Char('/'), false); 0063 } 0064 0065 FreeUnrarFlavour::FreeUnrarFlavour() 0066 : UnrarFlavour() 0067 { 0068 } 0069 0070 QStringList FreeUnrarFlavour::processListing(const QStringList &data) 0071 { 0072 static const QRegularExpression re(QStringLiteral("^ ([^/]+/([^\\s]+))$")); 0073 0074 QStringList newdata; 0075 for (const QString &line : data) { 0076 QRegularExpressionMatch match = re.match(line); 0077 if (match.hasMatch()) { 0078 newdata.append(match.captured(1)); 0079 } 0080 } 0081 return newdata; 0082 } 0083 0084 QString FreeUnrarFlavour::name() const 0085 { 0086 return QStringLiteral("unrar-free"); 0087 } 0088 0089 ProcessArgs FreeUnrarFlavour::processListArgs(const QString &) const 0090 { 0091 return ProcessArgs(); 0092 } 0093 0094 ProcessArgs FreeUnrarFlavour::processOpenArchiveArgs(const QString &, const QString &) const 0095 { 0096 return ProcessArgs(); 0097 } 0098 0099 UnarFlavour::UnarFlavour() 0100 : UnrarFlavour() 0101 { 0102 } 0103 0104 QStringList UnarFlavour::processListing(const QStringList &data) 0105 { 0106 QStringList newdata = data; 0107 0108 newdata.removeFirst(); 0109 0110 return newdata; 0111 } 0112 0113 QString UnarFlavour::name() const 0114 { 0115 return QStringLiteral("unar"); 0116 } 0117 0118 ProcessArgs UnarFlavour::processListArgs(const QString &fileName) const 0119 { 0120 return ProcessArgs(QStringList() << fileName, true); 0121 } 0122 0123 ProcessArgs UnarFlavour::processOpenArchiveArgs(const QString &fileName, const QString &path) const 0124 { 0125 return ProcessArgs(QStringList() << fileName << QStringLiteral("-o") << path + QLatin1Char('/'), false); 0126 }