[Top][All Lists]
[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: |
Wed, 04 Jan 2006 14:11:55 +0000 |
CVSROOT: /sources/mldonkey
Module name: mldonkey
Branch:
Changes by: spiralvoice <address@hidden> 06/01/04 14:11:55
Modified files:
distrib : ChangeLog
src/daemon/common: commonFile.ml
src/daemon/driver: driverCommands.ml
src/networks/donkey: donkeyGlobals.ml donkeyInteractive.ml
src/utils/cdk : filename2.ml filename2.mli string2.mli
Log message:
patch #4748
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/distrib/ChangeLog.diff?tr1=1.650&tr2=1.651&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/common/commonFile.ml.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/daemon/driver/driverCommands.ml.diff?tr1=1.109&tr2=1.110&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyGlobals.ml.diff?tr1=1.65&tr2=1.66&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/networks/donkey/donkeyInteractive.ml.diff?tr1=1.78&tr2=1.79&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/cdk/filename2.ml.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/cdk/filename2.mli.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/mldonkey/mldonkey/src/utils/cdk/string2.mli.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
Patches:
Index: mldonkey/distrib/ChangeLog
diff -u mldonkey/distrib/ChangeLog:1.650 mldonkey/distrib/ChangeLog:1.651
--- mldonkey/distrib/ChangeLog:1.650 Wed Jan 4 14:04:42 2006
+++ mldonkey/distrib/ChangeLog Wed Jan 4 14:11:55 2006
@@ -12,6 +12,8 @@
http://mldonkey.berlios.de/modules.php?name=Wiki&pagename=Windows
2006/01/04
+4748: HTML: Allow rename of files with '#', '&' and '%',
+ remove invalid chars from filenames depending on OS (thx to pango)
4756: HTML: Print build- and runinfo on main page,
fix reload bug when changing html_mods/html_themes (Knocker)
Index: mldonkey/src/daemon/common/commonFile.ml
diff -u mldonkey/src/daemon/common/commonFile.ml:1.46
mldonkey/src/daemon/common/commonFile.ml:1.47
--- mldonkey/src/daemon/common/commonFile.ml:1.46 Wed Dec 14 21:17:46 2005
+++ mldonkey/src/daemon/common/commonFile.ml Wed Jan 4 14:11:55 2006
@@ -252,8 +252,20 @@
let set_file_best_name file name =
let file = as_file_impl file in
- let name = String2.replace name '/' "::" in
- file.impl_file_best_name <- name
+ let old_name = file.impl_file_best_name in
+ let real_name = Filename2.filesystem_compliant name "" in
+ if real_name = "" then
+ lprintf_nl () "can not rename file \"%s\" to \"%s\""
+ (String.escaped file.impl_file_best_name) (String.escaped real_name)
+ else begin
+ file.impl_file_best_name <- real_name;
+ if name <> real_name then
+ lprintf_nl () "wanted new name \"%s\" changed to \"%s\" due to system
limitations"
+ (String.escaped name) (String.escaped file.impl_file_best_name);
+ if !verbose && old_name <> file.impl_file_best_name then
+ lprintf_nl () "best_name of \"%s\" changed to \"%s\""
+ (String.escaped old_name) (String.escaped file.impl_file_best_name)
+ end
let set_file_format (file : file) format =
let file = as_file_impl file in
Index: mldonkey/src/daemon/driver/driverCommands.ml
diff -u mldonkey/src/daemon/driver/driverCommands.ml:1.109
mldonkey/src/daemon/driver/driverCommands.ml:1.110
--- mldonkey/src/daemon/driver/driverCommands.ml:1.109 Wed Jan 4 14:04:42 2006
+++ mldonkey/src/daemon/driver/driverCommands.ml Wed Jan 4 14:11:55 2006
@@ -1992,9 +1992,7 @@
\\<td class=downloaded width=100%%\\>\\</td\\>
\\<td nowrap class=\\\"fbig pr\\\"\\>\\<a onclick=\\\"javascript: {
var getdir = prompt('Input: <priority#> <directory>
(surround dir with quotes if necessary)','0 /home/mldonkey/share')
- var reg = new RegExp (' ', 'gi') ;
- var outstr = getdir.replace(reg, '+');
- parent.fstatus.location.href='submit?q=share+' +
encodeURI(outstr);
+ parent.fstatus.location.href='submit?q=share+' +
encodeURIComponent(getdir);
setTimeout('window.location.reload()',1000);
}\\\"\\>Add Share\\</a\\>
\\</td\\>
@@ -2662,8 +2660,8 @@
try
let file = file_find num in
set_file_best_name file new_name;
- Printf.sprintf (_b "Download %d renamed to %s") num new_name
- with _ -> Printf.sprintf (_b "No file number %d") num
+ Printf.sprintf (_b "Download %d renamed to %s") num (file_best_name
file)
+ with e -> Printf.sprintf (_b "No file number %d, error %s") num
(Printexc2.to_string e)
), "<num> \"<new name>\" :\t\tchange name of download <num> to <new name>";
"dllink", Arg_multiple (fun args o ->
Index: mldonkey/src/networks/donkey/donkeyGlobals.ml
diff -u mldonkey/src/networks/donkey/donkeyGlobals.ml:1.65
mldonkey/src/networks/donkey/donkeyGlobals.ml:1.66
--- mldonkey/src/networks/donkey/donkeyGlobals.ml:1.65 Sun Jan 1 19:27:07 2006
+++ mldonkey/src/networks/donkey/donkeyGlobals.ml Wed Jan 4 14:11:55 2006
@@ -277,9 +277,7 @@
match impl.impl_file_probable_name with
None -> ()
| Some best_name ->
- let best_name = String2.replace best_name '/' "::" in
- set_file_best_name file best_name;
- if !verbose then lprintf_nl () "BEST NAME now IS %s" best_name;
+ set_file_best_name file best_name
with Not_found -> ()
let new_file file_diskname file_state md4 file_size filenames writable =
Index: mldonkey/src/networks/donkey/donkeyInteractive.ml
diff -u mldonkey/src/networks/donkey/donkeyInteractive.ml:1.78
mldonkey/src/networks/donkey/donkeyInteractive.ml:1.79
--- mldonkey/src/networks/donkey/donkeyInteractive.ml:1.78 Sun Jan 1
19:27:07 2006
+++ mldonkey/src/networks/donkey/donkeyInteractive.ml Wed Jan 4 14:11:55 2006
@@ -547,6 +547,13 @@
else
let md4 = if String.length md4 > 32 then
String.sub md4 0 32 else md4 in
+ let name =
+ let name2 = Filename2.filesystem_compliant name "" in
+ if name2 = "" then
+ Printf.sprintf "urn_ed2k_%s" md4
+ else
+ name2
+ in
begin try
let file = query_download [name] (Int64.of_string size)
(Md4.of_string md4) None None None false;
@@ -790,9 +797,7 @@
\\<!--
function submitRenameForm(i) {
var formID = document.getElementById(\\\"renameForm\\\" + i)
-var regExp = new RegExp (' ', 'gi') ;
-var renameTextOut = formID.newName.value.replace(regExp, '+');
-parent.fstatus.location.href='submit?q=rename+'+i+'+\\\"'+encodeURI(renameTextOut)+'\\\"';
+parent.fstatus.location.href='submit?q=rename+'+i+'+\\\"'+encodeURIComponent(formID.newName.value)+'\\\"';
}
//--\\>
\\</script\\>";
@@ -1279,9 +1284,7 @@
\\<!--
function submitRenameForm(i) {
var formID = document.getElementById(\\\"renameForm\\\" + i)
-var regExp = new RegExp (' ', 'gi') ;
-var renameTextOut = formID.newName.value.replace(regExp, '+');
-parent.fstatus.location.href='submit?q=rename+%d+\\\"'+encodeURI(renameTextOut)+'\\\"';
+parent.fstatus.location.href='submit?q=rename+%d+\\\"'+encodeURIComponent(formID.newName.value)+'\\\"';
}
//--\\>
\\</script\\>" (file_num file)
Index: mldonkey/src/utils/cdk/filename2.ml
diff -u mldonkey/src/utils/cdk/filename2.ml:1.3
mldonkey/src/utils/cdk/filename2.ml:1.4
--- mldonkey/src/utils/cdk/filename2.ml:1.3 Mon Oct 17 15:25:46 2005
+++ mldonkey/src/utils/cdk/filename2.ml Wed Jan 4 14:11:55 2006
@@ -141,14 +141,73 @@
in
iter (path_of_filename filename) filename
-let escaped filename =
- let s = String.copy filename in
- for i = 0 to String.length filename - 1 do
- match filename.[i] with
- | '\\' | '/' | ':' -> s.[i] <- '_'
- | _ -> ()
- done;
- s
+let filesystem_compliant name fs =
+ (* replace all illegal characters with a valid one.
+ assumes all filesystems accept '_'s in filenames *)
+ let escape_chars p filename =
+ let s = String.copy filename in
+ for i = 0 to String.length filename - 1 do
+ if p s.[i] then s.[i] <- '_'
+ done;
+ s in
+
+ (* remove all illegal characters at the beginning of filename *)
+ let trim_left p filename =
+ let len = String.length filename in
+ let left =
+ let rec aux i =
+ if i < len && p filename.[i] then aux (i+1) else i in
+ aux 0 in
+ if left = 0 then filename
+ else
+ String.sub filename left (len - left) in
+
+ (* remove all illegal characters at the end of filename *)
+ let trim_right p filename =
+ let len = String.length filename in
+ let right =
+ let rec aux i =
+ if i > 0 && p filename.[i-1] then aux (i-1) else i in
+ aux len in
+ if right = len then filename
+ else
+ String.sub filename 0 right in
+
+ let minimal_filter c =
+ match c with
+ | '/' | '\\' | '<' | '>' | '"' -> true
+ | _ -> false in
+
+ let posix_compliant name =
+ escape_chars minimal_filter name in
+
+ let windows_compliant name =
+ (*
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/creating__deleting__and_maintaining_files.asp
*)
+ let windows_filter c =
+ minimal_filter c ||
+ match c with
+ | '*' | '?' | '|' | ':' | '"' -> true
+ | _ -> false in
+
+ (* Windows has additional restrictions:
+ - filenames cannot start with a '.'
+ - filenames cannot end with '.' or space *)
+ let name = trim_left (fun c -> c = '.') name in
+ let name = trim_right (fun c -> c = '.' || c = ' ') name in
+ escape_chars windows_filter name in
+
+ let macosx_compliant name =
+ (* ':' is directory seperator on Mac OS X:
http://www.comentum.com/File-Systems-HFS-FAT-UFS.html *)
+ let macosx_filter c =
+ minimal_filter c || c = ':' in
+ escape_chars macosx_filter name in
+
+ if Autoconf.windows then
+ windows_compliant name
+ else if Autoconf.system = "macosx" then
+ macosx_compliant name
+ else
+ posix_compliant name
let temp_directory () =
match Sys.os_type with
Index: mldonkey/src/utils/cdk/filename2.mli
diff -u mldonkey/src/utils/cdk/filename2.mli:1.3
mldonkey/src/utils/cdk/filename2.mli:1.4
--- mldonkey/src/utils/cdk/filename2.mli:1.3 Mon Oct 17 15:25:46 2005
+++ mldonkey/src/utils/cdk/filename2.mli Wed Jan 4 14:11:55 2006
@@ -61,7 +61,8 @@
val basename : string -> string
-val escaped : string -> string
+(* remove invalid chars in a filename, depending on the filesystem *)
+val filesystem_compliant : string -> string -> string
val temp_directory : unit -> string
-
\ No newline at end of file
+
Index: mldonkey/src/utils/cdk/string2.mli
diff -u mldonkey/src/utils/cdk/string2.mli:1.7
mldonkey/src/utils/cdk/string2.mli:1.8
--- mldonkey/src/utils/cdk/string2.mli:1.7 Thu Aug 19 07:56:55 2004
+++ mldonkey/src/utils/cdk/string2.mli Wed Jan 4 14:11:55 2006
@@ -103,7 +103,3 @@
val map : (char -> 'a) -> string -> 'a array
val iteri: (int -> char -> unit) -> string -> unit
-
-
-val init : int -> (int -> char) -> string
-
\ No newline at end of file
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/01
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/01
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/02
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/03
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/04
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co...,
mldonkey-commits <=
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/04
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/06
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/07
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/08
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/08
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/11
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/11
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/12
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/12
- [Mldonkey-commits] mldonkey distrib/ChangeLog src/daemon/common/co..., mldonkey-commits, 2006/01/16