Index: utils/ofzip/GZIPArchive.m ================================================================== --- utils/ofzip/GZIPArchive.m +++ utils/ofzip/GZIPArchive.m @@ -15,16 +15,30 @@ */ #include "config.h" #import "OFApplication.h" +#import "OFFileManager.h" #import "OFStdIOStream.h" #import "GZIPArchive.h" #import "OFZIP.h" static OFZIP *app; + +static void +setPermissions(OFString *destination, OFString *source) +{ +#ifdef OF_HAVE_CHMOD + OFFileManager *fileManager = [OFFileManager defaultManager]; + mode_t mode; + + mode = [fileManager permissionsOfItemAtPath: source]; + [fileManager changePermissionsOfItemAtPath: destination + permissions: mode]; +#endif +} @implementation GZIPArchive + (void)initialize { if (self == [GZIPArchive class]) @@ -85,11 +99,11 @@ outFileName: fileName]) return; output = [OFFile fileWithPath: fileName mode: @"wb"]; - /* TODO: Copy permissions */ + setPermissions(fileName, app->_archivePath); while (![_stream isAtEndOfStream]) { ssize_t length = [app copyBlockFromStream: _stream toStream: output fileName: fileName];