X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2Fenvvars.pas;h=5c60fd0d7c1adefe3508ebaf7f5d3cc948512820;hb=08095f30d97fe8ca473173173df6158aa352f64a;hp=3774eab2fe277edbd168c160de436c954d3c5007;hpb=055a225d4c2a18e9aff2f0e682cf89048d1efefe;p=d2df-sdl.git diff --git a/src/shared/envvars.pas b/src/shared/envvars.pas index 3774eab..5c60fd0 100644 --- a/src/shared/envvars.pas +++ b/src/shared/envvars.pas @@ -26,8 +26,14 @@ interface implementation + uses +{$IFDEF WINDOWS} + Windows, +{$ENDIF} + utils; + + {$IFDEF WINDOWS} -uses Windows; function setenv(const VarStr: PChar; const VarVal: PChar; Repl: cint): cint; begin if (SetEnvironmentVariable(VarStr, VarVal)) then @@ -47,15 +53,25 @@ begin Result := (setenv(PChar(VarName), PChar(VarVal), 1) = 0); end; - function GetUserName: String; + (* Get system username already in cp1251 *) + function GetUserName: AnsiString; + var i: Integer; begin {$IF DEFINED(WINDOWS)} - Result := SysUtils.GetEnvironmentVariable('USERNAME') + Result := utf2win(UTF8String(SysUtils.GetEnvironmentVariable(WideString('USERNAME')))); {$ELSEIF DEFINED(UNIX)} - Result := SysUtils.GetEnvironmentVariable('USER') + Result := utf2win(SysUtils.GetEnvironmentVariable('USER')); {$ELSE} - Result := '' + Result := ''; {$ENDIF} + (* invalidate username with non-cp1251 symbols *) + i := Low(Result); + while i <= High(Result) do + begin + if Result[i] = '?' then + Result := ''; + Inc(i) + end end; end.