FFmpeg
Loading...
Searching...
No Matches
ftp.c File Reference
#include <string.h>
#include <time.h>
#include "libavutil/avstring.h"
#include "libavutil/internal.h"
#include "libavutil/mem.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)
 
#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 is_bad_string (const unsigned char *s)
 
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

◆ CONTROL_BUFFER_SIZE

#define CONTROL_BUFFER_SIZE   1024

◆ DIR_BUFFER_SIZE

#define DIR_BUFFER_SIZE   4096

Definition at line 36 of file ftp.c.

Referenced by ftp_open_dir(), and ftp_read_dir().

◆ OFFSET

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

Definition at line 82 of file ftp.c.

◆ D

Definition at line 83 of file ftp.c.

◆ E

Definition at line 84 of file ftp.c.

Enumeration Type Documentation

◆ FTPState

enum FTPState
Enumerator
UNKNOWN 
READY 
DOWNLOADING 
UPLOADING 
LISTING_DIR 
DISCONNECTED 
ENDOFFILE 

Definition at line 38 of file ftp.c.

◆ FTPListingMethod

Enumerator
UNKNOWN_METHOD 
NLST 
MLSD 

Definition at line 48 of file ftp.c.

Function Documentation

◆ ftp_close()

static int ftp_close ( URLContext * h)
static

Definition at line 919 of file ftp.c.

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

◆ is_bad_string()

static int is_bad_string ( const unsigned char * s)
static

Definition at line 103 of file ftp.c.

Referenced by ftp_auth(), ftp_connect(), and ftp_move().

◆ ftp_getc()

static int ftp_getc ( FTPContext * s)
static

Definition at line 113 of file ftp.c.

Referenced by ftp_get_line().

◆ ftp_get_line()

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

Definition at line 130 of file ftp.c.

Referenced by ftp_status().

◆ ftp_status()

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

Definition at line 158 of file ftp.c.

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

◆ ftp_send_command()

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

◆ ftp_close_data_connection()

static void ftp_close_data_connection ( FTPContext * s)
static

Definition at line 244 of file ftp.c.

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

◆ ftp_close_both_connections()

static void ftp_close_both_connections ( FTPContext * s)
static

Definition at line 250 of file ftp.c.

Referenced by ftp_abort(), and ftp_close().

◆ ftp_auth()

static int ftp_auth ( FTPContext * s)
static

Definition at line 256 of file ftp.c.

Referenced by ftp_connect_control_connection().

◆ ftp_passive_mode_epsv()

static int ftp_passive_mode_epsv ( FTPContext * s)
static

Definition at line 288 of file ftp.c.

Referenced by ftp_connect_data_connection().

◆ ftp_passive_mode()

static int ftp_passive_mode ( FTPContext * s)
static

Definition at line 330 of file ftp.c.

Referenced by ftp_connect_data_connection().

◆ ftp_current_dir()

static int ftp_current_dir ( FTPContext * s)
static

Definition at line 376 of file ftp.c.

Referenced by ftp_connect().

◆ ftp_file_size()

static int ftp_file_size ( FTPContext * s)
static

Definition at line 414 of file ftp.c.

Referenced by ftp_open().

◆ ftp_retrieve()

static int ftp_retrieve ( FTPContext * s)
static

Definition at line 437 of file ftp.c.

Referenced by ftp_read().

◆ ftp_store()

static int ftp_store ( FTPContext * s)
static

Definition at line 456 of file ftp.c.

Referenced by ftp_write().

◆ ftp_type()

static int ftp_type ( FTPContext * s)
static

Definition at line 475 of file ftp.c.

Referenced by ftp_connect_control_connection().

◆ ftp_restart()

static int ftp_restart ( FTPContext * s,
int64_t pos )
static

Definition at line 486 of file ftp.c.

Referenced by ftp_connect_data_connection(), and ftp_open().

◆ ftp_set_dir()

static int ftp_set_dir ( FTPContext * s)
static

Definition at line 498 of file ftp.c.

Referenced by ftp_open_dir().

◆ ftp_list_mlsd()

static int ftp_list_mlsd ( FTPContext * s)
static

Definition at line 513 of file ftp.c.

Referenced by ftp_list().

◆ ftp_list_nlst()

static int ftp_list_nlst ( FTPContext * s)
static

Definition at line 524 of file ftp.c.

Referenced by ftp_list().

◆ ftp_list()

static int ftp_list ( FTPContext * s)
static

Definition at line 535 of file ftp.c.

Referenced by ftp_open_dir().

◆ ftp_has_feature()

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

Definition at line 546 of file ftp.c.

Referenced by ftp_features().

◆ ftp_features()

static int ftp_features ( FTPContext * s)
static

Definition at line 554 of file ftp.c.

Referenced by ftp_connect_control_connection().

◆ ftp_connect_control_connection()

static int ftp_connect_control_connection ( URLContext * h)
static

Definition at line 575 of file ftp.c.

Referenced by ftp_abort(), and ftp_connect().

◆ ftp_connect_data_connection()

static int ftp_connect_data_connection ( URLContext * h)
static

Definition at line 624 of file ftp.c.

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

◆ ftp_abort()

static int ftp_abort ( URLContext * h)
static

Definition at line 658 of file ftp.c.

Referenced by ftp_read(), and ftp_seek().

◆ ftp_connect()

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

Definition at line 696 of file ftp.c.

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

◆ ftp_open()

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

Definition at line 767 of file ftp.c.

◆ ftp_seek()

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

Definition at line 793 of file ftp.c.

◆ ftp_read()

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

Definition at line 835 of file ftp.c.

◆ ftp_write()

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

Definition at line 890 of file ftp.c.

◆ ftp_get_file_handle()

static int ftp_get_file_handle ( URLContext * h)
static

Definition at line 935 of file ftp.c.

◆ ftp_shutdown()

static int ftp_shutdown ( URLContext * h,
int flags )
static

Definition at line 947 of file ftp.c.

◆ ftp_open_dir()

static int ftp_open_dir ( URLContext * h)
static

Definition at line 959 of file ftp.c.

◆ ftp_parse_date()

static int64_t ftp_parse_date ( const char * date)
static

Definition at line 986 of file ftp.c.

Referenced by ftp_parse_entry_mlsd().

◆ ftp_parse_entry_nlst()

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

Definition at line 994 of file ftp.c.

Referenced by ftp_parse_entry().

◆ ftp_parse_entry_mlsd()

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

Definition at line 1000 of file ftp.c.

Referenced by ftp_parse_entry().

◆ 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 1040 of file ftp.c.

Referenced by ftp_read_dir().

◆ ftp_read_dir()

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

Definition at line 1055 of file ftp.c.

◆ ftp_close_dir()

static int ftp_close_dir ( URLContext * h)
static

Definition at line 1102 of file ftp.c.

◆ ftp_delete()

static int ftp_delete ( URLContext * h)
static

Definition at line 1111 of file ftp.c.

◆ ftp_move()

static int ftp_move ( URLContext * h_src,
URLContext * h_dst )
static

Definition at line 1149 of file ftp.c.

Variable Documentation

◆ options

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 E
Definition avdct.c:34
#define D
Definition avdct.c:35
#define NULL
Definition coverity.c:32
#define OFFSET(x)
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition opt.h:275

Definition at line 85 of file ftp.c.

◆ ftp_context_class

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

Definition at line 94 of file ftp.c.

◆ ff_ftp_protocol

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 flags(name, subs,...)
Definition cbs_h264.c:74
static const AVClass ftp_context_class
Definition ftp.c:94
static int ftp_shutdown(URLContext *h, int flags)
Definition ftp.c:947
static int ftp_read_dir(URLContext *h, AVIODirEntry **next)
Definition ftp.c:1055
static int ftp_close(URLContext *h)
Definition ftp.c:919
static int ftp_get_file_handle(URLContext *h)
Definition ftp.c:935
static int ftp_read(URLContext *h, unsigned char *buf, int size)
Definition ftp.c:835
static int ftp_delete(URLContext *h)
Definition ftp.c:1111
static int ftp_open(URLContext *h, const char *url, int flags)
Definition ftp.c:767
static int ftp_write(URLContext *h, const unsigned char *buf, int size)
Definition ftp.c:890
static int64_t ftp_seek(URLContext *h, int64_t pos, int whence)
Definition ftp.c:793
static int ftp_close_dir(URLContext *h)
Definition ftp.c:1102
static int ftp_move(URLContext *h_src, URLContext *h_dst)
Definition ftp.c:1149
static int ftp_open_dir(URLContext *h)
Definition ftp.c:959
#define URL_PROTOCOL_FLAG_NETWORK
Definition url.h:33

Definition at line 1194 of file ftp.c.