Getting environment variables?
Stewart Gordon
smjg_1998 at yahoo.com
Sun Nov 23 05:54:40 PST 2008
"novice2" <sorry at noem.ail> wrote in message
news:ggbd96$2drl$1 at digitalmars.com...
>> homeDrive = toString(getenv("HOMEDRIVE")).dup;
>> homePath = toString(getenv("HOMEPATH")).dup;
>
> don't forget, that D char[] is utf8 and windows char* is 8-bit chars, not
> utf8.
> so you should import std.windows.charset and use toMBSz() as D->WindowsAPI
> and fromMBSz as WindowsAPI->D string converter. for example:
> homeDrive = fromMBSz(getenv("HOMEDRIVE")).dup;
Under what setups can the drive letter be a non-ASCII character?
But according to my experiments, getenv works in the OEM encoding rather
than the Windows encoding, so you'd need
homePath = fromMBSz(getenv("HOMEPATH"), 1).dup;
If you want to make sure all Unicode characters are preserved, you're best
off using the Windows API
wchar[] wpath;
wpath.length = GetEnvironmentVariableW("HOMEPATH", null, 0);
GetEnvironmentVariableW("HOMEPATH", wpath.ptr, wpath.length);
Stewart.
--
My e-mail address is valid but not my primary mailbox. Please keep replies
on the 'group where everybody may benefit.
More information about the Digitalmars-d-learn
mailing list