libssh2\_sftp\_open\_ex\_r(3) libssh2 libssh2\_sftp\_open\_ex\_r(3)

# [NAME](#NAME)

libssh2\_sftp\_open\_ex\_r - open filehandle for file on SFTP.

# [SYNOPSIS](#SYNOPSIS)

```
#include <libssh2.h>
#include <libssh2_sftp.h>
LIBSSH2_SFTP_HANDLE *
libssh2_sftp_open_ex_r(LIBSSH2_SFTP *sftp, const char *filename,


                       size_t filename_len,


                       unsigned long flags,


                       long mode,


                       int open_type,


                       LIBSSH2_SFTP_ATTRIBUTES *attrs);
```

# [DESCRIPTION](#DESCRIPTION)

*sftp* - SFTP instance as returned by [*libssh2\_sftp\_init(3)*](/man/os/libssh2/libssh2_sftp_init.3)

*filename* - Remote file/directory resource to open

*filename\_len* - Length of filename

*flags* - Any reasonable combination of the LIBSSH2\_FXF\_* constants:

[LIBSSH2\_FXF\_READ](#LIBSSH2_FXF_READ)

Open the file for reading.

[LIBSSH2\_FXF\_WRITE](#LIBSSH2_FXF_WRITE)

Open the file for writing. If both this and LIBSSH2\_FXF\_READ are specified, the file is opened for both reading and writing.

[LIBSSH2\_FXF\_APPEND](#LIBSSH2_FXF_APPEND)

Force all writes to append data at the end of the file.

[LIBSSH2\_FXF\_CREAT,](#LIBSSH2_FXF_CREAT,)

If this flag is specified, then a new file will be created if one does not already exist (if LIBSSH2\_FXF\_TRUNC is specified, the new file will be truncated to zero length if it previously exists)

[LIBSSH2\_FXF\_TRUNC](#LIBSSH2_FXF_TRUNC)

Forces an existing file with the same name to be truncated to zero length when creating a file by specifying LIBSSH2\_FXF\_CREAT. LIBSSH2\_FXF\_CREAT MUST also be specified if this flag is used.

[LIBSSH2\_FXF\_EXCL](#LIBSSH2_FXF_EXCL)

Causes the request to fail if the named file already exists. LIBSSH2\_FXF\_CREAT MUST also be specified if this flag is used.

*mode* - POSIX file permissions to assign if the file is being newly created. See the LIBSSH2\_SFTP\_S\_* convenience defines in &lt;libssh2\_sftp.h&gt;

*open\_type* - Either of LIBSSH2\_SFTP\_OPENFILE (to open a file) or LIBSSH2\_SFTP\_OPENDIR (to open a directory).

*attrs* - Pointer to LIBSSH2\_SFTP\_ATTRIBUTES struct. See libssh2\_sftp\_fstat\_ex for detailed usage.

# [RETURN VALUE](#RETURN_VALUE)

A pointer to the newly created LIBSSH2\_SFTP\_HANDLE instance or NULL on failure.

# [ERRORS](#ERRORS)

*LIBSSH2\_ERROR\_ALLOC* - An internal memory allocation call failed.

*LIBSSH2\_ERROR\_SOCKET\_SEND* - Unable to send data on socket.

*LIBSSH2\_ERROR\_SOCKET\_TIMEOUT* -

*LIBSSH2\_ERROR\_SFTP\_PROTOCOL* - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server.

*LIBSSH2\_ERROR\_EAGAIN* - Marked for non-blocking I/O but the call would block.

# [AVAILABILITY](#AVAILABILITY)

Added in libssh2 1.11.0

# [SEE ALSO](#SEE_ALSO)

[**libssh2\_sftp\_close\_handle(3)**](/man/os/libssh2/libssh2_sftp_close_handle.3) [**libssh2\_sftp\_fstat\_ex(3)**](/man/os/libssh2/libssh2_sftp_fstat_ex.3)

10 Apr 2023 libssh2

---

Document: libssh2_sftp_open_ex_r(3) from libssh2 1.11.1-r10 (Chainguard OS)
Source: https://github.com/libssh2/libssh2.git
