ArrayObject * ProgramClass::_getEnviron() { Toplevel *toplevel = this->toplevel(); AvmCore *core = this->core(); ArrayObject *array = toplevel->arrayClass()->newArray(); #if AVMSYSTEM_WIN32 wchar **cur = VMPI_GetEnviron16(); int i = 0; while( cur[i] ) { Stringp value = core->newStringUTF16(cur[i]); StUTF8String valueUTF8(value); array->setUintProperty( i, core->newStringUTF8( valueUTF8.c_str() )->atom() ); i++; } #else char **cur = VMPI_GetEnviron(); int i = 0; while( cur[i] ) { array->setUintProperty( i, core->newStringUTF8( cur[i] )->atom() ); i++; } #endif return array; }
/*static*/ Stringp CStdlibClass::getenv(ScriptObject* self, Stringp name) { AvmCore *core = self->core(); Toplevel* toplevel = self->toplevel(); if( !name ) { toplevel->throwArgumentError(kNullArgumentError, "name"); } #if AVMSYSTEM_WIN32 StUTF16String nameUTF16(name); const wchar * str = VMPI_getenv16( nameUTF16.c_str() ); Stringp value = core->newStringUTF16( str ); StUTF8String valueUTF8(value); return core->newStringUTF8( valueUTF8.c_str() ); #else StUTF8String nameUTF8(name); const char * str = VMPI_getenv( nameUTF8.c_str() ); return core->newStringUTF8( str ); #endif }
/*static*/ Stringp CStdlibClass::realpath(ScriptObject* self, Stringp path) { AvmCore *core = self->core(); Toplevel* toplevel = self->toplevel(); if( !path ) { toplevel->throwArgumentError(kNullArgumentError, "path"); } #if AVMSYSTEM_WIN32 StUTF16String pathUTF16(path); wchar * str = VMPI_realpath16( pathUTF16.c_str() ); Stringp value = core->newStringUTF16( str ); StUTF8String valueUTF8(value); return core->newStringUTF8( valueUTF8.c_str() ); #else StUTF8String pathUTF8(path); char * str = VMPI_realpath( pathUTF8.c_str() ); return core->newStringUTF8( str ); #endif }