summaryrefslogtreecommitdiffstats
path: root/docs/nspr/reference/pr_seek64.rst
blob: 3c144575dc89186181a85ddf09ef918ef5cf5212 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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:

    - :ref:`PR_SEEK_SET`. Sets the file pointer to the value of the
      ``offset`` parameter.
    - :ref:`PR_SEEK_CUR`. Sets the file pointer to its current location
      plus the value of the ``offset`` parameter.
    - :ref:`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`