Преглед изворни кода

* Patch from Karl-Michael Schindler to prepend TMP to temp filename

git-svn-id: trunk@34480 -
michael пре 9 година
родитељ
комит
1f188c3685
1 измењених фајлова са 48 додато и 2 уклоњено
  1. 48 2
      rtl/inc/iso7185.pp

+ 48 - 2
rtl/inc/iso7185.pp

@@ -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;