Well the FilePlugin is built into the VM versus being an external VM  
and it supplies the basic file I/O operations.
So you won't find a plugin called that unless some-one decided to  
compile up one.

So either the plugin method call fails because it cannot be found, or  
it fails because it explicitly failed on bad data, or
other reason (an error?)

The failure cases are:

(1) the id object is not a byte array type of object.
Given
MultiByteFileStream(StandardFileStream)>>primGetPosition:
        Receiver: MultiByteFileStream: '/Data/Downloads/pharo1.0-10470- 
BETAdev09.10.2/installScript.st'
        Arguments and temporary variables:
                id:     #[153 12 133 142 168 105 19 160 0 0 0 0 18 18 0 0 0 0 0 
0 0 0 0  
0]
        Receiver's instance variables:

Yes that looks like a byte array object.

(b) the size of id is wrong
        This is unlikely since the id bytearray hasn't changed size in decades.
        Let me assume the number of bytes is correct.

(c) the bytes 5-8 have to be non-zero, otherwise we fail
        Nope, it's 168 105 19 160

(d) bytes 1-3 have to be non-zero AND match some magic value in the VM
        Well 153 12 133 142 is non zero, but what's the magic value?

MMm I don't think you can get the magic value directly, but at the  
point of failure you could create a new file and examine the 'id'  
value for the StandardFileStream and see if the first 4 bytes match  
the first 4 bytes of this value (153 12 133 142)
Failure to match would cause a prim failure.

Oh wait I see you can invoke
self primSizeNoError: fileID
and if that returns NIL the handle is stale.

See ensureOpen

(e) the ftello() fails because the file doesn't exist, or an I/O error  
happened, or the path is bad. Or some icky file system error.
Alas we don't feed back or record what the error is, but I think you  
fail on (d)?


I'd bet on (d) the MultiByteFileStream instance is some cached value  
from a previous VM usage, try the primSizeNoError: and see what it  
returns when you're inspecting the MultiByteFileStream.


On 2009-10-12, at 9:42 PM, Stéphane Ducasse wrote:

> Hi
>
> when trying to build the dev image I systematically get a DNU
>
> primGetPosition: id
>       "Get this files current position."
>
>       <primitive: 'primitiveFileGetPosition' module: 'FilePlugin'>
>       self primitiveFailed
>
> and I do not have the FilePlugin in the resources VM folder.
>
> I checked the web site of john but could not find an explanation.
>
> Stef
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
= 
= 
= 
========================================================================
John M. McIntosh <[email protected]>   Twitter:   
squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
= 
= 
= 
========================================================================





_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to