1 /*#############################################################################
3 # Pakfire - The IPFire package management system #
4 # Copyright (C) 2017 Pakfire development team #
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. #
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. #
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/>. #
19 #############################################################################*/
21 #ifndef PAKFIRE_PAKFIRE_H
22 #define PAKFIRE_PAKFIRE_H
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>
40 PAKFIRE_FLAGS_OFFLINE
= (1 << 0),
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
);
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
);
59 struct pakfire
* pakfire_ref(struct pakfire
* pakfire
);
60 struct pakfire
* pakfire_unref(struct pakfire
* pakfire
);
62 const char* pakfire_get_path(struct pakfire
* pakfire
);
64 int pakfire_clean(struct pakfire
* pakfire
, int flags
);
65 int pakfire_refresh(struct pakfire
* pakfire
, int flags
);
67 int pakfire_list_keys(struct pakfire
* pakfire
, struct pakfire_key
*** keys
);
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
);
72 const char* pakfire_get_arch(struct pakfire
* pakfire
);
74 int pakfire_version_compare(struct pakfire
* pakfire
, const char* evr1
, const char* evr2
);
76 struct pakfire_repolist
* pakfire_get_repos(struct pakfire
* pakfire
);
77 struct pakfire_repo
* pakfire_get_repo(struct pakfire
* pakfire
, const char* name
);
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
);
86 enum pakfire_search_flags
{
87 PAKFIRE_SEARCH_NAME_ONLY
= (1 << 0),
90 int pakfire_search(struct pakfire
* pakfire
, const char* what
, int flags
,
91 struct pakfire_packagelist
** list
);
95 int pakfire_log_get_priority(struct pakfire
* pakfire
);
96 void pakfire_log_set_priority(struct pakfire
* pakfire
, int priority
);
98 // Install/Erase/Update
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
);
112 int pakfire_check(struct pakfire
* pakfire
, struct pakfire_filelist
* errors
);
116 int pakfire_sync(struct pakfire
* pakfire
, int solver_flags
, int flags
, int* changed
,
117 pakfire_status_callback status_callback
, void* status_callback_data
);
119 #ifdef PAKFIRE_PRIVATE
122 #include <solv/pool.h>
124 #include <pakfire/config.h>
125 #include <pakfire/pwd.h>
127 int pakfire_on_root(struct pakfire
* pakfire
);
129 const struct pakfire_subid
* pakfire_subuid(struct pakfire
* pakfire
);
130 const struct pakfire_subid
* pakfire_subgid(struct pakfire
* pakfire
);
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)));
136 int pakfire_has_flag(struct pakfire
* pakfire
, int flag
);
139 int pakfire_acquire_lock(struct pakfire
* pakfire
);
140 void pakfire_release_lock(struct pakfire
* pakfire
);
142 struct pakfire_config
* pakfire_get_config(struct pakfire
* pakfire
);
143 int pakfire_is_mountpoint(struct pakfire
* pakfire
, const char* path
);
145 int pakfire_confirm(struct pakfire
* pakfire
, const char* message
, const char* question
);
147 gpgme_ctx_t
pakfire_get_gpgctx(struct pakfire
* pakfire
);
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
);
155 const char* pakfire_get_keystore_path(struct pakfire
* pakfire
);
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)));
162 const char* pakfire_relpath(struct pakfire
* pakfire
, const char* path
);
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)));
169 void pakfire_pool_has_changed(struct pakfire
* pakfire
);
170 void pakfire_pool_internalize(struct pakfire
* pakfire
);
172 Pool
* pakfire_get_solv_pool(struct pakfire
* pakfire
);
174 struct pakfire_repo
* pakfire_get_installed_repo(struct pakfire
* pakfire
);
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
);
182 #endif /* PAKFIRE_PAKFIRE_H */