X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2Fenvvars.pas;h=a15feef0e1dc37e4cddde1038c004a390d33a92b;hb=d4c1e78fe6bfb7cbbff5ced6b94d6e630e06d6f2;hp=941b8e0b78d548ef5b90cc1f71341e6c001f4853;hpb=563e770b462d67b2c8265b0e2b53384152afb7c1;p=d2df-sdl.git diff --git a/src/shared/envvars.pas b/src/shared/envvars.pas index 941b8e0..a15feef 100644 --- a/src/shared/envvars.pas +++ b/src/shared/envvars.pas @@ -2,8 +2,7 @@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * the Free Software Foundation, version 3 of the License ONLY. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,14 +18,21 @@ unit envvars; interface -uses SysUtils, CTypes; + uses SysUtils, CTypes; -function SetEnvVar(const VarName: AnsiString; const VarVal: AnsiString): Boolean; + function SetEnvVar(const VarName: AnsiString; const VarVal: AnsiString): Boolean; + function GetUserName: String; 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 @@ -46,4 +52,19 @@ begin Result := (setenv(PChar(VarName), PChar(VarVal), 1) = 0); end; + (* Get system username already in cp1251 *) + function GetUserName: AnsiString; + var i: Integer; + begin + {$IF DEFINED(WINDOWS)} + Result := utf2win(UTF8String(SysUtils.GetEnvironmentVariable(WideString('USERNAME')))); + {$ELSEIF DEFINED(UNIX)} + Result := utf2win(SysUtils.GetEnvironmentVariable('USER')); + {$ELSE} + Result := ''; + {$ENDIF} + // Remove non 1251 chars + Result := StringReplace(Result, Invalid1251Char, '', [rfReplaceAll]); + end; + end.