DragonFly On-Line Manual Pages

Search: Section:  


ftp_open(3)                     C Library Calls                    ftp_open(3)

NAME

ftp_open - open a file on an FTP server

SYNOPSIS

#include <libfget.h> int ftp_open(FTPFILE **ftpfile, FTP *ftp, char *file, int mode);

VERSION

This man page documents version 1.3 of libfget.

DESCRIPTION

The ftp_open() function opens the file file on the FTP server associated with ftp. It creates an FTPFILE handle and sets ftpfile to point to the newly created handle. The mode argument must be one of the following values: O_RDONLY The file is opened in read-only mode. O_WRONLY The file is opened in write-only mode.

RETURN VALUE

The ftp_open() function returns 0 on success, or -1 on error (and set errno).

ERRORS

The ftp_open() function fails if: ECONNRESET The server shut down the connection. The caller is then responsible for calling ftp_quit() with the FTP_QUIT_FAST flag set. ETIMEDOUT The operation timed out. (The timeout interval can be set via the FTP_OPT_IO_TIMEOUT option; see the ftp_set_options(3) man page for details.) EINVAL Unexpected response code received from server. EAGAIN An attempt was made to send a request to the server while the data connection is open. ENOSYS The mode argument was set to an unsupported value. ETXTBSY File busy. EAGAIN The data connection is already in use (see NOTES below). EAGAIN Temporary server error. ENOSPC Server has insufficient space to complete the request. EACCES User does not have permission to perform the requested operation. It may also fail for any of the errors specified for the underlying poll(2), read(2), write(2), socket(2), connect(2), fcntl(2) (using F_GETFL and F_SETFL), or calloc(3) system and library calls.

NOTES

The ftp_open() function does not support O_RDWR, since the FTP protocol does not provide a mechanism for opening a file for both reading and writing. Because the FTP protocol allows only one data connection to be established at any given time, you cannot open multiple FTPFILE handles at the same time using the same FTP handle. If you have an open FTPFILE handle, you must call ftp_close() on it before you can call ftp_open() to create another one.

EXAMPLE

The following code shows how to display a file from a remote FTP server: FTP *ftp; FTPFILE *ftpfile; char buf[1024]; ssize_t sz; /* ... call ftp_connect(3) and ftp_login(3) ... */ if (ftp_open(&ftpfile, ftp, "/path/to/file", O_RDONLY) == -1) { perror("ftp_open()"); exit(1); } while (1) { sz = ftp_read(ftpfile, buf, sizeof(buf)); if (sz == -1) { perror("ftp_read()"); exit(1); } if (sz == 0) break; /* write buffer to stdout */ write(fileno(stdout), buf, sz); } if (ftp_close(ftpfile) == -1) { perror("ftp_close()"); exit(1); }

SEE ALSO

libfget(3), ftp_read(3), ftp_write(3), ftp_close(3), open(2) Feep Networks January 2004 ftp_open(3)

Search: Section: