mldonkey-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...


From: mldonkey-commits
Subject: [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...
Date: Mon, 31 Mar 2008 07:58:17 +0000

CVSROOT:        /sources/mldonkey
Module name:    mldonkey
Changes by:     spiralvoice <spiralvoice>       08/03/31 07:58:17

Modified files:
        distrib        : ChangeLog 
        src/daemon/common: commonOptions.ml commonWeb.ml 
        src/daemon/driver: driverCommands.ml driverInteractive.ml 
        src/networks/donkey: donkeyProtoClient.ml donkeyProtoServer.ml 
        src/utils/cdk  : filename2.ml filename2.mli 
        src/utils/lib  : misc.ml misc2.mlcpp unix32.ml 

Log message:
        patch #6477

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/distrib/ChangeLog?cvsroot=mldonkey&r1=1.1370&r2=1.1371
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonOptions.ml?cvsroot=mldonkey&r1=1.222&r2=1.223
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/common/commonWeb.ml?cvsroot=mldonkey&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverCommands.ml?cvsroot=mldonkey&r1=1.247&r2=1.248
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/daemon/driver/driverInteractive.ml?cvsroot=mldonkey&r1=1.136&r2=1.137
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoClient.ml?cvsroot=mldonkey&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/networks/donkey/donkeyProtoServer.ml?cvsroot=mldonkey&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/cdk/filename2.ml?cvsroot=mldonkey&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/cdk/filename2.mli?cvsroot=mldonkey&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/lib/misc.ml?cvsroot=mldonkey&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/lib/misc2.mlcpp?cvsroot=mldonkey&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/mldonkey/src/utils/lib/unix32.ml?cvsroot=mldonkey&r1=1.73&r2=1.74

Patches:
Index: distrib/ChangeLog
===================================================================
RCS file: /sources/mldonkey/mldonkey/distrib/ChangeLog,v
retrieving revision 1.1370
retrieving revision 1.1371
diff -u -b -r1.1370 -r1.1371
--- distrib/ChangeLog   31 Mar 2008 07:55:42 -0000      1.1370
+++ distrib/ChangeLog   31 Mar 2008 07:58:16 -0000      1.1371
@@ -15,6 +15,11 @@
 =========
 
 2008/03/31
+6477: Use $MLDONKEY_DIR/mlnet_tmp instead of /tmp
+- This patch fixes problems with hash checking of multifile BT
+  downloads when /tmp is too small.
+- To override $MLDONKEY_DIR/mlnet_tmp use variable $MLDONKEY_TEMP.
+  This patch has nothing to do with option temp_directory.
 6472: Multiuser: Count only files in download queue for user/group statistics
 6471: Clean logfile
 6470: BT: Use default of max_upload_slots as minimum for BT-max_bt_uploaders

Index: src/daemon/common/commonOptions.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonOptions.ml,v
retrieving revision 1.222
retrieving revision 1.223
diff -u -b -r1.222 -r1.223
--- src/daemon/common/commonOptions.ml  18 Mar 2008 08:24:37 -0000      1.222
+++ src/daemon/common/commonOptions.ml  31 Mar 2008 07:58:16 -0000      1.223
@@ -211,7 +211,13 @@
   let conv_filename = Charset.to_locale filename in
   if filename <> conv_filename then Charset.conversion_enabled := false;
 
-  Unix2.can_write_to_directory (Filename2.temp_directory ());
+  (try
+     ignore (Sys.getenv "MLDONKEY_TEMP")
+   with Not_found ->
+     Unix.putenv "MLDONKEY_TEMP" ((Filename.basename Sys.argv.(0)) ^ "_tmp")
+  );
+
+  Unix2.can_write_to_directory (Filename2.temp_dir_name ());
 
   if (String2.starts_with (Filename.basename Sys.argv.(0)) "mlnet") then begin
     if Sys.file_exists pid_filename then begin

Index: src/daemon/common/commonWeb.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/common/commonWeb.ml,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- src/daemon/common/commonWeb.ml      24 Jun 2007 18:38:28 -0000      1.41
+++ src/daemon/common/commonWeb.ml      31 Mar 2008 07:58:16 -0000      1.42
@@ -195,7 +195,7 @@
 let mldonkey_wget_shell w f =
   let command_urlencoded = Str.string_after w.url 8 in
   let command = Url.decode command_urlencoded in
-  let filename = Filename.temp_file "wget_" ".tmp" in
+  let filename = Filename2.temp_file "wget_" ".tmp" in
     ignore (Sys.command (Printf.sprintf "%s > %s" command filename));
     (f filename : unit)
       

Index: src/daemon/driver/driverCommands.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml,v
retrieving revision 1.247
retrieving revision 1.248
diff -u -b -r1.247 -r1.248
--- src/daemon/driver/driverCommands.ml 14 Mar 2008 08:50:52 -0000      1.247
+++ src/daemon/driver/driverCommands.ml 31 Mar 2008 07:58:16 -0000      1.248
@@ -1396,7 +1396,7 @@
           [arg] ->
            (try
             let cmd = List.assoc arg !!allowed_commands in
-            let tmp = Filename.temp_file "com" ".out" in
+            let tmp = Filename2.temp_file "com" ".out" in
             let ret = Sys.command (Printf.sprintf "%s > %s"
                   cmd tmp) in
             let output = File.to_string tmp in

Index: src/daemon/driver/driverInteractive.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/daemon/driver/driverInteractive.ml,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -b -r1.136 -r1.137
--- src/daemon/driver/driverInteractive.ml      6 Feb 2008 20:39:53 -0000       
1.136
+++ src/daemon/driver/driverInteractive.ml      31 Mar 2008 07:58:16 -0000      
1.137
@@ -2137,6 +2137,7 @@
   let list = ref [] in
   ignore (search_incoming_files ());
   ignore (search_incoming_directories ());
+  list := (Filename2.temp_dir_name (), "$MLDONKEY_TEMP") :: !list;
   List.iter (fun dir ->
      list := (dir.shdir_dirname, (Printf.sprintf "shared (%s)" 
dir.shdir_strategy))
      :: !list) !!shared_directories;

Index: src/networks/donkey/donkeyProtoClient.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoClient.ml,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- src/networks/donkey/donkeyProtoClient.ml    17 Jun 2007 02:08:15 -0000      
1.47
+++ src/networks/donkey/donkeyProtoClient.ml    31 Mar 2008 07:58:16 -0000      
1.48
@@ -1455,7 +1455,7 @@
               if !CommonOptions.verbose_unknown_messages then begin
                   lprintf_nl "Unknown message From client: %s (magic %d)"
                     (Printexc2.to_string e) magic;
-                  let tmp_file = Filename.temp_file "comp" "pak" in
+                  let tmp_file = Filename2.temp_file "comp" "pak" in
                   File.from_string tmp_file s;
                   lprintf_nl "Saved unknown packet %s" tmp_file;
                   dump s;
@@ -1473,7 +1473,7 @@
       if !CommonOptions.verbose_unknown_messages then begin
           lprintf_nl "Unknown message From client: %s (magic %d)"
               (Printexc2.to_string e) magic;
-               let tmp_file = Filename.temp_file "comp" "pak" in
+               let tmp_file = Filename2.temp_file "comp" "pak" in
        File.from_string tmp_file s;
        lprintf_nl "Saved unknown packet %s" tmp_file;
 

Index: src/networks/donkey/donkeyProtoServer.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/networks/donkey/donkeyProtoServer.ml,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- src/networks/donkey/donkeyProtoServer.ml    17 Jun 2007 02:08:15 -0000      
1.27
+++ src/networks/donkey/donkeyProtoServer.ml    31 Mar 2008 07:58:16 -0000      
1.28
@@ -1135,7 +1135,7 @@
       if !CommonOptions.verbose_unknown_messages then begin
           lprintf_nl "Unknown message From server: %s (magic %d)"
             (Printexc2.to_string e) magic;
-          let tmp_file = Filename.temp_file "comp" "pak" in
+          let tmp_file = Filename2.temp_file "comp" "pak" in
           File.from_string tmp_file s;
           lprintf_nl "Saved unknown packet %s" tmp_file;
           dump s;

Index: src/utils/cdk/filename2.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/cdk/filename2.ml,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- src/utils/cdk/filename2.ml  11 Mar 2008 11:01:01 -0000      1.8
+++ src/utils/cdk/filename2.ml  31 Mar 2008 07:58:16 -0000      1.9
@@ -237,13 +237,39 @@
   in
   length_checked_name
 
-let temp_directory () =
+let temp_dir_name () =
+  try
+    Sys.getenv "MLDONKEY_TEMP"
+  with Not_found ->
+(* kept for compatability with Filename.temp_dir_name, this code
+   is never reached because $MLDONKEY_TEMP is filled in commonOptions.ml *)
   match Sys.os_type with
-    "Unix" | "Cygwin" ->
+    | "Unix" | "Cygwin" ->
       (try Sys.getenv "TMPDIR" with Not_found -> "/tmp")
-  | "Win32" ->
+    | _ ->
       (try Sys.getenv "TEMP" with Not_found -> ".")
-  | _ -> "."
+
+(* this code is copied from Ocaml stdlib/filename.ml but
+   extended to respect runtime changes to $MLDONKEY_TEMP,
+   Ocaml uses variable $TMPDIR/$TEMP instead *)
+external open_desc: string -> open_flag list -> int -> int = "caml_sys_open"
+external close_desc: int -> unit = "caml_sys_close"
+
+let prng = Random.State.make_self_init ();;
+
+let temp_file_name prefix suffix =
+  let rnd = (Random.State.bits prng) land 0xFFFFFF in
+  Filename.concat (temp_dir_name ()) (Printf.sprintf "%s%06x%s" prefix rnd 
suffix)
+
+let temp_file prefix suffix =
+  let rec try_name counter =
+    let name = temp_file_name prefix suffix in
+    try
+      close_desc (open_desc name [Open_wronly; Open_creat; Open_excl] 0o600);
+      name
+    with Sys_error _ as e ->
+      if counter >= 1000 then raise e else try_name (counter + 1)
+  in try_name 0
   
 let _ = (* some assertions on these functions *)
   assert (basename "c:\\Program Files\\Toto history.exe" = "Toto history.exe");

Index: src/utils/cdk/filename2.mli
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/cdk/filename2.mli,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/utils/cdk/filename2.mli 19 Feb 2007 21:19:44 -0000      1.6
+++ src/utils/cdk/filename2.mli 31 Mar 2008 07:58:16 -0000      1.7
@@ -68,4 +68,19 @@
    trim filename length to allowed limit on filesystem *)
 val filesystem_compliant : string -> string -> int -> string
 
-val temp_directory : unit -> string
+(** [temp_file prefix suffix] returns the name of a
+   fresh temporary file in the temporary directory.
+   The base name of the temporary file is formed by concatenating
+   [prefix], then a suitably chosen integer number, then [suffix].
+   The temporary file is created empty, with permissions [0o600]
+   (readable and writable only by the file owner).  The file is
+   guaranteed to be different from any other file that existed when
+   [temp_file] was called.
+*)
+val temp_file : string -> string -> string
+
+(** The name of the temporary directory:
+    The value of the [MLDONKEY_TEMP] environment variable is used,
+    or "mlnet_tmp" if the variable is not set.
+*)
+val temp_dir_name : unit -> string

Index: src/utils/lib/misc.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/lib/misc.ml,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- src/utils/lib/misc.ml       6 Feb 2007 22:26:59 -0000       1.8
+++ src/utils/lib/misc.ml       31 Mar 2008 07:58:17 -0000      1.9
@@ -93,7 +93,7 @@
   let file = ref "" in
   try
     let buffer = String.create 4096 in
-    let file_out = Filename.temp_file "arch_" ".tmp" in
+    let file_out = Filename2.temp_file "arch_" ".tmp" in
     file := file_out;
     Unix2.tryopen_read_gzip filename (fun ic ->
       Unix2.tryopen_write_bin file_out (fun oc ->

Index: src/utils/lib/misc2.mlcpp
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/lib/misc2.mlcpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/utils/lib/misc2.mlcpp   6 Feb 2006 12:54:58 -0000       1.2
+++ src/utils/lib/misc2.mlcpp   31 Mar 2008 07:58:17 -0000      1.3
@@ -27,7 +27,7 @@
     let file = ref "" in
     try
       let buffer = String.create 4096 in
-      let file_out = Filename.temp_file "arch_" ".tmp" in
+      let file_out = Filename2.temp_file "arch_" ".tmp" in
       file := file_out;
       let ic = Bzip2.open_in filename
       in

Index: src/utils/lib/unix32.ml
===================================================================
RCS file: /sources/mldonkey/mldonkey/src/utils/lib/unix32.ml,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- src/utils/lib/unix32.ml     3 Jul 2007 15:35:08 -0000       1.73
+++ src/utils/lib/unix32.ml     31 Mar 2008 07:58:17 -0000      1.74
@@ -539,7 +539,7 @@
         let fd = FDCache.local_force_fd file.fd in
         f fd (chunk_begin -- file_begin)
       else
-       let temp_file = Filename.temp_file "chunk" ".tmp" in
+       let temp_file = Filename2.temp_file "chunk" ".tmp" in
        let file_out = FDCache.create temp_file true in
 
        try
@@ -846,7 +846,7 @@
       
       else
       
-       let temp_file = Filename.temp_file "chunk" ".tmp" in
+       let temp_file = Filename2.temp_file "chunk" ".tmp" in
        let file_out = FDCache.create temp_file t.writable in
       
        let rec iter pos index chunk_begin chunk_len =
@@ -1587,7 +1587,7 @@
               iter tail
       
     and make_temp_file list = 
-      let temp_file = Filename.temp_file "chunk" ".tmp" in
+      let temp_file = Filename2.temp_file "chunk" ".tmp" in
       let file_out = create_rw temp_file in
         
       let rec fill pos chunk_begin chunk_len list =




reply via email to

[Prev in Thread] Current Thread [Next in Thread]