> 1: let main () =
> 2: let file_info : Unix.stats = Unix.stat Sys.argv.(1) in
> 3: let fd = Unix.openfile Sys.argv.(1) [ Unix.O_RDONLY ] perm in
> 4: let buffer = ref "" in
> 5: let bytes_read = Unix.read (fd) (buffer) (file_info.st_size) in
> <snipped>
>
> But it fails with the error "Unbound record field label st_size" on line 5.
> I can't explain why this is happening; looking at the Unix.ml file, I see
> the st_size field in the Unix.stats record. Any suggestions would be
> appreciated.
Since you didn't open the Unix module with "open Unix" you have to
qualify any identifier from that module with "Unix." (as you did for
stat, read, ... by the way), including the field name st_size.
So you should have written "file_info.Unix.st_size".
As you are probably going to say, it becomes quite heavy. Thus, since
you use many identifiers from the Unix module, you should rather open
it, like this :
======================================================================
open Unix
let main () =
let file_info = stat Sys.argv.(1) in
let fd = openfile Sys.argv.(1) [ O_RDONLY ] perm in
let buffer = ref "" in
let bytes_read = read fd buffer file_info.st_size in
<snipped>
======================================================================
-- Jean-Christophe Filliatre Computer Science Laboratory Phone (650) 859-5173 SRI International FAX (650) 859-2844 333 Ravenswood Ave. email filliatr@csl.sri.com Menlo Park, CA 94025, USA web http://www.csl.sri.com/~filliatr
This archive was generated by hypermail 2b29 : Sat May 13 2000 - 11:40:26 MET DST