mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-25 16:21:13 +00:00
examples/avio_list_dir: add move and delete methods
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
4b0e112442
commit
c84d208c27
@ -54,28 +54,13 @@ static const char *type_string(int type)
|
|||||||
return "<UNKNOWN>";
|
return "<UNKNOWN>";
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
static int list_op(const char *input_dir)
|
||||||
{
|
{
|
||||||
const char *input_dir = NULL;
|
|
||||||
AVIODirEntry *entry = NULL;
|
AVIODirEntry *entry = NULL;
|
||||||
AVIODirContext *ctx = NULL;
|
AVIODirContext *ctx = NULL;
|
||||||
int cnt, ret;
|
int cnt, ret;
|
||||||
char filemode[4], uid_and_gid[20];
|
char filemode[4], uid_and_gid[20];
|
||||||
|
|
||||||
av_log_set_level(AV_LOG_DEBUG);
|
|
||||||
|
|
||||||
if (argc != 2) {
|
|
||||||
fprintf(stderr, "usage: %s input_dir\n"
|
|
||||||
"API example program to show how to list files in directory "
|
|
||||||
"accessed through AVIOContext.\n", argv[0]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
input_dir = argv[1];
|
|
||||||
|
|
||||||
/* register codecs and formats and other lavf/lavc components*/
|
|
||||||
av_register_all();
|
|
||||||
avformat_network_init();
|
|
||||||
|
|
||||||
if ((ret = avio_open_dir(&ctx, input_dir, NULL)) < 0) {
|
if ((ret = avio_open_dir(&ctx, input_dir, NULL)) < 0) {
|
||||||
av_log(NULL, AV_LOG_ERROR, "Cannot open directory: %s.\n", av_err2str(ret));
|
av_log(NULL, AV_LOG_ERROR, "Cannot open directory: %s.\n", av_err2str(ret));
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -114,6 +99,81 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
avio_close_dir(&ctx);
|
avio_close_dir(&ctx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int del_op(const char *url)
|
||||||
|
{
|
||||||
|
int ret = avpriv_io_delete(url);
|
||||||
|
if (ret < 0)
|
||||||
|
av_log(NULL, AV_LOG_ERROR, "Cannot delete '%s': %s.\n", url, av_err2str(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int move_op(const char *src, const char *dst)
|
||||||
|
{
|
||||||
|
int ret = avpriv_io_move(src, dst);
|
||||||
|
if (ret < 0)
|
||||||
|
av_log(NULL, AV_LOG_ERROR, "Cannot move '%s' into '%s': %s.\n", src, dst, av_err2str(ret));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void usage(const char *program_name)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "usage: %s OPERATION entry1 [entry2]\n"
|
||||||
|
"API example program to show how to manipulate resources "
|
||||||
|
"accessed through AVIOContext.\n"
|
||||||
|
"OPERATIONS:\n"
|
||||||
|
"list list content of the directory\n"
|
||||||
|
"move rename content in directory\n"
|
||||||
|
"del delete content in directory\n",
|
||||||
|
program_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
const char *op = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
av_log_set_level(AV_LOG_DEBUG);
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
usage(argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* register codecs and formats and other lavf/lavc components*/
|
||||||
|
av_register_all();
|
||||||
|
avformat_network_init();
|
||||||
|
|
||||||
|
op = argv[1];
|
||||||
|
if (strcmp(op, "list") == 0) {
|
||||||
|
if (argc < 3) {
|
||||||
|
av_log(NULL, AV_LOG_INFO, "Missing argument for list operation.\n");
|
||||||
|
ret = AVERROR(EINVAL);
|
||||||
|
} else {
|
||||||
|
ret = list_op(argv[2]);
|
||||||
|
}
|
||||||
|
} else if (strcmp(op, "del") == 0) {
|
||||||
|
if (argc < 3) {
|
||||||
|
av_log(NULL, AV_LOG_INFO, "Missing argument for del operation.\n");
|
||||||
|
ret = AVERROR(EINVAL);
|
||||||
|
} else {
|
||||||
|
ret = del_op(argv[2]);
|
||||||
|
}
|
||||||
|
} else if (strcmp(op, "move") == 0) {
|
||||||
|
if (argc < 4) {
|
||||||
|
av_log(NULL, AV_LOG_INFO, "Missing argument for move operation.\n");
|
||||||
|
ret = AVERROR(EINVAL);
|
||||||
|
} else {
|
||||||
|
ret = move_op(argv[2], argv[3]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
av_log(NULL, AV_LOG_INFO, "Invalid operation %s\n", op);
|
||||||
|
ret = AVERROR(EINVAL);
|
||||||
|
}
|
||||||
|
|
||||||
avformat_network_deinit();
|
avformat_network_deinit();
|
||||||
|
|
||||||
return ret < 0 ? 1 : 0;
|
return ret < 0 ? 1 : 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user