Support writing empty directories to ZIP files.

(cherry picked from commit ddbe23e90d)
v3.5.13-sru
Thomas McGuire 10 years ago committed by Slávek Banko
parent 72532b6602
commit 1af590f88a

@ -1051,6 +1051,21 @@ bool KZip::closeArchive()
return true; return true;
} }
bool KZip::writeDir(const TQString& name, const TQString& user, const TQString& group)
{
// Zip files have no explicit directories, they are implicitly created during extraction time
// when file entries have paths in them.
// However, to support empty directories, we must create a dummy file entry which ends with '/'.
TQString dirName = name;
if (!name.endsWith("/")) {
dirName = dirName.append('/');
}
mode_t perm = 040755;
time_t the_time = time(0);
return writeFile(dirName, user, group, 0, perm, the_time, the_time, the_time, 0);
}
// Doesn't need to be reimplemented anymore. Remove for KDE-4.0 // Doesn't need to be reimplemented anymore. Remove for KDE-4.0
bool KZip::writeFile( const TQString& name, const TQString& user, const TQString& group, uint size, const char* data ) bool KZip::writeFile( const TQString& name, const TQString& user, const TQString& group, uint size, const char* data )
{ {

@ -194,7 +194,7 @@ protected:
/** /**
* @internal Not needed for zip * @internal Not needed for zip
*/ */
virtual bool writeDir( const TQString& name, const TQString& user, const TQString& group) { Q_UNUSED(name); Q_UNUSED(user); Q_UNUSED(group); return true; } virtual bool writeDir( const TQString& name, const TQString& user, const TQString& group);
// TODO(BIC) uncomment and make virtual for KDE 4. // TODO(BIC) uncomment and make virtual for KDE 4.
// bool writeDir( const TQString& name, const TQString& user, const TQString& group, // bool writeDir( const TQString& name, const TQString& user, const TQString& group,
// mode_t perm, time_t atime, time_t mtime, time_t ctime ); // mode_t perm, time_t atime, time_t mtime, time_t ctime );

Loading…
Cancel
Save