diff options
Diffstat (limited to 'x11/kdelibs4/files/patch-kio::kio::kzip.cpp')
-rw-r--r-- | x11/kdelibs4/files/patch-kio::kio::kzip.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/x11/kdelibs4/files/patch-kio::kio::kzip.cpp b/x11/kdelibs4/files/patch-kio::kio::kzip.cpp new file mode 100644 index 000000000000..1b4b7d35e230 --- /dev/null +++ b/x11/kdelibs4/files/patch-kio::kio::kzip.cpp @@ -0,0 +1,59 @@ +--- kio/kio/kzip.cpp.orig Fri Jan 3 05:58:47 2003 ++++ kio/kio/kzip.cpp Fri Mar 21 11:13:48 2003 +@@ -332,27 +332,43 @@ + + KArchiveEntry* entry; + if ( isdir ) +- entry = new KArchiveDirectory( this, entryName, access, time, rootDir()->user(), rootDir()->group(), QString::null ); ++ { ++ QString path = QDir::cleanDirPath( name.left( pos ) ); ++ KArchiveEntry* ent = rootDir()->entry( path ); ++ if ( ent && ent->isDirectory() ) ++ { ++ //kdDebug(7040) << "Directory already exists, NOT going to add it again" << endl; ++ entry = 0L; ++ } ++ else ++ { ++ entry = new KArchiveDirectory( this, entryName, access, time, rootDir()->user(), rootDir()->group(), QString::null ); ++ //kdDebug(7040) << "KArchiveDirectory created, entryName= " << entryName << ", name=" << name << endl; ++ } ++ } + else + { + entry = new KZipFileEntry( this, entryName, access, time, rootDir()->user(), rootDir()->group(), QString::null, +- name, dataoffset, ucsize, cmethod, csize ); ++ name, dataoffset, ucsize, cmethod, csize ); + static_cast<KZipFileEntry *>(entry)->setHeaderStart( localheaderoffset ); +- //kdDebug(7040) << "KZipFileEntry created" << endl; ++ //kdDebug(7040) << "KZipFileEntry created, entryName= " << entryName << ", name=" << name << endl; + d->m_fileList.append( static_cast<KZipFileEntry *>( entry ) ); + } + +- if ( pos == -1 ) ++ if ( entry ) + { +- rootDir()->addEntry(entry); +- } +- else +- { +- // In some tar files we can find dir/./file => call cleanDirPath +- QString path = QDir::cleanDirPath( name.left( pos ) ); +- // Ensure container directory exists, create otherwise +- KArchiveDirectory * tdir = findOrCreate( path ); +- tdir->addEntry(entry); ++ if ( pos == -1 ) ++ { ++ rootDir()->addEntry(entry); ++ } ++ else ++ { ++ // In some tar files we can find dir/./file => call cleanDirPath ++ QString path = QDir::cleanDirPath( name.left( pos ) ); ++ // Ensure container directory exists, create otherwise ++ KArchiveDirectory * tdir = findOrCreate( path ); ++ tdir->addEntry(entry); ++ } + } + + //calculate offset to next entry |