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

Reply via email to