// Environment
const char* pakfire_jail_get_env(struct pakfire_jail* jail, const char* key);
int pakfire_jail_set_env(struct pakfire_jail* jail, const char* key, const char* value);
+int pakfire_jail_import_env(struct pakfire_jail* jail, const char* env[]);
// Execute
int pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[]);
return 0;
}
+// Imports an environment
+int pakfire_jail_import_env(struct pakfire_jail* jail, const char* env[]) {
+ if (!env)
+ return 0;
+
+ char* key;
+ char* val;
+ int r;
+
+ // Copy environment variables
+ for (unsigned int i = 0; env[i]; i++) {
+ r = pakfire_string_partition(env[i], "=", &key, &val);
+ if (r)
+ continue;
+
+ // Set value
+ r = pakfire_jail_set_env(jail, key, val);
+
+ if (key)
+ free(key);
+ if (val)
+ free(val);
+
+ // Break on error
+ if (r)
+ return r;
+ }
+
+ return 0;
+}
+
// Logging
int pakfire_jail_set_log_callback(struct pakfire_jail* jail,