使用* ocaml_tar *创建TAR文件时出现End_of_file异常

时间:2016-08-29 07:50:37

标签: ocaml

当我尝试使用 ocaml_tar 库创建TAR文件时,我收到End_of_file异常。

我的代码......

#require "tar";;
#require "tar.unix";;
let f = Unix.openfile "test.tar" [ Unix.O_RDWR; Unix.O_CREAT ] 0o600;;
Tar_unix.Archive.create ["write_ex.ml"] f;;
Unix.close f;;

...生成以下stacktrace:

$ utop write_ex.ml
Exception: End_of_file.
Raised at file "lib/tar.ml", line 549, characters 36-47
Called from file "lib/tar.ml", line 460, characters 4-11
Called from file "stream.ml", line 149, characters 33-38
Called from file "lib/tar.ml", line 578, characters 6-28
Called from file "toplevel/toploop.ml", line 180, characters 17-56

有谁知道什么是错的?

1 个答案:

答案 0 :(得分:5)

您的代码没有任何问题。它实际上是Tar_unix模块中的一个错误。 output函数不够健壮,如果写入被截断,则会因End_of_file异常而失败。我已经解决了这个问题,你的代码运行正常。有关详细信息,请参阅我的PR

更新

PR合并,较新的(0.5.1)版本发布到opam。使用以下命令升级到最新版本:

opam update
opam upgrade

通过查询opam确保安装了最新的(> = 0.5.1)版本

opam show tar-format

如果它仍旧,请强制opam安装最新版本:

opam install 'tar-format>=0.5.1'