# PR_Seek64

Moves the current read-write file pointer by an offset expressed as a
64-bit integer.

## Syntax

```{code}
#include <prio.h>

PRInt64 PR_Seek64(
  PRFileDesc *fd,
  PRInt64 offset,
  PRSeekWhence whence);
```

### Parameters

The function has the following parameters:

`fd`

: A pointer to a {ref}`PRFileDesc` object.

`offset`

: A value, in bytes, used with the whence parameter to set the file
  pointer. A negative value causes seeking in the reverse direction.

`whence`

: A value of type {ref}`PRSeekWhence` that specifies how to interpret the
  `offset` parameter in setting the file pointer associated with the
  fd parameter. The value for the `whence` parameter can be one of
  the following:

> - `PR_SEEK_SET`. Sets the file pointer to the value of the
  >   `offset` parameter.
> - `PR_SEEK_CUR`. Sets the file pointer to its current location
  >   plus the value of the `offset` parameter.
> - `PR_SEEK_END`. Sets the file pointer to the size of the file
  >   plus the value of the `offset` parameter.

### Returns

The function returns one of the following values:

- If the function completes successfully, it returns the resulting file
  pointer location, measured in bytes from the beginning of the file.
- If the function fails, the file pointer remains unchanged and the
  function returns -1. The error code can then be retrieved with
  {ref}`PR_GetError`.

## Description

This is the idiom for obtaining the current location (expressed as a
64-bit integer) of the file pointer for the file descriptor `fd`:

`PR_Seek64(fd, 0, PR_SEEK_CUR)`

If the operating system can handle only a 32-bit file offset,
{ref}`PR_Seek64` may fail with the error code `PR_FILE_TOO_BIG_ERROR` if
the `offset` parameter is out of the range of a 32-bit integer.

## See Also

{ref}`PR_Seek`
