File: copysources.ml

package info (click to toggle)
mldonkey 2.8.1-2etch1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 16,940 kB
  • ctags: 26,220
  • sloc: ml: 138,666; sh: 15,368; cpp: 12,076; ansic: 8,243; asm: 3,858; xml: 3,367; perl: 1,831; makefile: 259; python: 258
file content (39 lines) | stat: -rwxr-xr-x 1,200 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
open Printf2
open Sys;;
open Unix;;

let rec iter srcdir destdir =
  lprintf "iter: \n%s\n%s\n" srcdir destdir;
  let s = 
    try
      File.to_string (Filename.concat srcdir "CVS/Entries") 
    with _ -> 
        File.to_string (Filename.concat srcdir "cvs/Entries")
  in
  List.iter (fun line ->
      match String2.split line '/' with
        "D" :: directory :: _ ->
          lprintf "Directory [%s]\n" directory;
          let new_srcdir = Filename.concat srcdir directory in
          if file_exists new_srcdir then
            let new_destdir = Filename.concat destdir directory in
            mkdir new_destdir 0o755;
            iter new_srcdir new_destdir
      | "" :: file :: _ -> 
          lprintf "File [%s]\n" file;
          let full_srcfile = Filename.concat srcdir file in
          let full_destfile = Filename.concat destdir file in
          (*
Unix2.copy full_srcfile full_destfile;
*)
          ignore (command (Printf.sprintf "cp '%s' '%s'" 
              full_srcfile   full_destfile))
      | _ -> ()
  ) (String2.split_simplify s '\n')

let _ =
  let directory = Sys.argv.(1) in
  ignore (command ("rm -rf " ^ directory));
  mkdir directory 0o755;
  iter "." directory