| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later | 
 | .. c:namespace:: DTV.ca | 
 |  | 
 | .. _ca_fopen: | 
 |  | 
 | ==================== | 
 | Digital TV CA open() | 
 | ==================== | 
 |  | 
 | Name | 
 | ---- | 
 |  | 
 | Digital TV CA open() | 
 |  | 
 | Synopsis | 
 | -------- | 
 |  | 
 | .. c:function:: int open(const char *name, int flags) | 
 |  | 
 | Arguments | 
 | --------- | 
 |  | 
 | ``name`` | 
 |   Name of specific Digital TV CA device. | 
 |  | 
 | ``flags`` | 
 |   A bit-wise OR of the following flags: | 
 |  | 
 | .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| | 
 |  | 
 | .. flat-table:: | 
 |     :header-rows:  0 | 
 |     :stub-columns: 0 | 
 |     :widths: 1 16 | 
 |  | 
 |     -  - ``O_RDONLY`` | 
 |        - read-only access | 
 |  | 
 |     -  - ``O_RDWR`` | 
 |        - read/write access | 
 |  | 
 |     -  - ``O_NONBLOCK`` | 
 |        - open in non-blocking mode | 
 |          (blocking mode is the default) | 
 |  | 
 | Description | 
 | ----------- | 
 |  | 
 | This system call opens a named ca device (e.g. ``/dev/dvb/adapter?/ca?``) | 
 | for subsequent use. | 
 |  | 
 | When an ``open()`` call has succeeded, the device will be ready for use. The | 
 | significance of blocking or non-blocking mode is described in the | 
 | documentation for functions where there is a difference. It does not | 
 | affect the semantics of the ``open()`` call itself. A device opened in | 
 | blocking mode can later be put into non-blocking mode (and vice versa) | 
 | using the ``F_SETFL`` command of the ``fcntl`` system call. This is a | 
 | standard system call, documented in the Linux manual page for fcntl. | 
 | Only one user can open the CA Device in ``O_RDWR`` mode. All other | 
 | attempts to open the device in this mode will fail, and an error code | 
 | will be returned. | 
 |  | 
 | Return Value | 
 | ------------ | 
 |  | 
 | On success 0 is returned. | 
 |  | 
 | On error -1 is returned, and the ``errno`` variable is set | 
 | appropriately. | 
 |  | 
 | Generic error codes are described at the | 
 | :ref:`Generic Error Codes <gen-errors>` chapter. |