Correct section header.
Consistently use 'type a. ...' syntax for signatures.
Printers for signed and unsigned integer types.
Printing for pointers.

  # let getenv = Foreign.foreign "getenv" (string @-> returning (ptr char));;
  val getenv : string -> char Ctypes.ptr = <fun>
  # getenv "USER";;
  - : char Ctypes.ptr = (char*) 0x7ffff65bfa7b
  # getenv "A";;
  - : char Ctypes.ptr = (char*) (nil)
General printing for C values.
Top-level printers for POSIX types.

  # let time = Foreign.foreign "time" (ptr void @-> returning time_t);;
  val time : unit Ctypes.ptr -> PosixTypes.time_t = <fun>
  # time null;;
  - : PosixTypes.time_t = 1372340341