struct pakfire_jail* jail;
// Environment
- struct pakfire_env* env;
+ pakfire_env* env;
// The build repository
struct pakfire_repo* repo;
static int pakfire_build_find_pkgconfig_requires(
pakfire_ctx* ctx, struct pakfire_file* file, struct pakfire_find_deps_ctx* deps) {
- struct pakfire_env* env = NULL;
+ pakfire_env* env = NULL;
int r;
// Fetch the absolute path
static int pakfire_build_stage(pakfire_build* build,
struct pakfire_parser* makefile, const char* stage) {
- struct pakfire_env* env = NULL;
+ pakfire_env* env = NULL;
char* script = NULL;
char template[1024];
int r;
char* env[ENVIRON_SIZE];
};
-static void pakfire_env_free(struct pakfire_env* env) {
+static void pakfire_env_free(pakfire_env* env) {
// Free environment
for (unsigned int i = 0; env->env[i]; i++)
free(env->env[i]);
free(env);
}
-int pakfire_env_create(struct pakfire_env** env, pakfire_ctx* ctx) {
- struct pakfire_env* e = NULL;
+int pakfire_env_create(pakfire_env** env, pakfire_ctx* ctx) {
+ pakfire_env* e = NULL;
// Allocate a new environment
e = calloc(1, sizeof(*e));
return 0;
}
-struct pakfire_env* pakfire_env_ref(struct pakfire_env* env) {
+pakfire_env* pakfire_env_ref(pakfire_env* env) {
++env->nrefs;
return env;
}
-struct pakfire_env* pakfire_env_unref(struct pakfire_env* env) {
+pakfire_env* pakfire_env_unref(pakfire_env* env) {
if (--env->nrefs > 0)
return env;
return NULL;
}
-char** pakfire_env_get_envp(struct pakfire_env* env) {
+char** pakfire_env_get_envp(pakfire_env* env) {
if (!env->env[0])
return NULL;
}
// Returns the length of the environment
-static unsigned int pakfire_env_length(struct pakfire_env* env) {
+static unsigned int pakfire_env_length(pakfire_env* env) {
unsigned int i = 0;
// Count everything in the environment
}
// Finds an existing environment variable and returns its index or -1 if not found
-static int pakfire_env_find(struct pakfire_env* env, const char* key) {
+static int pakfire_env_find(pakfire_env* env, const char* key) {
if (!key)
return -EINVAL;
}
// Returns the value of an environment variable or NULL
-const char* pakfire_env_get(struct pakfire_env* env, const char* key) {
+const char* pakfire_env_get(pakfire_env* env, const char* key) {
int i = pakfire_env_find(env, key);
if (i < 0)
return NULL;
}
// Sets an environment variable
-int pakfire_env_set(struct pakfire_env* env, const char* key, const char* format, ...) {
+int pakfire_env_set(pakfire_env* env, const char* key, const char* format, ...) {
char value[PATH_MAX];
va_list args;
int r;
}
// Appends something to an environment variable, separated by :
-int pakfire_env_append(struct pakfire_env* env, const char* key, const char* format, ...) {
+int pakfire_env_append(pakfire_env* env, const char* key, const char* format, ...) {
const char* old_value = NULL;
char value[PATH_MAX];
va_list args;
}
// Imports an environment
-int pakfire_env_import(struct pakfire_env* env, const char** e) {
+int pakfire_env_import(pakfire_env* env, const char** e) {
char* key = NULL;
char* val = NULL;
int r;
return 0;
}
-int pakfire_env_merge(struct pakfire_env* env1, struct pakfire_env* env2) {
+int pakfire_env_merge(pakfire_env* env1, pakfire_env* env2) {
return pakfire_env_import(env1, (const char**)env2->env);
}
#ifndef PAKFIRE_ENV_H
#define PAKFIRE_ENV_H
-struct pakfire_env;
+typedef struct pakfire_env pakfire_env;
#include <pakfire/ctx.h>
-int pakfire_env_create(struct pakfire_env** env, pakfire_ctx* ctx);
+int pakfire_env_create(pakfire_env** env, pakfire_ctx* ctx);
-struct pakfire_env* pakfire_env_ref(struct pakfire_env* env);
-struct pakfire_env* pakfire_env_unref(struct pakfire_env* env);
+pakfire_env* pakfire_env_ref(pakfire_env* env);
+pakfire_env* pakfire_env_unref(pakfire_env* env);
-char** pakfire_env_get_envp(struct pakfire_env* env);
+char** pakfire_env_get_envp(pakfire_env* env);
-const char* pakfire_env_get(struct pakfire_env* env, const char* key);
-int pakfire_env_set(struct pakfire_env* env, const char* key, const char* format, ...)
+const char* pakfire_env_get(pakfire_env* env, const char* key);
+int pakfire_env_set(pakfire_env* env, const char* key, const char* format, ...)
__attribute__((format(printf, 3, 4)));
-int pakfire_env_append(struct pakfire_env* env, const char* key, const char* format, ...)
+int pakfire_env_append(pakfire_env* env, const char* key, const char* format, ...)
__attribute__((format(printf, 3, 4)));
-int pakfire_env_import(struct pakfire_env* env, const char** e);
+int pakfire_env_import(pakfire_env* env, const char** e);
-int pakfire_env_merge(struct pakfire_env* env1, struct pakfire_env* env2);
+int pakfire_env_merge(pakfire_env* env1, pakfire_env* env2);
#endif /* PAKFIRE_ENV_H */
pakfire_cgroup* cgroup;
// Environment
- struct pakfire_env* env;
+ pakfire_env* env;
// Mountpoints
struct pakfire_jail_mountpoint mountpoints[MAX_MOUNTPOINTS];
struct pakfire_jail_command {
struct pakfire_jail* jail;
const char** argv;
- struct pakfire_env* env;
+ pakfire_env* env;
};
static int pakfire_jail_launch_command(pakfire_ctx* ctx, void* data) {
struct pakfire_jail_command* command = data;
- struct pakfire_env* env = NULL;
+ pakfire_env* env = NULL;
char** envp = NULL;
int r;
}
int pakfire_jail_exec_command(struct pakfire_jail* jail,
- const char* argv[], struct pakfire_env* env, int flags) {
+ const char* argv[], pakfire_env* env, int flags) {
struct pakfire_jail_command command = {
.jail = jail,
.argv = argv,
}
int pakfire_jail_exec_capture_output(struct pakfire_jail* jail,
- const char* argv[], struct pakfire_env* env, int flags, char** output, size_t* length) {
+ const char* argv[], pakfire_env* env, int flags, char** output, size_t* length) {
struct pakfire_jail_command command = {
.jail = jail,
.argv = argv,
}
int pakfire_jail_communicate(
- struct pakfire_jail* jail, const char* argv[], struct pakfire_env* env, int flags,
+ struct pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data) {
struct pakfire_jail_command command = {
}
int pakfire_jail_exec_script(struct pakfire_jail* jail,
- const char* script, const size_t size, const char* args[], struct pakfire_env* env,
+ const char* script, const size_t size, const char* args[], pakfire_env* env,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data) {
char path[PATH_MAX];
A convenience function that creates a new jail, runs the given command and destroys
the jail again.
*/
-int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], struct pakfire_env* env,
+int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], pakfire_env* env,
int flags, char** output, size_t* output_length) {
struct pakfire_jail* jail = NULL;
int r;
}
int pakfire_jail_run_script(struct pakfire* pakfire, const char* script, const size_t length,
- const char* argv[], struct pakfire_env* env, int flags) {
+ const char* argv[], pakfire_env* env, int flags) {
struct pakfire_jail* jail = NULL;
int r;
return r;
}
-int pakfire_jail_shell(struct pakfire_jail* jail, struct pakfire_env* e) {
- struct pakfire_env* env = NULL;
+int pakfire_jail_shell(struct pakfire_jail* jail, pakfire_env* e) {
+ pakfire_env* env = NULL;
int r;
const char* argv[] = {
pakfire_jail_main_callback callback, void* data, int flags);
int pakfire_jail_exec_command(struct pakfire_jail* jail,
- const char* argv[], struct pakfire_env* env, int flags);
+ const char* argv[], pakfire_env* env, int flags);
int pakfire_jail_exec_capture_output(struct pakfire_jail* jail,
- const char* argv[], struct pakfire_env* env, int flags, char** output, size_t* length);
+ const char* argv[], pakfire_env* env, int flags, char** output, size_t* length);
// Resource limits
int pakfire_jail_set_cgroup(struct pakfire_jail* jail, pakfire_cgroup* cgroup);
int pakfire_jail_communicate(
- struct pakfire_jail* jail, const char* argv[], struct pakfire_env* env, int flags,
+ struct pakfire_jail* jail, const char* argv[], pakfire_env* env, int flags,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data);
// Convenience functions
int pakfire_jail_run(struct pakfire* pakfire,
- const char* argv[], struct pakfire_env* env, int flags, char** output, size_t* output_length);
+ const char* argv[], pakfire_env* env, int flags, char** output, size_t* output_length);
int pakfire_jail_run_script(struct pakfire* pakfire,
- const char* script, const size_t length, const char* argv[], struct pakfire_env* env, int flags);
+ const char* script, const size_t length, const char* argv[], pakfire_env* env, int flags);
int pakfire_jail_exec_script(struct pakfire_jail* jail,
- const char* script, const size_t size, const char* args[], struct pakfire_env* env,
+ const char* script, const size_t size, const char* args[], pakfire_env* env,
pakfire_jail_input_callback input_callback, void* input_data,
pakfire_jail_output_callback output_callback, void* output_data);
-int pakfire_jail_shell(struct pakfire_jail* jail, struct pakfire_env* env);
+int pakfire_jail_shell(struct pakfire_jail* jail, pakfire_env* env);
int pakfire_jail_ldconfig(struct pakfire* pakfire);
int pakfire_jail_run_systemd_tmpfiles(struct pakfire* pakfire);
return pakfire_string_set(parser->namespace, namespace);
}
-int pakfire_parser_set_env(struct pakfire_parser* parser, struct pakfire_env* env) {
+int pakfire_parser_set_env(struct pakfire_parser* parser, pakfire_env* env) {
struct pakfire_parser_declaration* d = NULL;
char* value = NULL;
int r;
int pakfire_parser_parse_data(struct pakfire_parser* parent, const char* data, size_t len,
struct pakfire_parser_error** error);
-int pakfire_parser_set_env(struct pakfire_parser* parser, struct pakfire_env* env);
+int pakfire_parser_set_env(struct pakfire_parser* parser, pakfire_env* env);
#endif /* PAKFIRE_PARSER_H */
static PyObject* Pakfire_execute(PakfireObject* self, PyObject* args, PyObject* kwargs) {
struct pakfire_input_buffer input = {};
struct pakfire_jail* jail = NULL;
- struct pakfire_env* env = NULL;
+ pakfire_env* env = NULL;
PyObject* mountpoint = NULL;
const char** argv = NULL;
PyObject* bind = NULL;
#include "../testsuite.h"
static int test_set_get(const struct test* t) {
- struct pakfire_env* env = NULL;
+ pakfire_env* env = NULL;
int r = EXIT_FAILURE;
// Create the environment
}
static int test_merge(const struct test* t) {
- struct pakfire_env* env1 = NULL;
- struct pakfire_env* env2 = NULL;
+ pakfire_env* env1 = NULL;
+ pakfire_env* env2 = NULL;
int r = EXIT_FAILURE;
// Create the environments