]> git.ipfire.org Git - pakfire.git/blame - src/libpakfire/include/pakfire/jail.h
build: Create a jail for each build
[pakfire.git] / src / libpakfire / include / pakfire / jail.h
CommitLineData
fd37ccaf
MT
1/*#############################################################################
2# #
3# Pakfire - The IPFire package management system #
4# Copyright (C) 2022 Pakfire development team #
5# #
6# This program is free software: you can redistribute it and/or modify #
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation, either version 3 of the License, or #
9# (at your option) any later version. #
10# #
11# This program is distributed in the hope that it will be useful, #
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
17# along with this program. If not, see <http://www.gnu.org/licenses/>. #
18# #
19#############################################################################*/
20
21#ifndef PAKFIRE_JAIL_H
22#define PAKFIRE_JAIL_H
23
fd37ccaf
MT
24#include <pakfire/pakfire.h>
25
26struct pakfire_jail;
27
00ba1d9a
MT
28enum {
29 PAKFIRE_JAIL_NONE = 0,
30 PAKFIRE_JAIL_INTERACTIVE = (1 << 0),
31};
32
616f1fca
MT
33typedef int (*pakfire_jail_log_callback)(struct pakfire* pakfire, void* data,
34 int priority, const char* line, size_t length);
35
d639929b 36int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire, int flags);
fd37ccaf
MT
37
38struct pakfire_jail* pakfire_jail_ref(struct pakfire_jail* jail);
39struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail);
40
dc3e6dd4
MT
41// Logging
42int pakfire_jail_set_log_callback(struct pakfire_jail* jail,
43 pakfire_jail_log_callback callback, void* data);
44
cf440db8
MT
45// Resource Limits
46int pakfire_jail_nice(struct pakfire_jail* jail, int nice);
47
32d5f21d
MT
48// Environment
49const char* pakfire_jail_get_env(struct pakfire_jail* jail, const char* key);
50int pakfire_jail_set_env(struct pakfire_jail* jail, const char* key, const char* value);
939025e7 51int pakfire_jail_import_env(struct pakfire_jail* jail, const char* env[]);
32d5f21d 52
9f50bf71 53// Execute
0de6bb30 54int pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[], char*** output);
a45ed6b0 55int pakfire_jail_exec_script(struct pakfire_jail* jail,
0de6bb30 56 const char* script, const size_t size, const char* args[], char*** output);
9f50bf71 57
34ba6846
MT
58// Utility functions
59char* pakfire_jail_concat_output(struct pakfire_jail* jail,
60 const char** input, size_t* length);
61
6ce56f90
MT
62#ifdef PAKFIRE_PRIVATE
63
82df3c77 64// Convenience functions
0de6bb30 65int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags, char*** output);
4f688bd8 66int pakfire_jail_run_script(struct pakfire* pakfire,
0de6bb30 67 const char* script, const size_t length, const char* argv[], int flags, char*** output);
82df3c77 68
e43489f7
MT
69int pakfire_jail_shell(struct pakfire* pakfire);
70int pakfire_jail_ldconfig(struct pakfire* pakfire);
71
6ce56f90 72#endif /* PAKFIRE_PRIVATE */
fd37ccaf
MT
73
74#endif /* PAKFIRE_JAIL_H */