let status_file file =
let dir = Filename.dirname file in
let f = Filename.basename file in
let temp_file = Filename.temp_file "ocamlcvs" "status" in
let com = Printf.sprintf "cd %s ; cvs status %s %s > %s"
(Filename.quote dir)
!Ocvs_config.status_options
(Filename.quote f)
temp_file
in
let n = Sys.command com in
if n = 0 then
(
let l = analyse_status_file temp_file in
delete_file temp_file ;
try
match l with
[] -> raise (Ocvs_types.CvsFailure (Ocvs_messages.error_exec com))
| ci :: _ ->
{ ci with
cvs_file = file ;
}
with
Invalid_argument _ ->
raise (Ocvs_types.CvsFailure (Ocvs_messages.error_exec com))
)
else
(
delete_file temp_file ;
raise (Ocvs_types.CvsFailure (Ocvs_messages.error_exec com))
)