[squeak-dev] The Inbox: System-laza.423.mcz

Levente Uzonyi leves at elte.hu
Tue Feb 22 15:40:44 UTC 2011


On Tue, 22 Feb 2011, David T. Lewis wrote:

>
> FYI, the OSProcessPlugin distributed with unix VMs provides these:
>
>  <primitive: 'primitiveEnvironmentAt:' module: 'UnixOSProcessPlugin'>
>  <primitive: 'primitiveEnvironmentAtSymbol:' module: 'UnixOSProcessPlugin'>
>
> For Windows it is this (but the plugin is not distributed):
>
> <primitive: 'primitiveGetEnvironmentStrings' module. 'Win32OSProcessPlugin'>

It's distributed with Cog, but the primitive fails.


Levente

>
> Dave
>
>
> On Tue, Feb 22, 2011 at 11:45:30AM +0100, Alexander Lazarevi?? wrote:
>> I would like to add this to the trunk. This would allow an image running on
>> linux to read an envVar that points to a central directory of sources files
>> (see thread [1]).
>> On other platforms the environment dictionary is just empty.
>> This could be easily changed in the future when the VMs on all platforms
>> might offer a primitive to access the os envVars.
>>
>> Alex
>>
>> [1]
>> http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-December/155994.html
>>
>> 2011/2/22 <commits at source.squeak.org>
>>
>>> Alexander Lazarevi&#263; uploaded a new version of System to project The
>>> Inbox:
>>> http://source.squeak.org/inbox/System-laza.423.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: System-laza.423
>>> Author: laza
>>> Time: 22 February 2011, 11:31:19.136 am
>>> UUID: 2c296259-64d4-499d-b4b5-9a4046d737fa
>>> Ancestors: System-ul.422
>>>
>>> Add support for accessing OS environment variables (on linux at first)
>>>
>>> =============== Diff against System-ul.422 ===============
>>>
>>> Item was added:
>>> + ----- Method: SmalltalkImage>>environ (in category 'os') -----
>>> + environ
>>> +       "Smalltalk os environ"
>>> +       | env c in match out name |
>>> +       env := IdentityDictionary new.
>>> +       self os osVersion = 'linux' ifFalse: [^env]. "Currently only
>>> supported on linux"
>>> +       in := FileStream oldFileOrNoneNamed: '/proc/self/environ'.
>>> +       in ifNil: [^env].
>>> +       out := WriteStream on: String new.
>>> +       match := $=.
>>> +       [(c := in next) isNil] whileFalse: [
>>> +               c = match
>>> +                       ifTrue: [
>>> +                               c = $= ifTrue: [name := out contents. match
>>> := 0 asCharacter].
>>> +                               c = 0 asCharacter ifTrue: [env at: name
>>> asSymbol put: out contents. match := $=].
>>> +                               out reset]
>>> +                       ifFalse: [out nextPut: c]].
>>> +       ^env!
>>>
>>> Item was added:
>>> + ----- Method: SmalltalkImage>>getEnv: (in category 'os') -----
>>> + getEnv: name
>>> +       "Smalltalk os getEnv: 'HOME'"
>>> +       ^self os environ at: name asSymbol ifAbsent: [nil]
>>> + !
>>>
>>>
>>>
>
>>
>
>
>



More information about the Squeak-dev mailing list