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

# [NAME](#NAME)

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

# [SYNOPSIS](#SYNOPSIS)

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


                     unsigned int filename_len,


                     unsigned long flags,


                     long mode,


                     int open_type);
```

# [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).

# [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.

# [SEE ALSO](#SEE_ALSO)

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

1 Jun 2007 libssh2 0.15

---

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