[squeak-dev] Accessing external resources in a cross-platform way
Hernán Morales Durand
hernan.morales at gmail.com
Fri Jan 28 17:17:02 UTC 2011
Thanks David,
I've seen FileSystem package http://www.wiresong.ca/filesystem/
it seems related in some way too
2011/1/28 David T. Lewis <lewis at mail.msen.com>:
> On Fri, Jan 28, 2011 at 01:51:22PM +0100, Hern??n Morales Durand wrote:
>> Let's say you want to resolve paths in a cross platform way
>>
>> Binaries @ 'MyExec'
>> Libraries @ 'MyLib'
>> SystemLibraries @ 'SystemLib'
>> etc.
>>
>> then Binaries is
>>
>> In Windows: #( 'C:\Program Files\' 'C:\Archivos de Programa\' ...) "
>> and all standard locations including translations "
>> In UNIX: #('/usr/bin/' '/usr/local/bin' ....) " and all standard locations "
>> etc
>>
>> Now you may say it is necessary to scan all directories to find
>> MyExec, yes but you may then save that location
>>
>> myBinaryLocation := Binaries @ 'MyExec'.
>>
>> so you scan for it just once.
>>
>> What do you think? it is already implemented anywhere?
>> If not what package do you think is more suitable or prepared for
>> implementing it?
>
> Hern??n,
>
> This is of course very platform dependent, and it is more complex
> than you might expect due to differences in file systems, operating
> systems, volume names (windows), environment variables and search
> path conventions.
>
> Both Windows and Unix use various seach paths accessible through
> environment variables, and the conventions for this tend to change
> over time with different OS versions. So it would probably be best
> to rely directly on those environment variables for identifying
> search paths.
>
> Aside from the conventions for default locations and search paths,
> some of what you are looking for may also be implemented for Windows
> and Unix in SqS/CommandShell in class ShellSyntax:
>
> My instances implement parsing of strings in a manner similar to
> a simple Unix command shell. I provide path name expansion in the
> context of an external file system, and support the syntax required
> for IO redirection. All file name globbing and PATH searching are
> implemented in Smalltalk rather than in C library functions or an
> external command shell.
>
> Most of my syntax is applicable for any operating system. Where
> needed, platform specific methods are in my "platform dependent"
> category. Currently, Unix and Windows are supported, and other
> platforms have not been tested. The primary difference between
> Unix and Windows support is that device names (such as 'C:') are
> used in Windows path strings. Separate current working directory
> strings are maintained for all Windows device names. For Unix,
> a single current working directory path is used. On Windows,
> this permits the CommandShell 'cd' command to support changing
> directories to another device without losing track of the current
> working directory for the previous device.
>
> Command pipeline syntax is not supported here. See CommandShell
> for the implementation of command pipelines.
>
> Dave
>
>
>
More information about the Squeak-dev
mailing list
|