aboutsummaryrefslogtreecommitdiff
path: root/lib/system.ml
diff options
context:
space:
mode:
authorletouzey2013-08-22 14:29:29 +0000
committerletouzey2013-08-22 14:29:29 +0000
commitd475ff0d4427fc1c3859fc5d8d0cb7cc0a32a14e (patch)
treea75a8640a512b580569038dcd48ec5b35c9870e2 /lib/system.ml
parent1f3331bd4ff9fd562d534554185db2b6c4cc9e78 (diff)
Change in vo format : digest aren't Marshalled anymore
Since digests are strings (of size 16), we just dump them now in vo files (cf. Digest.output) instead of using Marshal on them : this is cleaner and saves a few bytes. Increased VOMAGIC to clearly identify this change in the format. Please rerun ./configure after this commit. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16722 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib/system.ml')
-rw-r--r--lib/system.ml13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/system.ml b/lib/system.ml
index d2788de93f..37b8dee4c4 100644
--- a/lib/system.ml
+++ b/lib/system.ml
@@ -114,12 +114,17 @@ let try_remove filename =
msg_warning
(str"Could not remove file " ++ str filename ++ str" which is corrupted!")
-let marshal_out ch v = Marshal.to_channel ch v []
+let error_corrupted file = error (file ^ " is corrupted, try to rebuild it.")
+
+let marshal_out ch v = Marshal.to_channel ch v []; flush ch
let marshal_in filename ch =
try Marshal.from_channel ch
- with
- | End_of_file | Failure _ (* e.g. "truncated object" *) ->
- error (filename ^ " is corrupted, try to rebuild it.")
+ with End_of_file | Failure _ -> error_corrupted filename
+
+let digest_out = Digest.output
+let digest_in filename ch =
+ try Digest.input ch
+ with End_of_file | Failure _ -> error_corrupted filename
exception Bad_magic_number of string