00001
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef _CPEURI_H_
00038 #define _CPEURI_H_
00039
00040 #include <stdbool.h>
00041 #include <stdlib.h>
00042 #include <stdio.h>
00043
00045 typedef enum {
00046 CPE_PART_NONE,
00047 CPE_PART_HW,
00048 CPE_PART_OS,
00049 CPE_PART_APP
00050 } cpe_part_t;
00051
00052 typedef enum {
00053 CPE_FORMAT_UNKNOWN,
00054 CPE_FORMAT_URI,
00055 CPE_FORMAT_STRING,
00056 CPE_FORMAT_WFN
00057 } cpe_format_t;
00058
00065 struct cpe_name;
00066
00076 struct cpe_name *cpe_name_new(const char *cpe);
00077
00083 struct cpe_name * cpe_name_clone(struct cpe_name * old_name);
00084
00090 void cpe_name_free(struct cpe_name *cpe);
00091
00092
00104 cpe_format_t cpe_name_get_format(const struct cpe_name *cpe);
00105
00110 cpe_part_t cpe_name_get_part(const struct cpe_name *cpe);
00111
00116 const char *cpe_name_get_vendor(const struct cpe_name *cpe);
00117
00122 const char *cpe_name_get_product(const struct cpe_name *cpe);
00123
00128 const char *cpe_name_get_version(const struct cpe_name *cpe);
00129
00134 const char *cpe_name_get_update(const struct cpe_name *cpe);
00135
00140 const char *cpe_name_get_edition(const struct cpe_name *cpe);
00141
00146 const char *cpe_name_get_language(const struct cpe_name *cpe);
00147
00152 const char *cpe_name_get_sw_edition(const struct cpe_name *cpe);
00153
00158 const char *cpe_name_get_target_sw(const struct cpe_name *cpe);
00159
00164 const char *cpe_name_get_target_hw(const struct cpe_name *cpe);
00165
00170 const char *cpe_name_get_other(const struct cpe_name *cpe);
00171
00181 char *cpe_name_get_as_format(const struct cpe_name *cpe, cpe_format_t format);
00182
00191 char *cpe_name_get_as_str(const struct cpe_name *cpe);
00192
00193
00196
00208 bool cpe_name_set_format(struct cpe_name *cpe, cpe_format_t newval);
00209
00214 bool cpe_name_set_part(struct cpe_name *cpe, cpe_part_t newval);
00215
00220 bool cpe_name_set_vendor(struct cpe_name *cpe, const char *newval);
00221
00226 bool cpe_name_set_product(struct cpe_name *cpe, const char *newval);
00227
00232 bool cpe_name_set_version(struct cpe_name *cpe, const char *newval);
00233
00238 bool cpe_name_set_update(struct cpe_name *cpe, const char *newval);
00239
00244 bool cpe_name_set_edition(struct cpe_name *cpe, const char *newval);
00245
00250 bool cpe_name_set_language(struct cpe_name *cpe, const char *newval);
00251
00256 bool cpe_name_set_sw_edition(struct cpe_name *cpe, const char *newval);
00257
00262 bool cpe_name_set_target_sw(struct cpe_name *cpe, const char *newval);
00263
00268 bool cpe_name_set_target_hw(struct cpe_name *cpe, const char *newval);
00269
00274 bool cpe_name_set_other(struct cpe_name *cpe, const char *newval);
00275
00276
00279
00290 bool cpe_name_match_one(const struct cpe_name *cpe, const struct cpe_name *against);
00291
00300 bool cpe_name_match_cpes(const struct cpe_name *name, size_t n, struct cpe_name **namelist);
00301
00310 int cpe_name_write(const struct cpe_name *cpe, FILE * f);
00311
00317 cpe_format_t cpe_name_get_format_of_str(const char *str);
00318
00324 bool cpe_name_check(const char *str);
00325
00336 int cpe_name_match_strs(const char *candidate, size_t n, char **targets);
00337
00343 const char * cpe_name_supported(void);
00344
00345
00362 typedef bool *(*cpe_check_fn) (const char*, const char*, const char*, void*);
00363
00371 typedef bool *(*cpe_dict_fn) (const struct cpe_name*, void*);
00372
00373 #endif