141 |
close t; |
close t; |
142 |
(let d = (Filename.dirname (Filename.concat f file)) in |
(let d = (Filename.dirname (Filename.concat f file)) in |
143 |
Unix2.safe_mkdir d; |
Unix2.safe_mkdir d; |
144 |
Unix.chmod d 0o777); |
Unix.chmod d 0o777; |
145 |
|
Unix2.can_write_to_directory d); |
146 |
Unix2.rename t.filename (Filename.concat f file); |
Unix2.rename t.filename (Filename.concat f file); |
147 |
destroy t |
destroy t |
148 |
|
|
321 |
|
|
322 |
let create dirname files = |
let create dirname files = |
323 |
Unix2.safe_mkdir dirname; |
Unix2.safe_mkdir dirname; |
324 |
|
Unix2.can_write_to_directory dirname; |
325 |
let rec iter files pos files2 = |
let rec iter files pos files2 = |
326 |
match files with |
match files with |
327 |
[] -> |
[] -> |
342 |
| (filename, size) :: tail -> |
| (filename, size) :: tail -> |
343 |
let temp_filename = Filename.concat dirname filename in |
let temp_filename = Filename.concat dirname filename in |
344 |
Unix2.safe_mkdir (Filename.dirname temp_filename); |
Unix2.safe_mkdir (Filename.dirname temp_filename); |
345 |
|
Unix2.can_write_to_directory (Filename.dirname temp_filename); |
346 |
let fd = FDCache.create temp_filename in |
let fd = FDCache.create temp_filename in |
347 |
let _ = FDCache.local_force_fd fd true in |
let _ = FDCache.local_force_fd fd true in |
348 |
iter tail (pos ++ size) |
iter tail (pos ++ size) |
553 |
let dirname = filename ^ ".chunks" in |
let dirname = filename ^ ".chunks" in |
554 |
(* lprintf "Creating directory %s\n" dirname; *) |
(* lprintf "Creating directory %s\n" dirname; *) |
555 |
Unix2.safe_mkdir dirname; |
Unix2.safe_mkdir dirname; |
556 |
|
Unix2.can_write_to_directory dirname; |
557 |
{ |
{ |
558 |
filename = filename; |
filename = filename; |
559 |
dirname = dirname; |
dirname = dirname; |