Unix

environAt: index
| address |
address := NBExternalAddress value: (self environ nbUInt32AtOffset: index-1
* 4).
address isNull ifTrue: [ ^ nil ].
^ address readString

Windows

getEnv: aVariableName
| valueSize buffer |
valueSize := self getEnvSize: aVariableName.
valueSize = 0
ifTrue: [ ^ nil ].
buffer := String new: valueSize.
(self getEnv: aVariableName buffer: buffer size: valueSize) = (valueSize -
1)
ifFalse: [ ^ nil ].
^ buffer allButLast

getEnvSize: nameString

<primitive: #primitiveNativeCall module: #NativeBoostPlugin error:
errorCode >
 ^ self nbCall: #( int GetEnvironmentVariableA ( String nameString, nil, 0
) ) module: #Kernel32

In Windows:

OSPlatform current  environment at: #PATH

works.

So, they both depend on NB indeed.

Phil




On Wed, Jan 21, 2015 at 11:50 PM, Sven Van Caekenberghe <[email protected]>
wrote:

>
> > On 21 Jan 2015, at 23:25, Eliot Miranda <[email protected]> wrote:
> >
> >
> >
> > On Tue, Jan 20, 2015 at 12:35 PM, Sven Van Caekenberghe <[email protected]>
> wrote:
> > Hi Eliot,
> >
> > > On 20 Jan 2015, at 20:38, Eliot Miranda <[email protected]>
> wrote:
> > >
> > >
> > >
> > > On Tue, Jan 20, 2015 at 8:00 AM, Sven Van Caekenberghe <[email protected]>
> wrote:
> > > Command line arguments enter the image level via
> VirtualMachine>>#getSystemAttribute:
> > >
> > > At that point they are already Strings.
> > >
> > > ByteString, according to the primitive.  So if the shell supplies e.g.
> UTF-8 strings for command-line parameters, which the VM sees as bytes, then
> the ByteString instances answered by getSystemAttribute: would need
> decoding, right?
> > >
> > > In your case, they must already be wrong at that point.
> > >
> > > Not necessarily.  The  getSystemAttribute: primitive doesn't do
> decoding.  Perhaps it should.
> >
> > Yes, probably. I just tried on Mac OS X, Pharo 4:
> >
> > $ export FOO=élève-Français
> >
> > $ echo $FOO
> > élève-Français
> >
> > $ ./pharo Pharo.image eval 'OSPlatform current environment at: #FOO'
> > 'élève-Français'
> >
> > $ ./pharo Pharo.image eval '(OSPlatform current environment at: #FOO)
> asByteArray utf8Decoded'
> > 'élève-Français'
> >
> > The question is, is this true for all platforms ? Windows ?
> >
> > I'm trying to test this in Pharo 3.  I get
> >
> > KeyNotFound: key #FOO not found in PlatformIndependentEnvironment
> > PlatformIndependentEnvironment(OSEnvironment)>>at: in Block: [
> KeyNotFound signalFor: aKey ]
> > UndefinedObject>>ifNil:
> > PlatformIndependentEnvironment(OSEnvironment)>>at:ifAbsent:
> > PlatformIndependentEnvironment(OSEnvironment)>>at:
> > UndefinedObject>>DoIt
> > OpalCompiler>>evaluate
> > OpalCompiler(AbstractCompiler)>>evaluate:
> > SmalltalkImage>>evaluate:
> > EvaluateCommandLineHandler>>evaluate: in Block: [ ...
> > BlockClosure>>on:do:
> >
> >
> > Does the environment access depend on NativeBoost?
>
> Yes, I believe so.
>
> > > > On 20 Jan 2015, at 16:51, Hilaire <[email protected]> wrote:
> > > >
> > > > Le 20/01/2015 16:34, Sven Van Caekenberghe a écrit :
> > > >> No they are not - Strings and Characters in Pharo are using plain
> Unicode encoding internally.
> > > >
> > > > Thanks for the update, and the reference link.
> > > >
> > > > Hilaire
> > > >
> > > > --
> > > > Dr. Geo - http://drgeo.eu
> > > > iStoa - http://istoa.drgeo.eu
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > best,
> > > Eliot
> >
> >
> >
> >
> >
> > --
> > best,
> > Eliot
>
>
>


-- 
---
Philippe Back
Visible Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:[email protected] | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller

Reply via email to