satyr 0.42
Loading...
Searching...
No Matches
rpm.h
Go to the documentation of this file.
1/*
2 rpm.h
3
4 Copyright (C) 2012 Red Hat, Inc.
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 2 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 along
17 with this program; if not, write to the Free Software Foundation, Inc.,
18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19*/
20#ifndef SATYR_RPM_H
21#define SATYR_RPM_H
22
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#include <stdbool.h>
33#include <inttypes.h>
34#include <json.h>
35
36/* XXX: Should be moved to separated header once we support more package types.
37 */
38enum sr_package_role
39{
40 /* The role the package has in the problem is either unknown or
41 * irrelevant.
42 */
43 SR_ROLE_UNKNOWN = 0,
44
45 /* The packages contains the executable or script the execution of which
46 * caused the problem to manifest.
47 */
48 SR_ROLE_AFFECTED
49};
50
52{
53 char *path;
54 bool owner_changed;
55 bool group_changed;
56 bool mode_changed;
57 bool md5_mismatch;
58 bool size_changed;
59 bool major_number_changed;
60 bool minor_number_changed;
61 bool symlink_changed;
62 bool modification_time_changed;
63 struct sr_rpm_consistency *next;
64};
65
67{
68 char *name;
69 uint32_t epoch;
70 char *version;
71 char *release;
72 char *architecture;
73 uint64_t install_time;
74 enum sr_package_role role;
75 struct sr_rpm_consistency *consistency;
76 struct sr_rpm_package *next;
77};
78
79struct sr_rpm_package *
80sr_rpm_package_new(void);
81
82void
83sr_rpm_package_init(struct sr_rpm_package *package);
84
85void
86sr_rpm_package_free(struct sr_rpm_package *package,
87 bool recursive);
88
102int
104 struct sr_rpm_package *package2);
105
119int
121 struct sr_rpm_package *package2);
122
137int
139 struct sr_rpm_package *package2);
140
147struct sr_rpm_package *
149 struct sr_rpm_package *item);
150
154int
156
157struct sr_rpm_package *
158sr_rpm_package_sort(struct sr_rpm_package *packages);
159
160struct sr_rpm_package *
161sr_rpm_package_uniq(struct sr_rpm_package *packages);
162
163struct sr_rpm_package *
164sr_rpm_package_get_by_name(const char *name,
165 char **error_message);
166
167struct sr_rpm_package *
168sr_rpm_package_get_by_path(const char *path,
169 char **error_message);
170
171char *
172sr_rpm_package_to_json(struct sr_rpm_package *package,
173 bool recursive);
174
175int
176sr_rpm_package_from_json(struct sr_rpm_package **rpm_package, json_object *list,
177 bool recursive, char **error_message);
178
179bool
180sr_rpm_package_parse_nvr(const char *text,
181 char **name,
182 char **version,
183 char **release);
184
185bool
186sr_rpm_package_parse_nevra(const char *text,
187 char **name,
188 uint32_t *epoch,
189 char **version,
190 char **release,
191 char **architecture);
192
193struct sr_rpm_consistency *
194sr_rpm_consistency_new(void);
195
196void
197sr_rpm_consistency_init(struct sr_rpm_consistency *consistency);
198
199void
200sr_rpm_consistency_free(struct sr_rpm_consistency *consistency,
201 bool recursive);
202
203int
204sr_rpm_consistency_cmp(struct sr_rpm_consistency *consistency1,
205 struct sr_rpm_consistency *consistency2);
206
207int
208sr_rpm_consistency_cmp_recursive(struct sr_rpm_consistency *consistency1,
209 struct sr_rpm_consistency *consistency2);
210
217struct sr_rpm_consistency *
219 struct sr_rpm_consistency *item);
220
221#ifdef __cplusplus
222}
223#endif
224
225#endif
int sr_rpm_package_count(struct sr_rpm_package *packages)
int sr_rpm_package_cmp(struct sr_rpm_package *package1, struct sr_rpm_package *package2)
int sr_rpm_package_cmp_nevra(struct sr_rpm_package *package1, struct sr_rpm_package *package2)
int sr_rpm_package_cmp_nvr(struct sr_rpm_package *package1, struct sr_rpm_package *package2)
struct sr_rpm_package * sr_rpm_package_append(struct sr_rpm_package *dest, struct sr_rpm_package *item)
struct sr_rpm_consistency * sr_rpm_consistency_append(struct sr_rpm_consistency *dest, struct sr_rpm_consistency *item)