return 0;
}
-static int do_lint(pakfire_root* root, const char* path) {
+static int do_lint(pakfire_ctx* ctx, pakfire_root* root, const char* path) {
pakfire_archive* archive = NULL;
int r;
// Open the archive
- r = pakfire_archive_open(&archive, root, path);
+ r = pakfire_archive_open(&archive, ctx, root, path);
if (r < 0) {
fprintf(stderr, "Could not open %s: %s\n", path, strerror(-r));
goto ERROR;
// Lint all archives
for (unsigned int i = 0; i < local_args.num_archives; i++) {
- r = do_lint(root, local_args.archives[i]);
+ r = do_lint(global_args->ctx, root, local_args.archives[i]);
if (r < 0)
goto ERROR;
}
return 0;
}
-int pakfire_archive_open(pakfire_archive** archive, pakfire_root* root, const char* path) {
+int pakfire_archive_open(pakfire_archive** archive,
+ pakfire_ctx* ctx, pakfire_root* root, const char* path) {
pakfire_archive* a = NULL;
int r;
return -errno;
// Store a reference to the context
- a->ctx = pakfire_root_get_ctx(root);
+ a->ctx = pakfire_ctx_ref(ctx);
// Store a reference to pakfire
a->root = pakfire_root_ref(root);
typedef struct pakfire_archive pakfire_archive;
+#include <pakfire/ctx.h>
#include <pakfire/filelist.h>
#include <pakfire/hashes.h>
#include <pakfire/linter.h>
#include <pakfire/repo.h>
#include <pakfire/scriptlet.h>
-int pakfire_archive_open(pakfire_archive** archive, pakfire_root* root, const char* path);
+int pakfire_archive_open(pakfire_archive** archive,
+ pakfire_ctx* ctx, pakfire_root* root, const char* path);
+
pakfire_archive* pakfire_archive_ref(pakfire_archive* archive);
pakfire_archive* pakfire_archive_unref(pakfire_archive* archive);
return -errno;
// Open archive
- r = pakfire_archive_open(archive, pkg->root, path);
+ r = pakfire_archive_open(archive, pkg->ctx, pkg->root, path);
if (r < 0) {
ERROR(pkg->ctx, "Could not open archive for %s (at %s): %s\n",
pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA), path, strerror(-r));
f = NULL;
// Open the archive
- r = pakfire_archive_open(archive, self->root, path);
+ r = pakfire_archive_open(archive, self->ctx, self->root, path);
if (r < 0) {
ERROR(self->ctx, "Could not open the generated archive at %s: %s\n",
path, strerror(-r));
}
// Open archive
- r = pakfire_archive_open(&archive, repo->root, entry->fts_path);
+ r = pakfire_archive_open(&archive, repo->ctx, repo->root, entry->fts_path);
if (r < 0)
goto ERROR;
}
// Try to open the archive
- r = pakfire_archive_open(&archive, repo->root, path);
+ r = pakfire_archive_open(&archive, repo->ctx, repo->root, path);
if (r < 0)
goto ERROR;
DEBUG(ctx, "Adding %s to repository...\n", *file);
// Open source archive
- r = pakfire_archive_open(&archive, root, *file);
+ r = pakfire_archive_open(&archive, ctx, root, *file);
if (r) {
ERROR(ctx, "Could not open %s: %m\n", *file);
goto OUT;
if (!PyArg_ParseTuple(args, "O!s", &RootType, &root, &filename))
return -1;
- errno = -pakfire_archive_open(&self->archive, root->root, filename);
+ errno = -pakfire_archive_open(&self->archive, root->ctx->ctx, root->root, filename);
if (errno) {
PyErr_SetFromErrno(PyExc_OSError);
return -1;
Py_BEGIN_ALLOW_THREADS
- int r = pakfire_archive_open(&archive, self->root, path);
+ int r = pakfire_archive_open(&archive, self->ctx->ctx, self->root, path);
if (r) {
Py_BLOCK_THREADS
PyErr_SetFromErrno(PyExc_OSError);
int r = EXIT_FAILURE;
// Open the archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
// Check if path was set correctly
ASSERT_STRING_EQUALS(pakfire_archive_get_path(archive), TEST_SRC_PATH TEST_PKG1_PATH);
int r = EXIT_FAILURE;
// Open the archive
- ASSERT_ERROR(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH), EISDIR);
+ ASSERT_ERROR(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH), EISDIR);
ASSERT_NULL(archive);
// Everything passed
};
// Open the archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
// Read a file
ASSERT(f = pakfire_archive_read(archive, "/usr/bin/beep", 0));
ASSERT(f && path);
// Open the archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
// Copy archive
ASSERT_SUCCESS(pakfire_archive_copy(archive, path));
int r = EXIT_FAILURE;
// Open the archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
// Fetch the filelist
ASSERT_SUCCESS(pakfire_archive_get_filelist(archive, &list));
char path[PATH_MAX];
int r = EXIT_FAILURE;
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, TEST_SRC_PATH TEST_PKG1_PATH));
// Extract the archive payload
ASSERT_SUCCESS(pakfire_archive_extract(archive, NULL, 0, NULL));
pakfire_package* package = NULL;
// Open archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, path));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, path));
ASSERT(archive);
// Create a new repository
const char* path = TEST_SRC_PATH "/data/beep-1.3-2.ip3.x86_64.pfm";
// Open archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, path));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, path));
ASSERT(archive);
// Get package
printf("Archive written to %s\n", path);
// Try to open the archive
- ASSERT_SUCCESS(pakfire_archive_open(&archive, t->root, path));
+ ASSERT_SUCCESS(pakfire_archive_open(&archive, t->ctx, t->root, path));
// Parse package from archive
ASSERT_SUCCESS(pakfire_archive_make_package(archive, repo, &pkg2));