]> matita.cs.unibo.it Git - helm.git/blobdiff - matitaB/matita/matitaAuthentication.ml
Matitaweb: implementation of file-flagging for keeping track of modified files
[helm.git] / matitaB / matita / matitaAuthentication.ml
index 86189fddf6ec54c8a20995c2b952b7271470e73a..2d9b377cab7006a75bcdccf1375e6880377de5aa 100644 (file)
@@ -136,19 +136,17 @@ let read_ft uid =
       [] 
 ;;
 
-let set_file_flag uid filename flag =
-  let filename = MatitaFilesystem.normalize_qfn filename in 
+let set_file_flag uid files_flags =
   let ft = read_ft uid in
-  let oldflag = 
-    try List.assoc filename ft
-    with Not_found -> MatitaFilesystem.MSynchronized
+  let files = List.map fst files_flags in
+  let ft = List.filter (fun (x,_) -> not (List.mem x files)) ft in
+  let ft' = List.fold_left (fun acc (filename,flag) ->  
+      let filename = MatitaFilesystem.normalize_qfn filename in 
+      try
+        (filename,HExtlib.unopt flag)::acc
+      with Failure _ -> acc) [] files_flags
   in
-  if oldflag <> MatitaFilesystem.MConflict 
-    then
-      let ft = (filename,flag)::
-        List.filter (fun (fn,_) -> fn <> filename) ft in
-      write_ft uid ft
-    else ()
+  write_ft uid (ft'@ft)
 ;;
 
 let add_user uid pw =