117 lines
4.7 KiB
ReStructuredText
117 lines
4.7 KiB
ReStructuredText
PR_Open
|
|
=======
|
|
|
|
Opens a file for reading, writing, or both. Also used to create a file.
|
|
|
|
|
|
Syntax
|
|
------
|
|
|
|
.. code::
|
|
|
|
#include <prio.h>
|
|
|
|
PRFileDesc* PR_Open(
|
|
const char *name,
|
|
PRIntn flags,
|
|
PRIntn mode);
|
|
|
|
|
|
Parameters
|
|
~~~~~~~~~~
|
|
|
|
The function has the following parameters:
|
|
|
|
``name``
|
|
The pathname of the file to be opened.
|
|
``flags``
|
|
The file status flags define how the file is accessed. It is a
|
|
bitwise ``OR`` of the following bit flags. In most cases, only one of
|
|
the first three flags may be used. If the ``flags`` parameter does
|
|
not include any of the first three flags (``PR_RDONLY``,
|
|
``PR_WRONLY``, or ``PR_RDWR``), the open file can't be read or
|
|
written, which is not useful.
|
|
|
|
.. note::
|
|
|
|
The constants PR_RDWR and friends are not in any interface
|
|
(`bug 433295 <https://bugzilla.mozilla.org/show_bug.cgi?id=433295>`__).
|
|
Thus they cannot be used in JavaScript, you have to use the octal
|
|
constants (see `File I/O Snippets </en/Code_snippets:File_I/O>`__).
|
|
|
|
+--------------------+-------+---------------------------------------+
|
|
| Name | Value | Description |
|
|
+====================+=======+=======================================+
|
|
| ``PR_RDONLY`` | 0x01 | Open for reading only. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_WRONLY`` | 0x02 | Open for writing only. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_RDWR`` | 0x04 | Open for reading and writing. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_CREATE_FILE`` | 0x08 | If the file does not exist, the file |
|
|
| | | is created. If the file exists, this |
|
|
| | | flag has no effect. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_APPEND`` | 0x10 | The file pointer is set to the end of |
|
|
| | | the file prior to each write. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_TRUNCATE`` | 0x20 | If the file exists, its length is |
|
|
| | | truncated to 0. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_SYNC`` | 0x40 | If set, each write will wait for both |
|
|
| | | the file data and file status to be |
|
|
| | | physically updated. |
|
|
+--------------------+-------+---------------------------------------+
|
|
| ``PR_EXCL`` | 0x80 | With ``PR_CREATE_FILE``, if the file |
|
|
| | | does not exist, the file is created. |
|
|
| | | If the file already exists, no action |
|
|
| | | and NULL is returned. |
|
|
+--------------------+-------+---------------------------------------+
|
|
|
|
|
|
|
|
``mode``
|
|
When ``PR_CREATE_FILE`` flag is set and the file is created, these
|
|
flags define the access permission bits of the newly created file.
|
|
This feature is currently only applicable on Unix platforms. It is
|
|
ignored by any other platform but it may apply to other platforms in
|
|
the future. Possible values of the ``mode`` parameter are listed in
|
|
the table below.
|
|
|
|
============ ===== =====================================
|
|
Name Value Description
|
|
============ ===== =====================================
|
|
``PR_IRWXU`` 0700 read, write, execute/search by owner.
|
|
``PR_IRUSR`` 0400 read permission, owner.
|
|
``PR_IWUSR`` 0200 write permission, owner.
|
|
``PR_IXUSR`` 0100 execute/search permission, owner.
|
|
``PR_IRWXG`` 0070 read, write, execute/search by group
|
|
``PR_IRGRP`` 0040 read permission, group
|
|
``PR_IWGRP`` 0020 write permission, group
|
|
``PR_IXGRP`` 0010 execute/search permission, group
|
|
``PR_IRWXO`` 0007 read, write, execute/search by others
|
|
``PR_IROTH`` 0004 read permission, others
|
|
``PR_IWOTH`` 0002 write permission, others
|
|
``PR_IXOTH`` 0001 execute/search permission, others
|
|
============ ===== =====================================
|
|
|
|
|
|
Returns
|
|
~~~~~~~
|
|
|
|
The function returns one of the following values:
|
|
|
|
- If the file is successfully opened, a pointer to a dynamically
|
|
allocated :ref:`PRFileDesc` for the newly opened file. The
|
|
:ref:`PRFileDesc` should be freed by calling :ref:`PR_Close`.
|
|
- If the file was not opened successfully, a ``NULL`` pointer.
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
:ref:`PR_Open` creates a file descriptor (:ref:`PRFileDesc`) for the file with
|
|
the pathname ``name`` and sets the file status flags of the file
|
|
descriptor according to the value of ``flags``. If a new file is created
|
|
as a result of the :ref:`PR_Open` call, its file mode bits are set
|
|
according to the ``mode`` parameter.
|