InterpreterProxy>>ioFilename:fromString:ofLength:resolveAliases:?

John M McIntosh johnmci at smalltalkconsulting.com
Mon Mar 27 00:18:02 UTC 2006


The mpeg plugin uses it to take the file name and to open it, also  
the freetype 2 plugin where it's the path to the font file.

The api  then converts the given file name in VM platform character  
type (macroman/utf-8/latin-1) into a string that the host operating  
system can use to act upon using host operating system file calls.

Usage of it in the standard unix based VMs can be seen in the

Cross/sqFilePluginBasicPrims.c


sqInt sqFileOpen(SQFile *f, char* sqFileName, sqInt sqFileNameSize,  
sqInt writeFlag) {
	/* Opens the given file using the supplied sqFile structure
	   to record its state. Fails with no side effects if f is
	   already open. Files are always opened in binary mode;
	   Squeak must take care of any line-end character mapping.
	*/

	char cFileName[1001];

	/* don't open an already open file */
	if (sqFileValid(f)) return interpreterProxy->success(false);

	/* copy the file name into a null-terminated C string */
	if (sqFileNameSize > 1000) {
		return interpreterProxy->success(false);
	}
	interpreterProxy->ioFilenamefromStringofLengthresolveAliases 
(cFileName, sqFileName, sqFileNameSize, true);
	if (writeFlag) {
		/* First try to open an existing file read/write: */
		setFile(f, fopen(cFileName, "r+b"));




On 26-Mar-06, at 4:02 PM, Andreas Raab wrote:

> John M McIntosh wrote:
>> I believe fname here and length is technically the smalltalk  
>> object, and it's length. If you copy over from the fname it may  
>> not have
>> a terminating 0x00.
>
> So. Where. Is. This. Used??? The comment in sq.h merely states:
>
>   "New filename converting function; used by the interpreterProxy  
> function ioFilenamefromStringofLengthresolveAliases. Most platforms  
> can ignore the resolveAlias boolean - it seems to only be of use by  
> OSX but is crucial there."
>
> and unfortunately, this doesn't give much guidance about arguments  
> or return values. Without an example (which I have asked for,  
> remember?) it is *impossible* to implement that function correctly  
> based on the information I have.
>
> Cheers,
>   - Andreas

--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Vm-dev mailing list