]> git.ipfire.org Git - people/stevee/pakfire.git/blob - src/libpakfire/include/pakfire/pakfire.h
digests: Split off into a new set of files
[people/stevee/pakfire.git] / src / libpakfire / include / pakfire / pakfire.h
1 /*#############################################################################
2 # #
3 # Pakfire - The IPFire package management system #
4 # Copyright (C) 2017 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_PAKFIRE_H
22 #define PAKFIRE_PAKFIRE_H
23
24 #include <stdarg.h>
25 #include <stddef.h>
26 #include <stdio.h>
27 #include <sys/stat.h>
28 #include <time.h>
29
30 struct pakfire;
31
32 #include <pakfire/filelist.h>
33 #include <pakfire/key.h>
34 #include <pakfire/packagelist.h>
35 #include <pakfire/parser.h>
36 #include <pakfire/repo.h>
37 #include <pakfire/repolist.h>
38
39 enum pakfire_flags {
40 PAKFIRE_FLAGS_OFFLINE = (1 << 0),
41 };
42
43 // Callbacks
44 typedef void (*pakfire_log_callback)(void* data, int priority, const char* file,
45 int line, const char* fn, const char* format, va_list args);
46 void pakfire_set_log_callback(struct pakfire* pakfire,
47 pakfire_log_callback callback, void* data);
48 typedef int (*pakfire_confirm_callback)(struct pakfire* pakfire, void* data,
49 const char* message, const char* question);
50 void pakfire_set_confirm_callback(struct pakfire* pakfire,
51 pakfire_confirm_callback callback, void* data);
52 typedef void (*pakfire_status_callback)(struct pakfire* pakfire, void* data,
53 int progress, const char* status);
54
55 int pakfire_create(struct pakfire** pakfire, const char* path, const char* arch,
56 const char* conf, int flags,
57 int loglevel, pakfire_log_callback log_callback, void* log_data);
58
59 struct pakfire* pakfire_ref(struct pakfire* pakfire);
60 struct pakfire* pakfire_unref(struct pakfire* pakfire);
61
62 const char* pakfire_get_path(struct pakfire* pakfire);
63
64 int pakfire_clean(struct pakfire* pakfire, int flags);
65 int pakfire_refresh(struct pakfire* pakfire, int flags);
66
67 int pakfire_list_keys(struct pakfire* pakfire, struct pakfire_key*** keys);
68
69 int pakfire_copy_in(struct pakfire* pakfire, const char* src, const char* dst);
70 int pakfire_copy_out(struct pakfire* pakfire, const char* src, const char* dst);
71
72 const char* pakfire_get_arch(struct pakfire* pakfire);
73
74 int pakfire_version_compare(struct pakfire* pakfire, const char* evr1, const char* evr2);
75
76 struct pakfire_repolist* pakfire_get_repos(struct pakfire* pakfire);
77 struct pakfire_repo* pakfire_get_repo(struct pakfire* pakfire, const char* name);
78
79 int pakfire_whatprovides(struct pakfire* pakfire, const char* what, int flags,
80 struct pakfire_packagelist** list);
81 int pakfire_whatrequires(struct pakfire* pakfire, const char* what, int flags,
82 struct pakfire_packagelist** list);
83
84 // Search
85
86 enum pakfire_search_flags {
87 PAKFIRE_SEARCH_NAME_ONLY = (1 << 0),
88 };
89
90 int pakfire_search(struct pakfire* pakfire, const char* what, int flags,
91 struct pakfire_packagelist** list);
92
93 // Logging
94
95 int pakfire_log_get_priority(struct pakfire* pakfire);
96 void pakfire_log_set_priority(struct pakfire* pakfire, int priority);
97
98 // Install/Erase/Update
99
100 int pakfire_install(struct pakfire* pakfire, int transaction_flags, int solver_flags,
101 const char** packages, const char** locks, int job_flags, int* changed,
102 pakfire_status_callback status_callback, void* status_callback_data);
103 int pakfire_erase(struct pakfire* pakfire, int transaction_flags, int solver_flags,
104 const char** packages, const char** locks, int job_flags, int* changed,
105 pakfire_status_callback status_callback, void* status_callback_data);
106 int pakfire_update(struct pakfire* pakfire, int transaction_flags, int solver_flags,
107 const char** packages, const char** locks, int jobs_flags, int* changed,
108 pakfire_status_callback status_callback, void* status_callback_data);
109
110 // Check
111
112 int pakfire_check(struct pakfire* pakfire, struct pakfire_filelist* errors);
113
114 // Sync
115
116 int pakfire_sync(struct pakfire* pakfire, int solver_flags, int flags, int* changed,
117 pakfire_status_callback status_callback, void* status_callback_data);
118
119 #ifdef PAKFIRE_PRIVATE
120
121 #include <gpgme.h>
122 #include <solv/pool.h>
123
124 #include <pakfire/config.h>
125 #include <pakfire/pwd.h>
126
127 int pakfire_on_root(struct pakfire* pakfire);
128
129 const struct pakfire_subid* pakfire_subuid(struct pakfire* pakfire);
130 const struct pakfire_subid* pakfire_subgid(struct pakfire* pakfire);
131
132 void pakfire_log(struct pakfire* pakfire, int priority, const char *file,
133 int line, const char *fn, const char *format, ...)
134 __attribute__((format(printf, 6, 7)));
135
136 int pakfire_has_flag(struct pakfire* pakfire, int flag);
137
138 // Locking
139 int pakfire_acquire_lock(struct pakfire* pakfire);
140 void pakfire_release_lock(struct pakfire* pakfire);
141
142 struct pakfire_config* pakfire_get_config(struct pakfire* pakfire);
143 int pakfire_is_mountpoint(struct pakfire* pakfire, const char* path);
144
145 int pakfire_confirm(struct pakfire* pakfire, const char* message, const char* question);
146
147 gpgme_ctx_t pakfire_get_gpgctx(struct pakfire* pakfire);
148
149 const char* pakfire_get_distro_name(struct pakfire* pakfire);
150 const char* pakfire_get_distro_id(struct pakfire* pakfire);
151 const char* pakfire_get_distro_vendor(struct pakfire* pakfire);
152 const char* pakfire_get_distro_version(struct pakfire* pakfire);
153 const char* pakfire_get_distro_version_id(struct pakfire* pakfire);
154
155 const char* pakfire_get_keystore_path(struct pakfire* pakfire);
156
157 #define pakfire_path(pakfire, path, format, ...) \
158 __pakfire_path(pakfire, path, sizeof(path), format, __VA_ARGS__)
159 int __pakfire_path(struct pakfire* pakfire, char* path, const size_t length,
160 const char* format, ...) __attribute__((format(printf, 4, 5)));
161
162 const char* pakfire_relpath(struct pakfire* pakfire, const char* path);
163
164 #define pakfire_cache_path(pakfire, path, format, ...) \
165 __pakfire_cache_path(pakfire, path, sizeof(path), format, __VA_ARGS__)
166 int __pakfire_cache_path(struct pakfire* pakfire, char* path, size_t length,
167 const char* format, ...) __attribute__((format(printf, 4, 5)));
168
169 void pakfire_pool_has_changed(struct pakfire* pakfire);
170 void pakfire_pool_internalize(struct pakfire* pakfire);
171
172 Pool* pakfire_get_solv_pool(struct pakfire* pakfire);
173
174 struct pakfire_repo* pakfire_get_installed_repo(struct pakfire* pakfire);
175
176 // Archive helpers
177 struct archive* pakfire_make_archive_disk_reader(struct pakfire* pakfire, int internal);
178 struct archive* pakfire_make_archive_disk_writer(struct pakfire* pakfire, int internal);
179
180 #endif
181
182 #endif /* PAKFIRE_PAKFIRE_H */