1 /*
2 * SPDX-FileCopyrightText: 2002-2005 David Faure <faure@kde.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7 #include "ktar.h"
8
9 #include <QDebug>
10
11 #include <stdio.h>
12
recursive_print(const KArchiveDirectory * dir,const QString & path)13 void recursive_print(const KArchiveDirectory *dir, const QString &path)
14 {
15 QStringList l = dir->entries();
16 l.sort();
17 QStringList::ConstIterator it = l.constBegin();
18 for (; it != l.constEnd(); ++it) {
19 const KArchiveEntry *entry = dir->entry((*it));
20 printf("mode=%07o %s %s %s%s %lld isdir=%d\n",
21 entry->permissions(),
22 entry->user().toLatin1().constData(),
23 entry->group().toLatin1().constData(),
24 path.toLatin1().constData(),
25 (*it).toLatin1().constData(),
26 entry->isFile() ? static_cast<const KArchiveFile *>(entry)->size() : 0,
27 entry->isDirectory());
28 if (!entry->symLinkTarget().isEmpty()) {
29 printf(" (symlink to %s)\n", qPrintable(entry->symLinkTarget()));
30 }
31 if (entry->isDirectory()) {
32 recursive_print((KArchiveDirectory *)entry, path + (*it) + '/');
33 }
34 }
35 }
36
37 // See karchivetest.cpp for the unittest that covers KTar.
38
main(int argc,char ** argv)39 int main(int argc, char **argv)
40 {
41 if (argc != 2) {
42 printf(
43 "\n"
44 " Usage :\n"
45 " ./ktartest /path/to/existing_file.tar.gz tests listing an existing tar.gz\n");
46 return 1;
47 }
48
49 KTar tar(argv[1]);
50
51 if (!tar.open(QIODevice::ReadOnly)) {
52 printf("Could not open %s for reading\n", argv[1]);
53 return 1;
54 }
55
56 const KArchiveDirectory *dir = tar.directory();
57
58 // printf("calling recursive_print\n");
59 recursive_print(dir, QLatin1String(""));
60 // printf("recursive_print called\n");
61
62 tar.close();
63
64 return 0;
65 }
66