archive_read_support_format_empty.c [plain text]
#include "archive_platform.h"
__FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_empty.c 191524 2009-04-26 18:24:14Z kientzle $");
#include "archive.h"
#include "archive_entry.h"
#include "archive_private.h"
#include "archive_read_private.h"
static int archive_read_format_empty_bid(struct archive_read *);
static int archive_read_format_empty_read_data(struct archive_read *,
const void **, size_t *, off_t *);
static int archive_read_format_empty_read_header(struct archive_read *,
struct archive_entry *);
int
archive_read_support_format_empty(struct archive *_a)
{
struct archive_read *a = (struct archive_read *)_a;
int r;
r = __archive_read_register_format(a,
NULL,
NULL,
archive_read_format_empty_bid,
NULL,
archive_read_format_empty_read_header,
archive_read_format_empty_read_data,
NULL,
NULL);
return (r);
}
static int
archive_read_format_empty_bid(struct archive_read *a)
{
ssize_t avail;
(void)__archive_read_ahead(a, 1, &avail);
if (avail != 0)
return (-1);
return (1);
}
static int
archive_read_format_empty_read_header(struct archive_read *a,
struct archive_entry *entry)
{
(void)a;
(void)entry;
a->archive.archive_format = ARCHIVE_FORMAT_EMPTY;
a->archive.archive_format_name = "Empty file";
return (ARCHIVE_EOF);
}
static int
archive_read_format_empty_read_data(struct archive_read *a,
const void **buff, size_t *size, off_t *offset)
{
(void)a;
(void)buff;
(void)size;
(void)offset;
return (ARCHIVE_EOF);
}