AW: [squeak-dev] [BUG] ERROR: File not in Directory: [...]
while trying to create a SAR-archive on Windows
Tim Oesterreich
tim.oesterreich at student.hpi.de
Sat Jan 24 01:53:20 UTC 2015
Hi Dave,
this did fix the problem. (Tested on Windows. I'm assuming it doesn't
suddenly crash on Unix now ;) )
Thank you!
Tim
-----Ursprüngliche Nachricht-----
Von: squeak-dev-bounces at lists.squeakfoundation.org
[mailto:squeak-dev-bounces at lists.squeakfoundation.org] Im Auftrag von David
T. Lewis
Gesendet: Saturday, 24 January, 2015 1:43
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] [BUG] ERROR: File not in Directory: [...] while
trying to create a SAR-archive on Windows
Hi Tim and Tobias,
I put a proposed fix for this in the inbox.
The update is:
ZipDirectoryMember>>localFileName: aString
| dir entry parent fsPath |
super localFileName: aString.
fileName last = $/ ifFalse: [ fileName := fileName, '/' ].
parent := FileDirectory default.
aString last = parent pathNameDelimiter
ifTrue: [fsPath := parent fullNameFor: aString]
ifFalse: [fsPath := parent fullNameFor: aString, parent
slash].
(parent directoryExists: fsPath) ifTrue: [
dir := FileDirectory on: fsPath.
entry := dir directoryEntry.
self setLastModFileDateTimeFrom: entry modificationTime
]
This separates the host file system test (Windows in the case) from the path
naming in the zip archive. It also expands the path name to be fully
qualified ("C:\foo\bar" not just "bar") because this is important on Windows
and also should work on Unix.
Please give this a try and see if it solves the problem for you. If nobody
complains, I'll move it to trunk in a day or so.
Dave
On Thu, Jan 22, 2015 at 09:22:25PM +0100, Tim Oesterreich wrote:
> Hello all,
>
>
>
> |package folder|
>
>
>
> "Name of the Monticello-package that should be archived"
>
> package := 'SWAProject'.
>
> "Name of the resources folder in Contents/Resources/"
>
> folder := 'SWA-Resources'.
>
>
>
> zip := ZipArchive new.
>
> mczStream := RWBinaryOrTextStream on: (String new: 10000).
>
> workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package).
>
> version := workingCopy newVersion fileOutOn: mczStream.
>
> (zip addString: mczStream contents as: package, '.mcz')
> desiredCompressionLevel: 0.
>
> zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith:
>
> Smalltalk imagePath , FileDirectory slash , folder].
>
> zip addString: 'self fileInMonticelloZipVersionNamed: ''' , package,
> '.mcz''.
>
> (self membersMatching: ''' , folder , FileDirectory slash , '*.*'')
> do: [ :f
> | self
>
> extractMember: f].' as: 'install/preamble'.
>
> zip writeToFileNamed: package , '.sar'.
>
>
>
> This code should create a SAR-Archive from a Monticello-Package
> including all resources in the specified folder
>
> However it throws the error "File not in Directory: SWA-Resources#" on
> a Windows-System, while working fine on a Mac.
>
> It seems like there is an issue with the handling of
> platform-dependent directory seperators (\ on Windows, / on UNIX).
>
>
>
> Best
>
> -Tim
>
>
>
>
More information about the Squeak-dev
mailing list
|