00001 00015 /* 00016 * Copyright 2008 Red Hat Inc., Durham, North Carolina. 00017 * All Rights Reserved. 00018 * 00019 * This library is free software; you can redistribute it and/or 00020 * modify it under the terms of the GNU Lesser General Public 00021 * License as published by the Free Software Foundation; either 00022 * version 2.1 of the License, or (at your option) any later version. 00023 * 00024 * This library is distributed in the hope that it will be useful, 00025 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00026 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00027 * Lesser General Public License for more details. 00028 * 00029 * You should have received a copy of the GNU Lesser General Public 00030 * License along with this library; if not, write to the Free Software 00031 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00032 * 00033 * Authors: 00034 * Lukas Kuklinek <lkuklinek@redhat.com> 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 00058 struct cpe_name; 00059 00069 struct cpe_name* cpe_name_new(const char *cpe); 00070 00076 void cpe_name_free(struct cpe_name * cpe); 00077 00082 cpe_part_t cpe_name_get_part(const struct cpe_name * cpe); 00083 00088 const char* cpe_name_get_vendor(const struct cpe_name * cpe); 00089 00094 const char* cpe_name_get_product(const struct cpe_name * cpe); 00095 00100 const char* cpe_name_get_version(const struct cpe_name * cpe); 00101 00106 const char* cpe_name_get_update(const struct cpe_name * cpe); 00107 00112 const char* cpe_name_get_edition(const struct cpe_name * cpe); 00113 00118 const char* cpe_name_get_language(const struct cpe_name * cpe); 00119 00125 bool cpe_name_match_one(const struct cpe_name* cpe, const struct cpe_name* against); 00126 00135 bool cpe_name_match_cpes(const struct cpe_name* name, size_t n, struct cpe_name** namelist); 00136 00145 char *cpe_name_get_uri(const struct cpe_name * cpe); 00146 00155 int cpe_name_write(const struct cpe_name * cpe, FILE * f); 00156 00162 bool cpe_name_check(const char *str); 00163 00174 int cpe_name_match_strs(const char *candidate, size_t n, char **targets); 00175 00176 00177 00178 #endif /* _CPEURI_H_ */