unsigned char digest[EVP_MAX_MD_SIZE];
};
-struct _PakfireArchive {
+struct pakfire_archive {
Pakfire pakfire;
int nrefs;
/*
A helper function to close the archive and reset our data structures
*/
-static void close_archive(PakfireArchive archive, struct archive* a) {
+static void close_archive(struct pakfire_archive* archive, struct archive* a) {
archive_read_free(a);
// Rewind the file descriptor
/*
A helper function that opens the archive for reading
*/
-static int open_archive(PakfireArchive archive, struct archive** a) {
+static int open_archive(struct pakfire_archive* archive, struct archive** a) {
*a = archive_read_new();
if (!*a)
return ENOMEM;
/*
A helper function that opens the archive and finds a certain file in it
*/
-static int open_archive_and_find(PakfireArchive archive, struct archive** a,
+static int open_archive_and_find(struct pakfire_archive* archive, struct archive** a,
struct archive_entry** entry, const char* filename) {
int r = open_archive(archive, a);
if (r)
return r;
}
-static int open_archive_and_read(PakfireArchive archive, const char* filename,
+static int open_archive_and_read(struct pakfire_archive* archive, const char* filename,
char** data, size_t* size) {
struct archive* a = NULL;
struct archive_entry* e = NULL;
}
}
-static struct archive* pakfire_archive_open_payload(PakfireArchive archive,
+static struct archive* pakfire_archive_open_payload(struct pakfire_archive* archive,
struct archive** a, size_t* size) {
struct archive_entry* entry = NULL;
return 0;
}
-static int pakfire_archive_add_chksum(PakfireArchive archive, const char* path,
+static int pakfire_archive_add_chksum(struct pakfire_archive* archive, const char* path,
archive_checksum_algo_t algo, const char* hexdigest) {
int r = 1;
}
static struct pakfire_archive_chksum* pakfire_archive_find_chksum(
- PakfireArchive archive, const char* path) {
+ struct pakfire_archive* archive, const char* path) {
struct pakfire_archive_chksum* chksum = NULL;
STAILQ_FOREACH(chksum, &archive->chksums, nodes) {
return NULL;
}
-static void pakfire_archive_free_chksums(PakfireArchive archive) {
+static void pakfire_archive_free_chksums(struct pakfire_archive* archive) {
struct pakfire_archive_chksum* chksum;
while ((chksum = STAILQ_FIRST(&archive->chksums))) {
}
}
-static void pakfire_archive_free(PakfireArchive archive) {
+static void pakfire_archive_free(struct pakfire_archive* archive) {
// Close the file
if (archive->f)
fclose(archive->f);
free(archive);
}
-static int pakfire_archive_create(PakfireArchive* archive, Pakfire pakfire) {
- PakfireArchive a = calloc(1, sizeof(*a));
+static int pakfire_archive_create(struct pakfire_archive** archive, Pakfire pakfire) {
+ struct pakfire_archive* a = calloc(1, sizeof(*a));
if (!a)
return ENOMEM;
return 0;
}
-PAKFIRE_EXPORT PakfireArchive pakfire_archive_ref(PakfireArchive archive) {
+PAKFIRE_EXPORT struct pakfire_archive* pakfire_archive_ref(struct pakfire_archive* archive) {
++archive->nrefs;
return archive;
}
-PAKFIRE_EXPORT PakfireArchive pakfire_archive_unref(PakfireArchive archive) {
+PAKFIRE_EXPORT struct pakfire_archive* pakfire_archive_unref(struct pakfire_archive* archive) {
if (--archive->nrefs > 0)
return archive;
return NULL;
}
-PAKFIRE_EXPORT Pakfire pakfire_archive_get_pakfire(PakfireArchive archive) {
+PAKFIRE_EXPORT Pakfire pakfire_archive_get_pakfire(struct pakfire_archive* archive) {
return pakfire_ref(archive->pakfire);
}
-static struct pakfire_package* pakfire_archive_get_package(PakfireArchive archive) {
+static struct pakfire_package* pakfire_archive_get_package(struct pakfire_archive* archive) {
if (!archive->package) {
struct pakfire_repo* repo = pakfire_get_repo(archive->pakfire, "@dummy");
if (!repo)
// Metadata
-static int pakfire_archive_parse_metadata(PakfireArchive archive) {
+static int pakfire_archive_parse_metadata(struct pakfire_archive* archive) {
char* data = NULL;
size_t size;
return r;
}
-static int pakfire_archive_parse_entry_checksums(PakfireArchive archive,
+static int pakfire_archive_parse_entry_checksums(struct pakfire_archive* archive,
struct archive* a, struct archive_entry* e) {
char* data;
size_t data_size;
return 0;
}
-static int pakfire_archive_parse_entry_scriptlet(PakfireArchive archive,
+static int pakfire_archive_parse_entry_scriptlet(struct pakfire_archive* archive,
struct archive* a, struct archive_entry* e, const char* filename) {
struct pakfire_scriptlet* scriptlet;
char* data = NULL;
return r;
}
-static int pakfire_archive_walk_entries(PakfireArchive archive, struct archive* a,
- int (*callback)(PakfireArchive archive, struct archive* a, struct archive_entry* e, void* data),
+static int pakfire_archive_walk_entries(struct pakfire_archive* archive, struct archive* a,
+ int (*callback)(struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data),
void* data) {
struct archive_entry* e = NULL;
return 0;
}
-static int pakfire_archive_walk(PakfireArchive archive,
- int (*callback)(PakfireArchive archive, struct archive* a, struct archive_entry* e, void* data),
+static int pakfire_archive_walk(struct pakfire_archive* archive,
+ int (*callback)(struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data),
void* data) {
struct archive* a;
return r;
}
-static int pakfire_archive_read_metadata_entry(PakfireArchive archive, struct archive* a,
+static int pakfire_archive_read_metadata_entry(struct pakfire_archive* archive, struct archive* a,
struct archive_entry* e, void* data) {
int ret;
return 0;
}
-static int pakfire_archive_read_metadata(PakfireArchive archive, struct archive* a) {
+static int pakfire_archive_read_metadata(struct pakfire_archive* archive, struct archive* a) {
return pakfire_archive_walk(archive, pakfire_archive_read_metadata_entry, NULL);
}
This function tries (very easily) to find out whether something is a valid
archive or not.
*/
-static int pakfire_archive_read_format(PakfireArchive archive, struct archive* a) {
+static int pakfire_archive_read_format(struct pakfire_archive* archive, struct archive* a) {
struct archive_entry* entry = NULL;
char* data = NULL;
size_t size;
return r;
}
-static int pakfire_archive_try_open(PakfireArchive archive, const char* path) {
+static int pakfire_archive_try_open(struct pakfire_archive* archive, const char* path) {
struct archive* a = NULL;
if (!path)
return r;
}
-PAKFIRE_EXPORT int pakfire_archive_open(PakfireArchive* archive, Pakfire pakfire, const char* path) {
+PAKFIRE_EXPORT int pakfire_archive_open(struct pakfire_archive** archive, Pakfire pakfire, const char* path) {
int r = pakfire_archive_create(archive, pakfire);
if (r)
return r;
}
-PAKFIRE_EXPORT char* pakfire_archive_get(PakfireArchive archive, const char* namespace, const char* key) {
+PAKFIRE_EXPORT char* pakfire_archive_get(struct pakfire_archive* archive, const char* namespace, const char* key) {
int r = pakfire_archive_parse_metadata(archive);
if (r)
return NULL;
return pakfire_parser_get(archive->parser, namespace, key);
}
-PAKFIRE_EXPORT int pakfire_archive_read(PakfireArchive archive, const char* filename,
+PAKFIRE_EXPORT int pakfire_archive_read(struct pakfire_archive* archive, const char* filename,
char** data, size_t* data_size) {
struct archive* a = NULL;
struct archive_entry* entry = NULL;
return r;
}
-static int pakfire_archive_extraction_path(PakfireArchive archive,
+static int pakfire_archive_extraction_path(struct pakfire_archive* archive,
char* path, size_t length, const char* prefix) {
char buffer[PATH_MAX];
};
static int pakfire_archive_extract_progressbar(
- PakfireArchive archive, struct pakfire_progressbar** progressbar) {
+ struct pakfire_archive* archive, struct pakfire_progressbar** progressbar) {
int r = 1;
struct pakfire_package* pkg = pakfire_archive_get_package(archive);
return r;
}
-static int pakfire_archive_extract_entry(PakfireArchive archive,
+static int pakfire_archive_extract_entry(struct pakfire_archive* archive,
struct archive* a, struct archive_entry* entry, void* data) {
struct pakfire_archive_extractor* extractor = (struct pakfire_archive_extractor*)data;
return 0;
}
-PAKFIRE_EXPORT int pakfire_archive_extract(PakfireArchive archive, const char* prefix) {
+PAKFIRE_EXPORT int pakfire_archive_extract(struct pakfire_archive* archive, const char* prefix) {
struct pakfire_progressbar* progressbar = NULL;
char path[PATH_MAX];
struct archive* a = NULL;
return r;
}
-PAKFIRE_EXPORT const char* pakfire_archive_get_path(PakfireArchive archive) {
+PAKFIRE_EXPORT const char* pakfire_archive_get_path(struct pakfire_archive* archive) {
return archive->path;
}
-PAKFIRE_EXPORT unsigned int pakfire_archive_get_format(PakfireArchive archive) {
+PAKFIRE_EXPORT unsigned int pakfire_archive_get_format(struct pakfire_archive* archive) {
return archive->format;
}
-static int pakfire_archive_load_filelist_mtree(PakfireArchive archive) {
+static int pakfire_archive_load_filelist_mtree(struct pakfire_archive* archive) {
struct archive* a;
struct archive_entry* entry;
int r;
return r;
}
-static int pakfire_archive_load_filelist_legacy(PakfireArchive archive) {
+static int pakfire_archive_load_filelist_legacy(struct pakfire_archive* archive) {
char* data = NULL;
size_t size;
return r;
}
-static int pakfire_archive_load_filelist(PakfireArchive archive) {
+static int pakfire_archive_load_filelist(struct pakfire_archive* archive) {
if (archive->format >= 6)
return pakfire_archive_load_filelist_mtree(archive);
else
return pakfire_archive_load_filelist_legacy(archive);
}
-PAKFIRE_EXPORT PakfireFilelist pakfire_archive_get_filelist(PakfireArchive archive) {
+PAKFIRE_EXPORT PakfireFilelist pakfire_archive_get_filelist(struct pakfire_archive* archive) {
if (!archive->filelist) {
int r = pakfire_archive_load_filelist(archive);
if (r)
/*
This function is called to examine whether we have a signature and if so verify it
*/
-static int pakfire_archive_verify_signature(PakfireArchive archive, struct archive* a,
+static int pakfire_archive_verify_signature(struct pakfire_archive* archive, struct archive* a,
struct archive_entry* e, void* data) {
const char* entry_name = archive_entry_pathname(e);
/*
This function walks through the archive looking for signatures and verifies them
*/
-static int pakfire_archive_verify_signatures(PakfireArchive archive) {
+static int pakfire_archive_verify_signatures(struct pakfire_archive* archive) {
char* buffer = NULL;
size_t size = 0;
return r;
}
-PAKFIRE_EXPORT pakfire_archive_verify_status_t pakfire_archive_verify(PakfireArchive archive) {
+PAKFIRE_EXPORT pakfire_archive_verify_status_t pakfire_archive_verify(struct pakfire_archive* archive) {
DEBUG(archive->pakfire, "Verifying archive %p\n", archive);
// Return previous result if this has already been called
return NULL;
}
-PAKFIRE_EXPORT size_t pakfire_archive_get_size(PakfireArchive archive) {
+PAKFIRE_EXPORT size_t pakfire_archive_get_size(struct pakfire_archive* archive) {
struct stat buf;
int r = stat(archive->path, &buf);
/*
Copy all metadata from this archive to the package object
*/
-PAKFIRE_EXPORT struct pakfire_package* pakfire_archive_make_package(PakfireArchive archive, struct pakfire_repo* repo) {
+PAKFIRE_EXPORT struct pakfire_package* pakfire_archive_make_package(struct pakfire_archive* archive, struct pakfire_repo* repo) {
char* name = pakfire_archive_get(archive, "package", "name");
char* arch = pakfire_archive_get(archive, "package", "arch");
}
struct pakfire_scriptlet* pakfire_archive_get_scriptlet(
- PakfireArchive archive, const char* type) {
+ struct pakfire_archive* archive, const char* type) {
struct pakfire_scriptlet* scriptlet;
for (unsigned int i = 0; i < archive->nscriptlets; i++) {
#include <stddef.h>
+struct pakfire_archive;
+
#include <pakfire/package.h>
#include <pakfire/repo.h>
#include <pakfire/scriptlet.h>
PAKFIRE_ARCHIVE_VERIFY_ERROR,
} pakfire_archive_verify_status_t;
-int pakfire_archive_open(PakfireArchive* archive, Pakfire pakfire, const char* path);
-PakfireArchive pakfire_archive_ref(PakfireArchive archive);
-PakfireArchive pakfire_archive_unref(PakfireArchive archive);
-Pakfire pakfire_archive_get_pakfire(PakfireArchive archive);
+int pakfire_archive_open(struct pakfire_archive** archive, Pakfire pakfire, const char* path);
+struct pakfire_archive* pakfire_archive_ref(struct pakfire_archive* archive);
+struct pakfire_archive* pakfire_archive_unref(struct pakfire_archive* archive);
+Pakfire pakfire_archive_get_pakfire(struct pakfire_archive* archive);
-char* pakfire_archive_get(PakfireArchive archive, const char* namespace, const char* key);
+char* pakfire_archive_get(struct pakfire_archive* archive, const char* namespace, const char* key);
-int pakfire_archive_read(PakfireArchive archive, const char* filename,
+int pakfire_archive_read(struct pakfire_archive* archive, const char* filename,
char** data, size_t* data_size);
-int pakfire_archive_extract(PakfireArchive archive, const char* prefix);
+int pakfire_archive_extract(struct pakfire_archive* archive, const char* prefix);
-const char* pakfire_archive_get_path(PakfireArchive archive);
+const char* pakfire_archive_get_path(struct pakfire_archive* archive);
-unsigned int pakfire_archive_get_format(PakfireArchive archive);
+unsigned int pakfire_archive_get_format(struct pakfire_archive* archive);
-PakfireFilelist pakfire_archive_get_filelist(PakfireArchive archive);
+PakfireFilelist pakfire_archive_get_filelist(struct pakfire_archive* archive);
-pakfire_archive_verify_status_t pakfire_archive_verify(PakfireArchive archive);
+pakfire_archive_verify_status_t pakfire_archive_verify(struct pakfire_archive* archive);
const char* pakfire_archive_verify_strerror(pakfire_archive_verify_status_t status);
-size_t pakfire_archive_get_size(PakfireArchive archive);
+size_t pakfire_archive_get_size(struct pakfire_archive* archive);
struct pakfire_package* pakfire_archive_make_package(
- PakfireArchive archive, struct pakfire_repo* repo);
+ struct pakfire_archive* archive, struct pakfire_repo* repo);
#define PAKFIRE_ARCHIVE_FN_CHECKSUMS "chksums"
#define PAKFIRE_ARCHIVE_FN_FILELIST "filelist"
#ifdef PAKFIRE_PRIVATE
struct pakfire_scriptlet* pakfire_archive_get_scriptlet(
- PakfireArchive archive, const char* type);
+ struct pakfire_archive* archive, const char* type);
typedef enum archive_checksum_algo {
PAKFIRE_CHECKSUM_UNKNOWN = 0,