On Thu, Jan 26, 2012 at 12:13 AM, Guillermo Polito < [email protected]> wrote:
> > Hi! > > I've downloaded version 3.8 of ConfigurationOfCog on Pharo 1.4, and when > sending #topDir: to a CogWindowsConfig instance, I get a primitive failed > error: > > Guille, if you see the family of Windows confs, regarding the file paths, they usually use #msysPathFor: Check its senders as an example. Maybe we can adapt topDir to use that. But I am not sure if that's a good idea. I think several months ago I was bitten but the same problem. I would like if your change to: DosFileDirectory class>>privateFullPathForURI: aURI is correct. Because maybe we can just integerate that. anyone? > PrimitiveFailed: primitive #primCreateDirectory: in DosFileDirectory failed > 25 January 2012 7:24:30 pm > > VM: Win32 - IX86 - 5.1 - CoInterpreter VMMaker.oscog-eem.140 uuid: > 2487009c-2c13-4609-b89e-77f0e195f433 Dec 12 2011, > StackToRegisterMappingCogit VMMaker.oscog-eem.139 uuid: > c2849383-9768-4948-b9b2-a5c22d482b07 Dec 12 2011, r2522 > http://www.squeakvm.org/svn/squeak/branches/Cog > Image: Pharo1.4a [Latest update: #14296] > > DosFileDirectory(Object)>>primitiveFailed: > Receiver: DosFileDirectory on '' > Arguments and temporary variables: > selector: #primCreateDirectory: > Receiver's instance variables: > pathName: FilePath('') > > > DosFileDirectory(Object)>>primitiveFailed > Receiver: DosFileDirectory on '' > Arguments and temporary variables: > > Receiver's instance variables: > pathName: FilePath('') > > > DosFileDirectory(FileDirectory)>>primCreateDirectory: > Receiver: DosFileDirectory on '' > Arguments and temporary variables: > fullPath: '\\MinGW' > Receiver's instance variables: > pathName: FilePath('') > > > DosFileDirectory(FileDirectory)>>createDirectory: > Receiver: DosFileDirectory on '' > Arguments and temporary variables: > localFileName: '\\MinGW' > Receiver's instance variables: > pathName: FilePath('') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '' > Arguments and temporary variables: > lPath: '\\MinGW' > localPath: '\\MinGW' > Receiver's instance variables: > pathName: FilePath('') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW' > Arguments and temporary variables: > lPath: 'msys' > localPath: 'msys' > Receiver's instance variables: > pathName: FilePath('\\MinGW') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW\msys' > Arguments and temporary variables: > lPath: '1.0' > localPath: '1.0' > Receiver's instance variables: > pathName: FilePath('\\MinGW\msys') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW\msys\1.0' > Arguments and temporary variables: > lPath: 'home' > localPath: 'home' > Receiver's instance variables: > pathName: FilePath('\\MinGW\msys\1.0') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW\msys\1.0\home' > Arguments and temporary variables: > lPath: 'Guille' > localPath: 'Guille' > Receiver's instance variables: > pathName: FilePath('\\MinGW\msys\1.0\home') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW\msys\1.0\home\Guille' > Arguments and temporary variables: > lPath: 'cog' > localPath: 'cog' > Receiver's instance variables: > pathName: FilePath('\\MinGW\msys\1.0\home\Guille') > > > DosFileDirectory(FileDirectory)>>assureExistenceOfPath: > Receiver: DosFileDirectory on '\\MinGW\msys\1.0\home\Guille\cog' > > > I followed the error up to: > > DosFileDirectory class>>privateFullPathForURI: aURI > | path | > path := aURI path unescapePercents. > > "Check for drive notation (a: etc)" > path size > 1 > ifTrue: [ > ((path at: 3) = $:) > ifTrue: [path := path copyFrom: 2 to: path size] > ifFalse: [ > "All other cases should be network path names (\\xxx\sdsd etc)" > path := '/' , path]]. > > ^path copyReplaceAll: '/' with: self slash > > Which seems not being resolving well a full path like > 'c:\something\another\directory' and is answering something like > > '\\MinGW\msys\1.0\home\Guille\cog\gpolito-cogvm' > > which then is treated as a relative path... > > I've done a temporary fix like this in my image so I can continue, but > maybe someone has a little more knowledge on this class: > > DosFileDirectory class>>privateFullPathForURI: aURI > | path | > path := aURI asString unescapePercents. > > "Check for drive notation (a: etc)" > path size > 1 > ifTrue: [ > ((path at: 2) = $:) > ifTrue: [path := path copyFrom: 1 to: path size] > ifFalse: [ > "All other cases should be network path names (\\xxx\sdsd etc)" > path := '/' , path]]. > > ^path copyReplaceAll: '/' with: self slash > > Guille > > -- Mariano http://marianopeck.wordpress.com
