
  -spec pread(IoDevice, Location, Number) ->
                 {ok, Data} | eof | {error, Reason}
                 when
                     IoDevice :: io_device(),
                     Location :: location(),
                     Number :: non_neg_integer(),
                     Data :: string() | binary(),
                     Reason :: posix() | badarg | terminated.

  Combines position/2 and read/2 in one operation, which is more
  efficient than calling them one at a time.

  Location is only allowed to be an integer for raw and ram
  modes.

  The current position of the file after the operation is undefined
  for raw mode and unchanged for ram mode.

  As the position is specified as a byte-offset, take special
  caution when working with files where encoding is set to
  something else than latin1, as not every byte position is a
  valid character boundary on such a file.
