Hi!

2011/8/2 David Allsopp <[email protected]>:
> OK, some further digging into my problem with ocaml-ssl eventually revealed
> that the problem is the way it handles Unix.file_descr. On Unix, this is
> just an [int] and so ocaml-ssl's stubs treat it as such. Under Windows, it's
> a custom block as file_descr is a C struct containing a lot of information.
>
> unixsupport.h is installed with the other caml headers, although it's not
> referenced by any of them and as far as I can tell isn't referred to in the
> manual. For Unix implementations of OCaml, it's a pretty dull file but the
> Windows version contains a definition for Socket_val which will extract the
> underlying OS handle for a socket from a file_descr.
>
> I've therefore tried inserting #include <caml/unixsupport.h> and changing
> the offending portion of code in ocaml-ssl to this:
>
> #ifdef Socket_val
>  SOCKET socket = Socket_val(socket_);
> #else
>  int socket = Int_val(socket_);
> #endif
>
> But my questions - is this "safe"? Is it likely to continue to work? If not,
> is there - or could there be - some kind of official way to extract file
> descriptors which aims to work in a cross-platform manner?

I think the safest for now is to condition your macros on the OS and
only address WIN32/Unix cases.

I have submitted a bug upstream about this:
  http://caml.inria.fr/mantis/view.php?id=5249

Romain


-- 
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to