[squeak-dev] ZipFile

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[squeak-dev] ZipFile

keith1y
I am using ZipArchive to create a zip file, but when I expand said zip
file the permissions of the top directory are:

drw-rw-rw  which isn't very helpful.

I am on Mac OS X 10.5.5, using the Mac VM 3.8.18Ubeta1U

any ideas?

Keith

Reply | Threaded
Open this post in threaded view
|

[squeak-dev] Re: ZipFile

Andreas.Raab
Keith Hodges wrote:
> I am using ZipArchive to create a zip file, but when I expand said zip
> file the permissions of the top directory are:
>
> drw-rw-rw  which isn't very helpful.
>
> I am on Mac OS X 10.5.5, using the Mac VM 3.8.18Ubeta1U
>
> any ideas?

Perhaps umask? Squeak doesn't set the permissions explicitly so the only
thing I can imagine is that your unix umask isn't set appropriately.

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: ZipFile

Bert Freudenberg

On 16.01.2009, at 07:18, Andreas Raab wrote:

> Keith Hodges wrote:
>> I am using ZipArchive to create a zip file, but when I expand said  
>> zip
>> file the permissions of the top directory are:
>> drw-rw-rw  which isn't very helpful.
>> I am on Mac OS X 10.5.5, using the Mac VM 3.8.18Ubeta1U
>> any ideas?
>
> Perhaps umask? Squeak doesn't set the permissions explicitly so the  
> only thing I can imagine is that your unix umask isn't set  
> appropriately.


IIUC Keith creates the zip in Squeak and unzips using other tools.

You can set the permissions for each archive member. Here's some  
sample code from Etoys:

=======================
bundle: aFileName as: aBundleName title: aTitle version: aVersion id:  
aBundleID icon: anSVGIcon
        "Create a ZIP file named aBundleName-aVersion.xo containing
                aBundleName.activity/
                        aFileName
                        bin/aBundleName.sh
                        activity/activity.info
                        activity/aBundleName-icon.svg
                        locale/...
        "
        | dir archive fileAttr execAttr dirAttr localFileName scriptName |
        fileAttr := 16r81A4.
        execAttr := 16r81ED.
        dirAttr := 16r41ED.
        dir := aBundleName, '.activity/'.
        localFileName := FileDirectory localNameFor: aFileName.
        scriptName := aBundleName, '.sh'.
        archive := ZipArchive new.
        #('' 'bin' 'activity' 'locale') do: [:dirName |
                (archive addDirectory: dir, dirName) unixFileAttributes: dirAttr].
        (archive addFile: aFileName as: dir, localFileName)  
unixFileAttributes: fileAttr.
        (archive addString: (self bundleScript: localFileName) as: dir,  
'bin/', scriptName) unixFileAttributes: execAttr.
        (archive addString: (self bundleInfoTitle: aTitle version: aVersion  
bundle: aBundleID script: scriptName icon: aBundleName, '-icon') as:  
dir, 'activity/activity.info') unixFileAttributes: fileAttr.
        (archive addString: self bundleIcon as: dir, 'activity/',  
aBundleName, '-icon.svg') unixFileAttributes: fileAttr.
        archive members do: [:m | m setLastModFileDateTimeFrom: Time  
totalSeconds].
        archive writeToFileNamed: aBundleName, '-', aVersion asString, '.xo'.
        archive close.
=======================

I don't quite remember how I came up with the constants ...

- Bert -