FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
ftp.c File Reference
#include <string.h>
#include "libavutil/avstring.h"
#include "libavutil/internal.h"
#include "libavutil/parseutils.h"
#include "avformat.h"
#include "internal.h"
#include "url.h"
#include "urldecode.h"
#include "libavutil/opt.h"
#include "libavutil/bprint.h"

Go to the source code of this file.

Data Structures

struct  FTPContext
 

Macros

#define CONTROL_BUFFER_SIZE   1024
 
#define DIR_BUFFER_SIZE   4096
 
#define OFFSET(x)   offsetof(FTPContext, x)
 
#define D   AV_OPT_FLAG_DECODING_PARAM
 
#define E   AV_OPT_FLAG_ENCODING_PARAM
 

Enumerations

enum  FTPState {
  UNKNOWN, READY, DOWNLOADING, UPLOADING,
  LISTING_DIR, DISCONNECTED, ENDOFFILE
}
 
enum  FTPListingMethod { UNKNOWN_METHOD, NLST, MLSD }
 

Functions

static int ftp_close (URLContext *h)
 
static int ftp_getc (FTPContext *s)
 
static int ftp_get_line (FTPContext *s, char *line, int line_size)
 
static int ftp_status (FTPContext *s, char **line, const int response_codes[])
 
static int ftp_send_command (FTPContext *s, const char *command, const int response_codes[], char **response)
 
static void ftp_close_data_connection (FTPContext *s)
 
static void ftp_close_both_connections (FTPContext *s)
 
static int ftp_auth (FTPContext *s)
 
static int ftp_passive_mode_epsv (FTPContext *s)
 
static int ftp_passive_mode (FTPContext *s)
 
static int ftp_current_dir (FTPContext *s)
 
static int ftp_file_size (FTPContext *s)
 
static int ftp_retrieve (FTPContext *s)
 
static int ftp_store (FTPContext *s)
 
static int ftp_type (FTPContext *s)
 
static int ftp_restart (FTPContext *s, int64_t pos)
 
static int ftp_set_dir (FTPContext *s)
 
static int ftp_list_mlsd (FTPContext *s)
 
static int ftp_list_nlst (FTPContext *s)
 
static int ftp_list (FTPContext *s)
 
static int ftp_has_feature (FTPContext *s, const char *feature_name)
 
static int ftp_features (FTPContext *s)
 
static int ftp_connect_control_connection (URLContext *h)
 
static int ftp_connect_data_connection (URLContext *h)
 
static int ftp_abort (URLContext *h)
 
static int ftp_connect (URLContext *h, const char *url)
 
static int ftp_open (URLContext *h, const char *url, int flags)
 
static int64_t ftp_seek (URLContext *h, int64_t pos, int whence)
 
static int ftp_read (URLContext *h, unsigned char *buf, int size)
 
static int ftp_write (URLContext *h, const unsigned char *buf, int size)
 
static int ftp_get_file_handle (URLContext *h)
 
static int ftp_shutdown (URLContext *h, int flags)
 
static int ftp_open_dir (URLContext *h)
 
static int64_t ftp_parse_date (const char *date)
 
static int ftp_parse_entry_nlst (char *line, AVIODirEntry *next)
 
static int ftp_parse_entry_mlsd (char *mlsd, AVIODirEntry *next)
 
static int ftp_parse_entry (URLContext *h, char *line, AVIODirEntry *next)
 
static int ftp_read_dir (URLContext *h, AVIODirEntry **next)
 
static int ftp_close_dir (URLContext *h)
 
static int ftp_delete (URLContext *h)
 
static int ftp_move (URLContext *h_src, URLContext *h_dst)
 

Variables

static const AVOption options []
 
static const AVClass ftp_context_class
 
const URLProtocol ff_ftp_protocol
 

Macro Definition Documentation

#define CONTROL_BUFFER_SIZE   1024
#define DIR_BUFFER_SIZE   4096

Definition at line 34 of file ftp.c.

Referenced by ftp_open_dir(), and ftp_read_dir().

#define OFFSET (   x)    offsetof(FTPContext, x)

Definition at line 80 of file ftp.c.

Definition at line 81 of file ftp.c.

Definition at line 82 of file ftp.c.

Enumeration Type Documentation

enum FTPState
Enumerator
UNKNOWN 
READY 
DOWNLOADING 
UPLOADING 
LISTING_DIR 
DISCONNECTED 
ENDOFFILE 

Definition at line 36 of file ftp.c.

Enumerator
UNKNOWN_METHOD 
NLST 
MLSD 

Definition at line 46 of file ftp.c.

Function Documentation

static int ftp_close ( URLContext h)
static

Definition at line 882 of file ftp.c.

Referenced by ftp_delete(), ftp_move(), and ftp_open().

static int ftp_getc ( FTPContext s)
static

Definition at line 101 of file ftp.c.

Referenced by ftp_get_line().

static int ftp_get_line ( FTPContext s,
char *  line,
int  line_size 
)
static

Definition at line 118 of file ftp.c.

Referenced by ftp_status().

static int ftp_status ( FTPContext s,
char **  line,
const int  response_codes[] 
)
static

Definition at line 146 of file ftp.c.

Referenced by ftp_abort(), ftp_connect_control_connection(), ftp_read(), and ftp_send_command().

static int ftp_send_command ( FTPContext s,
const char *  command,
const int  response_codes[],
char **  response 
)
static
static void ftp_close_data_connection ( FTPContext s)
static

Definition at line 232 of file ftp.c.

Referenced by ftp_abort(), ftp_close_both_connections(), and ftp_read().

static void ftp_close_both_connections ( FTPContext s)
static

Definition at line 238 of file ftp.c.

Referenced by ftp_abort(), and ftp_close().

static int ftp_auth ( FTPContext s)
static

Definition at line 244 of file ftp.c.

Referenced by ftp_connect_control_connection().

static int ftp_passive_mode_epsv ( FTPContext s)
static

Definition at line 270 of file ftp.c.

Referenced by ftp_connect_data_connection().

static int ftp_passive_mode ( FTPContext s)
static

Definition at line 312 of file ftp.c.

Referenced by ftp_connect_data_connection().

static int ftp_current_dir ( FTPContext s)
static

Definition at line 358 of file ftp.c.

Referenced by ftp_connect().

static int ftp_file_size ( FTPContext s)
static

Definition at line 396 of file ftp.c.

Referenced by ftp_open().

static int ftp_retrieve ( FTPContext s)
static

Definition at line 415 of file ftp.c.

Referenced by ftp_read().

static int ftp_store ( FTPContext s)
static

Definition at line 431 of file ftp.c.

Referenced by ftp_write().

static int ftp_type ( FTPContext s)
static

Definition at line 447 of file ftp.c.

Referenced by ftp_connect_control_connection().

static int ftp_restart ( FTPContext s,
int64_t  pos 
)
static

Definition at line 458 of file ftp.c.

Referenced by ftp_connect_data_connection(), and ftp_open().

static int ftp_set_dir ( FTPContext s)
static

Definition at line 470 of file ftp.c.

Referenced by ftp_open_dir().

static int ftp_list_mlsd ( FTPContext s)
static

Definition at line 481 of file ftp.c.

Referenced by ftp_list().

static int ftp_list_nlst ( FTPContext s)
static

Definition at line 492 of file ftp.c.

Referenced by ftp_list().

static int ftp_list ( FTPContext s)
static

Definition at line 503 of file ftp.c.

Referenced by ftp_open_dir().

static int ftp_has_feature ( FTPContext s,
const char *  feature_name 
)
static

Definition at line 514 of file ftp.c.

Referenced by ftp_features().

static int ftp_features ( FTPContext s)
static

Definition at line 522 of file ftp.c.

Referenced by ftp_connect_control_connection().

static int ftp_connect_control_connection ( URLContext h)
static

Definition at line 543 of file ftp.c.

Referenced by ftp_abort(), and ftp_connect().

static int ftp_connect_data_connection ( URLContext h)
static

Definition at line 592 of file ftp.c.

Referenced by ftp_open_dir(), ftp_read(), and ftp_write().

static int ftp_abort ( URLContext h)
static

Definition at line 626 of file ftp.c.

Referenced by ftp_read(), and ftp_seek().

static int ftp_connect ( URLContext h,
const char *  url 
)
static

Definition at line 664 of file ftp.c.

Referenced by ftp_delete(), ftp_move(), ftp_open(), and ftp_open_dir().

static int ftp_open ( URLContext h,
const char *  url,
int  flags 
)
static

Definition at line 730 of file ftp.c.

static int64_t ftp_seek ( URLContext h,
int64_t  pos,
int  whence 
)
static

Definition at line 756 of file ftp.c.

static int ftp_read ( URLContext h,
unsigned char *  buf,
int  size 
)
static

Definition at line 798 of file ftp.c.

static int ftp_write ( URLContext h,
const unsigned char *  buf,
int  size 
)
static

Definition at line 853 of file ftp.c.

static int ftp_get_file_handle ( URLContext h)
static

Definition at line 898 of file ftp.c.

static int ftp_shutdown ( URLContext h,
int  flags 
)
static

Definition at line 910 of file ftp.c.

static int ftp_open_dir ( URLContext h)
static

Definition at line 922 of file ftp.c.

static int64_t ftp_parse_date ( const char *  date)
static

Definition at line 949 of file ftp.c.

Referenced by ftp_parse_entry_mlsd().

static int ftp_parse_entry_nlst ( char *  line,
AVIODirEntry next 
)
static

Definition at line 957 of file ftp.c.

Referenced by ftp_parse_entry().

static int ftp_parse_entry_mlsd ( char *  mlsd,
AVIODirEntry next 
)
static

Definition at line 963 of file ftp.c.

Referenced by ftp_parse_entry().

static int ftp_parse_entry ( URLContext h,
char *  line,
AVIODirEntry next 
)
static
Returns
0 on success, negative on error, positive on entry to discard.

Definition at line 1001 of file ftp.c.

Referenced by ftp_read_dir().

static int ftp_read_dir ( URLContext h,
AVIODirEntry **  next 
)
static

Definition at line 1016 of file ftp.c.

static int ftp_close_dir ( URLContext h)
static

Definition at line 1063 of file ftp.c.

static int ftp_delete ( URLContext h)
static

Definition at line 1072 of file ftp.c.

static int ftp_move ( URLContext h_src,
URLContext h_dst 
)
static

Definition at line 1100 of file ftp.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{"timeout", "set timeout of socket I/O operations", OFFSET(rw_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, D|E },
{"ftp-write-seekable", "control seekability of connection during encoding", OFFSET(write_seekable), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, E },
{"ftp-anonymous-password", "password for anonymous login. E-mail address should be used.", OFFSET(anonymous_password), AV_OPT_TYPE_STRING, { 0 }, 0, 0, D|E },
{"ftp-user", "user for FTP login. Overridden by whatever is in the URL.", OFFSET(option_user), AV_OPT_TYPE_STRING, { 0 }, 0, 0, D|E },
{"ftp-password", "password for FTP login. Overridden by whatever is in the URL.", OFFSET(option_password), AV_OPT_TYPE_STRING, { 0 }, 0, 0, D|E },
{NULL}
}
#define NULL
Definition: coverity.c:32
#define E
Definition: ftp.c:82
#define OFFSET(x)
Definition: ftp.c:80
#define D
Definition: ftp.c:81

Definition at line 83 of file ftp.c.

const AVClass ftp_context_class
static
Initial value:
= {
.class_name = "ftp",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:235
static const AVOption options[]
Definition: ftp.c:83

Definition at line 92 of file ftp.c.

const URLProtocol ff_ftp_protocol
Initial value:
= {
.name = "ftp",
.url_open = ftp_open,
.url_read = ftp_read,
.url_write = ftp_write,
.url_seek = ftp_seek,
.url_close = ftp_close,
.url_get_file_handle = ftp_get_file_handle,
.url_shutdown = ftp_shutdown,
.priv_data_size = sizeof(FTPContext),
.priv_data_class = &ftp_context_class,
.url_open_dir = ftp_open_dir,
.url_read_dir = ftp_read_dir,
.url_close_dir = ftp_close_dir,
.url_delete = ftp_delete,
.url_move = ftp_move,
.default_whitelist = "tcp",
}
#define URL_PROTOCOL_FLAG_NETWORK
Definition: url.h:34
static int ftp_move(URLContext *h_src, URLContext *h_dst)
Definition: ftp.c:1100
static int ftp_open(URLContext *h, const char *url, int flags)
Definition: ftp.c:730
static int ftp_read_dir(URLContext *h, AVIODirEntry **next)
Definition: ftp.c:1016
static int ftp_shutdown(URLContext *h, int flags)
Definition: ftp.c:910
static int ftp_delete(URLContext *h)
Definition: ftp.c:1072
static int ftp_read(URLContext *h, unsigned char *buf, int size)
Definition: ftp.c:798
static int ftp_close(URLContext *h)
Definition: ftp.c:882
static int64_t ftp_seek(URLContext *h, int64_t pos, int whence)
Definition: ftp.c:756
static int ftp_close_dir(URLContext *h)
Definition: ftp.c:1063
static int ftp_get_file_handle(URLContext *h)
Definition: ftp.c:898
#define flags(name, subs,...)
Definition: cbs_av1.c:564
static int ftp_write(URLContext *h, const unsigned char *buf, int size)
Definition: ftp.c:853
static int ftp_open_dir(URLContext *h)
Definition: ftp.c:922
static const AVClass ftp_context_class
Definition: ftp.c:92
Definition: ftp.c:52

Definition at line 1131 of file ftp.c.