|
@@ -47,6 +47,52 @@ unit iso7185;
|
|
|
|
|
|
implementation
|
|
|
|
|
|
+ function getTempDir: string;
|
|
|
+ var
|
|
|
+ key: string;
|
|
|
+ value: string;
|
|
|
+ i_env, i_key, i_value: integer;
|
|
|
+ pd : char; // Pathdelim not available ?
|
|
|
+ begin
|
|
|
+ {$IFDEF HASUNIX}
|
|
|
+ value := '/tmp/'; (** default for UNIX **)
|
|
|
+ pd:='/';
|
|
|
+ {$ELSE}
|
|
|
+ value := '';
|
|
|
+ pd:='\';
|
|
|
+ {$ENDIF}
|
|
|
+ while (envp <> NIL) and assigned(envp^) do
|
|
|
+ begin
|
|
|
+ i_env := 0;
|
|
|
+ i_key := 1;
|
|
|
+ while not (envp^[i_env] in ['=', #0]) do
|
|
|
+ begin
|
|
|
+ key[i_key] := envp^[i_env];
|
|
|
+ inc(i_env);
|
|
|
+ inc(i_key);
|
|
|
+ end;
|
|
|
+ setlength(key, i_key - 1);
|
|
|
+ if (key = 'TEMP') or (key = 'TMP') or (key = 'TMPDIR') then
|
|
|
+ begin
|
|
|
+ inc(i_env); (** skip '=' **)
|
|
|
+ i_value := 1;
|
|
|
+ while (envp^[i_env] <> #0) do
|
|
|
+ begin
|
|
|
+ value[i_value] := envp^[i_env];
|
|
|
+ inc(i_env);
|
|
|
+ inc(i_value);
|
|
|
+ end;
|
|
|
+ setlength(value, i_value - 1);
|
|
|
+ end;
|
|
|
+ inc(envp);
|
|
|
+ end;
|
|
|
+ i_value:=length(value);
|
|
|
+ if (i_value>0) and (value[i_value]<>pd) then
|
|
|
+ value:=value+pd;
|
|
|
+ getTempDir := value;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
{$i-}
|
|
|
procedure DoAssign(var t : Text);
|
|
|
{$ifndef FPC_HAS_FEATURE_RANDOM}
|
|
@@ -55,9 +101,9 @@ unit iso7185;
|
|
|
{$endif FPC_HAS_FEATURE_RANDOM}
|
|
|
begin
|
|
|
{$ifdef FPC_HAS_FEATURE_RANDOM}
|
|
|
- Assign(t,'fpc_'+HexStr(random(1000000000),8)+'.tmp');
|
|
|
+ Assign(t,getTempDir+'fpc_'+HexStr(random(1000000000),8)+'.tmp');
|
|
|
{$else FPC_HAS_FEATURE_RANDOM}
|
|
|
- Assign(t,'fpc_'+HexStr(NextIndex,4)+'.tmp');
|
|
|
+ Assign(t,getTempDir+'fpc_'+HexStr(NextIndex,4)+'.tmp');
|
|
|
Inc(NextIndex);
|
|
|
{$endif FPC_HAS_FEATURE_RANDOM}
|
|
|
end;
|