Ftp#
Enums
-
enum sfFtpTransferMode#
Enumeration of transfer modes.
Values:
-
enumerator sfFtpBinary#
Binary mode (file is transfered as a sequence of bytes)
-
enumerator sfFtpAscii#
Text mode using ASCII encoding.
-
enumerator sfFtpEbcdic#
Text mode using EBCDIC encoding.
-
enumerator sfFtpBinary#
-
enum sfFtpStatus#
Status codes possibly returned by a FTP response.
Values:
-
enumerator sfFtpRestartMarkerReply#
Restart marker reply.
-
enumerator sfFtpServiceReadySoon#
Service ready in N minutes.
-
enumerator sfFtpDataConnectionAlreadyOpened#
Data connection already opened, transfer starting.
-
enumerator sfFtpOpeningDataConnection#
File status ok, about to open data connection.
-
enumerator sfFtpOk#
Command ok.
-
enumerator sfFtpPointlessCommand#
Command not implemented.
-
enumerator sfFtpSystemStatus#
System status, or system help reply.
-
enumerator sfFtpDirectoryStatus#
Directory status.
-
enumerator sfFtpFileStatus#
File status.
-
enumerator sfFtpHelpMessage#
Help message.
-
enumerator sfFtpSystemType#
NAME system type, where NAME is an official system name from the list in the Assigned Numbers document.
-
enumerator sfFtpServiceReady#
Service ready for new user.
-
enumerator sfFtpClosingConnection#
Service closing control connection.
-
enumerator sfFtpDataConnectionOpened#
Data connection open, no transfer in progress.
-
enumerator sfFtpClosingDataConnection#
Closing data connection, requested file action successful.
-
enumerator sfFtpEnteringPassiveMode#
Entering passive mode.
-
enumerator sfFtpLoggedIn#
User logged in, proceed. Logged out if appropriate.
-
enumerator sfFtpFileActionOk#
Requested file action ok.
-
enumerator sfFtpDirectoryOk#
PATHNAME created.
-
enumerator sfFtpNeedPassword#
User name ok, need password.
-
enumerator sfFtpNeedAccountToLogIn#
Need account for login.
-
enumerator sfFtpNeedInformation#
Requested file action pending further information.
Service not available, closing control connection.
Can’t open data connection.
-
enumerator sfFtpTransferAborted#
Connection closed, transfer aborted.
-
enumerator sfFtpFileActionAborted#
Requested file action not taken.
-
enumerator sfFtpLocalError#
Requested action aborted, local error in processing.
-
enumerator sfFtpInsufficientStorageSpace#
Requested action not taken; insufficient storage space in system, file unavailable.
-
enumerator sfFtpCommandUnknown#
Syntax error, command unrecognized.
-
enumerator sfFtpParametersUnknown#
Syntax error in parameters or arguments.
-
enumerator sfFtpCommandNotImplemented#
Command not implemented.
-
enumerator sfFtpBadCommandSequence#
Bad sequence of commands.
-
enumerator sfFtpParameterNotImplemented#
Command not implemented for that parameter.
-
enumerator sfFtpNotLoggedIn#
Not logged in.
-
enumerator sfFtpNeedAccountToStore#
Need account for storing files.
Requested action not taken, file unavailable.
-
enumerator sfFtpPageTypeUnknown#
Requested action aborted, page type unknown.
-
enumerator sfFtpNotEnoughMemory#
Requested file action aborted, exceeded storage allocation.
-
enumerator sfFtpFilenameNotAllowed#
Requested action not taken, file name not allowed.
-
enumerator sfFtpInvalidResponse#
Response is not a valid FTP one.
-
enumerator sfFtpConnectionFailed#
Connection with server failed.
-
enumerator sfFtpConnectionClosed#
Connection with server closed.
-
enumerator sfFtpInvalidFile#
Invalid file to upload / download.
-
enumerator sfFtpRestartMarkerReply#
Functions
-
void sfFtpListingResponse_destroy(sfFtpListingResponse *ftpListingResponse)#
Destroy a FTP listing response.
- Parameters:
ftpListingResponse – Ftp listing response to destroy
-
sfBool sfFtpListingResponse_isOk(const sfFtpListingResponse *ftpListingResponse)#
Check if a FTP listing response status code means a success.
This function is defined for convenience, it is equivalent to testing if the status code is < 400.
- Parameters:
ftpListingResponse – Ftp listing response
- Returns:
sfTrue if the status is a success, sfFalse if it is a failure
-
sfFtpStatus sfFtpListingResponse_getStatus(const sfFtpListingResponse *ftpListingResponse)#
Get the status code of a FTP listing response.
- Parameters:
ftpListingResponse – Ftp listing response
- Returns:
Status code
-
const char *sfFtpListingResponse_getMessage(const sfFtpListingResponse *ftpListingResponse)#
Get the full message contained in a FTP listing response.
- Parameters:
ftpListingResponse – Ftp listing response
- Returns:
The response message
-
size_t sfFtpListingResponse_getCount(const sfFtpListingResponse *ftpListingResponse)#
Return the number of directory/file names contained in a FTP listing response.
- Parameters:
ftpListingResponse – Ftp listing response
- Returns:
Total number of names available
-
const char *sfFtpListingResponse_getName(const sfFtpListingResponse *ftpListingResponse, size_t index)#
Return a directory/file name contained in a FTP listing response.
- Parameters:
ftpListingResponse – Ftp listing response
index – Index of the name to get (in range [0 .. getCount])
- Returns:
The requested name
-
void sfFtpDirectoryResponse_destroy(sfFtpDirectoryResponse *ftpDirectoryResponse)#
Destroy a FTP directory response.
- Parameters:
ftpDirectoryResponse – Ftp directory response to destroy
-
sfBool sfFtpDirectoryResponse_isOk(const sfFtpDirectoryResponse *ftpDirectoryResponse)#
Check if a FTP directory response status code means a success.
This function is defined for convenience, it is equivalent to testing if the status code is < 400.
- Parameters:
ftpDirectoryResponse – Ftp directory response
- Returns:
sfTrue if the status is a success, sfFalse if it is a failure
-
sfFtpStatus sfFtpDirectoryResponse_getStatus(const sfFtpDirectoryResponse *ftpDirectoryResponse)#
Get the status code of a FTP directory response.
- Parameters:
ftpDirectoryResponse – Ftp directory response
- Returns:
Status code
-
const char *sfFtpDirectoryResponse_getMessage(const sfFtpDirectoryResponse *ftpDirectoryResponse)#
Get the full message contained in a FTP directory response.
- Parameters:
ftpDirectoryResponse – Ftp directory response
- Returns:
The response message
-
const char *sfFtpDirectoryResponse_getDirectory(const sfFtpDirectoryResponse *ftpDirectoryResponse)#
Get the directory returned in a FTP directory response.
- Parameters:
ftpDirectoryResponse – Ftp directory response
- Returns:
Directory name
-
void sfFtpResponse_destroy(sfFtpResponse *ftpResponse)#
Destroy a FTP response.
- Parameters:
ftpResponse – Ftp response to destroy
-
sfBool sfFtpResponse_isOk(const sfFtpResponse *ftpResponse)#
Check if a FTP response status code means a success.
This function is defined for convenience, it is equivalent to testing if the status code is < 400.
- Parameters:
ftpResponse – Ftp response object
- Returns:
sfTrue if the status is a success, sfFalse if it is a failure
-
sfFtpStatus sfFtpResponse_getStatus(const sfFtpResponse *ftpResponse)#
Get the status code of a FTP response.
- Parameters:
ftpResponse – Ftp response object
- Returns:
Status code
-
const char *sfFtpResponse_getMessage(const sfFtpResponse *ftpResponse)#
Get the full message contained in a FTP response.
- Parameters:
ftpResponse – Ftp response object
- Returns:
The response message
-
sfFtpResponse *sfFtp_connect(sfFtp *ftp, sfIpAddress server, unsigned short port, sfTime timeout)#
Connect to the specified FTP server.
The port should be 21, which is the standard port used by the FTP protocol. You shouldn’t use a different value, unless you really know what you do. This function tries to connect to the server so it may take a while to complete, especially if the server is not reachable. To avoid blocking your application for too long, you can use a timeout. Using 0 means that the system timeout will be used (which is usually pretty long).
- Parameters:
ftp – Ftp object
server – Name or address of the FTP server to connect to
port – Port used for the connection
timeout – Maximum time to wait
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_loginAnonymous(sfFtp *ftp)#
Log in using an anonymous account.
Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.
- Parameters:
ftp – Ftp object
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_login(sfFtp *ftp, const char *name, const char *password)#
Log in using a username and a password.
Logging in is mandatory after connecting to the server. Users that are not logged in cannot perform any operation.
- Parameters:
ftp – Ftp object
name – User name
password – Password
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_disconnect(sfFtp *ftp)#
Close the connection with the server.
- Parameters:
ftp – Ftp object
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_keepAlive(sfFtp *ftp)#
Send a null command to keep the connection alive.
This command is useful because the server may close the connection automatically if no command is sent.
- Parameters:
ftp – Ftp object
- Returns:
Server response to the request
-
sfFtpDirectoryResponse *sfFtp_getWorkingDirectory(sfFtp *ftp)#
Get the current working directory.
The working directory is the root path for subsequent operations involving directories and/or filenames.
- Parameters:
ftp – Ftp object
- Returns:
Server response to the request
-
sfFtpListingResponse *sfFtp_getDirectoryListing(sfFtp *ftp, const char *directory)#
Get the contents of the given directory.
This function retrieves the sub-directories and files contained in the given directory. It is not recursive. The directory parameter is relative to the current working directory.
- Parameters:
ftp – Ftp object
directory – Directory to list
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_changeDirectory(sfFtp *ftp, const char *directory)#
Change the current working directory.
The new directory must be relative to the current one.
- Parameters:
ftp – Ftp object
directory – New working directory
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_parentDirectory(sfFtp *ftp)#
Go to the parent directory of the current one.
- Parameters:
ftp – Ftp object
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_createDirectory(sfFtp *ftp, const char *name)#
Create a new directory.
The new directory is created as a child of the current working directory.
- Parameters:
ftp – Ftp object
name – Name of the directory to create
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_deleteDirectory(sfFtp *ftp, const char *name)#
Remove an existing directory.
The directory to remove must be relative to the current working directory. Use this function with caution, the directory will be removed permanently!
- Parameters:
ftp – Ftp object
name – Name of the directory to remove
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_renameFile(sfFtp *ftp, const char *file, const char *newName)#
Rename an existing file.
The filenames must be relative to the current working directory.
- Parameters:
ftp – Ftp object
file – File to rename
newName – New name of the file
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_deleteFile(sfFtp *ftp, const char *name)#
Remove an existing file.
The file name must be relative to the current working directory. Use this function with caution, the file will be removed permanently!
- Parameters:
ftp – Ftp object
name – File to remove
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_download(sfFtp *ftp, const char *remoteFile, const char *localPath, sfFtpTransferMode mode)#
Download a file from a FTP server.
The filename of the distant file is relative to the current working directory of the server, and the local destination path is relative to the current directory of your application.
- Parameters:
ftp – Ftp object
remoteFile – Filename of the distant file to download
localPath – Where to put to file on the local computer
mode – Transfer mode
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_upload(sfFtp *ftp, const char *localFile, const char *remotePath, sfFtpTransferMode mode, sfBool append)#
Upload a file to a FTP server.
The name of the local file is relative to the current working directory of your application, and the remote path is relative to the current directory of the FTP server.
- Parameters:
ftp – Ftp object
localFile – Path of the local file to upload
remotePath – Where to put to file on the server
mode – Transfer mode
append – Pass sfTrue to append to or sfFalse to overwrite the remote file if it already exists
- Returns:
Server response to the request
-
sfFtpResponse *sfFtp_sendCommand(sfFtp *ftp, const char *command, const char *parameter)#
Send a command to the FTP server.
While the most often used commands are provided as specific functions, this function can be used to send any FTP command to the server. If the command requires one or more parameters, they can be specified in parameter. Otherwise you should pass NULL. If the server returns information, you can extract it from the response using sfResponse_getMessage().
- Parameters:
ftp – Ftp object
command – Command to send
parameter – Command parameter
- Returns:
Server response to the request