CPE URIs
CPE

## Files

file | cpe_name.h
| Interface to Common Platform Enumeration (CPE) URI.

## Data Structures

struct | cpe_name
| Structure holding Common Platform Enumeration URI data. More...

## Enumerations

enum | cpe_part_t { CPE_PART_NONE, CPE_PART_HW, CPE_PART_OS, CPE_PART_APP }
| enumeration of possible CPE parts More...
enum | cpe_format_t { CPE_FORMAT_UNKNOWN, CPE_FORMAT_URI, CPE_FORMAT_STRING, CPE_FORMAT_WFN }

## Functions

struct cpe_name * | cpe_name::cpe_name_new (const char *cpe)
| Create a new CPE structure from string cpe. More...
struct cpe_name * | cpe_name::cpe_name_clone (struct cpe_name *old_name)
| Clone CPE Name. More...
void | cpe_name::cpe_name_free (struct cpe_name *cpe)
| Destructor. More...

## Getters

Return value is pointer to structure's member. Do not free unless you null the pointer in the structure. Use remove function otherwise.
cpe_format_t | cpe_name::cpe_name_get_format (const struct cpe_name *cpe)
| Get how the CPE name was loaded and how it should be saved.
cpe_part_t | cpe_name::cpe_name_get_part (const struct cpe_name *cpe)
| Get CPE name part type field.
const char * | cpe_name::cpe_name_get_vendor (const struct cpe_name *cpe)
| Get CPE name vendor field.
const char * | cpe_name::cpe_name_get_product (const struct cpe_name *cpe)
| Get CPE name product field.
const char * | cpe_name::cpe_name_get_version (const struct cpe_name *cpe)
| Get CPE name version field.
const char * | cpe_name::cpe_name_get_update (const struct cpe_name *cpe)
| Get CPE name update field.
const char * | cpe_name::cpe_name_get_edition (const struct cpe_name *cpe)
| Get CPE name edition field.
const char * | cpe_name::cpe_name_get_language (const struct cpe_name *cpe)
| Get CPE name language field.
const char * | cpe_name::cpe_name_get_sw_edition (const struct cpe_name *cpe)
| Get CPE name sw_edition field.
const char * | cpe_name::cpe_name_get_target_sw (const struct cpe_name *cpe)
| Get CPE name target_sw field.
const char * | cpe_name::cpe_name_get_target_hw (const struct cpe_name *cpe)
| Get CPE name target_hw field.
const char * | cpe_name::cpe_name_get_other (const struct cpe_name *cpe)
| Get CPE name other field.
char * | cpe_name::cpe_name_get_as_format (const struct cpe_name *cpe, cpe_format_t format)
| Return CPE URI as a new string in specified format. More...
char * | cpe_name::cpe_name_get_as_str (const struct cpe_name *cpe)
| Return CPE URI as a new string in the format in which it was loaded. More...

## Setters

For lists use add functions. Parameters of set functions are duplicated in memory and need to be freed by caller.
bool | cpe_name::cpe_name_set_format (struct cpe_name *cpe, cpe_format_t newval)
| Set how the CPE name was loaded and how it should be saved.
bool | cpe_name::cpe_name_set_part (struct cpe_name *cpe, cpe_part_t newval)
| Set CPE name part type field.
bool | cpe_name::cpe_name_set_vendor (struct cpe_name *cpe, const char *newval)
| Set CPE name vendor field.
bool | cpe_name::cpe_name_set_product (struct cpe_name *cpe, const char *newval)
| Set CPE name product field.
bool | cpe_name::cpe_name_set_version (struct cpe_name *cpe, const char *newval)
| Set CPE name version field.
bool | cpe_name::cpe_name_set_update (struct cpe_name *cpe, const char *newval)
| Set CPE name update field.
bool | cpe_name::cpe_name_set_edition (struct cpe_name *cpe, const char *newval)
| Set CPE name edition field.
bool | cpe_name::cpe_name_set_language (struct cpe_name *cpe, const char *newval)
| Set CPE name language field.
bool | cpe_name::cpe_name_set_sw_edition (struct cpe_name *cpe, const char *newval)
| Set CPE name sw_edition field.
bool | cpe_name::cpe_name_set_target_sw (struct cpe_name *cpe, const char *newval)
| Set CPE name target_sw field.
bool | cpe_name::cpe_name_set_target_hw (struct cpe_name *cpe, const char *newval)
| Set CPE name target_hw field.
bool | cpe_name::cpe_name_set_other (struct cpe_name *cpe, const char *newval)
| Set CPE name other field.

## Evaluators

cpe_format_t | cpe_name_get_format_of_str (const char *str)
| Looks at given string and returns format it is in. More...
bool | cpe_name::cpe_name_match_one (const struct cpe_name *cpe, const struct cpe_name *against)
| Check if candidate CPE cpe matches CPE against according to CPE specification v 2.1.
bool | cpe_name::cpe_name_match_cpes (const struct cpe_name *name, size_t n, struct cpe_name **namelist)
| Check if CPE name matches any CPE in namelist. More...
int | cpe_name::cpe_name_write (const struct cpe_name *cpe, FILE *f)
| Write CPE URI cpe to file a descriptor f. More...
bool | cpe_name::cpe_name_check (const char *str)
| Checks whether str is valid CPE string (in any supported format). More...
int | cpe_name::cpe_name_match_strs (const char *candidate, size_t n, char **targets)
| Match CPE URI candidate against list of n CPE URIs given by targets. More...
const char * | cpe_name::cpe_name_supported (void)
| Get supported version of CPE uri XML. More...

## Detailed Description

## Enumeration Type Documentation

enum cpe_format_t

Enumerator
CPE_FORMAT_UNKNOWN | can't be serialized, is usually used to signal errors
CPE_FORMAT_URI | available in all CPE versions, default in CPE 2.2 and previous
CPE_FORMAT_STRING | available in CPE 2.3 and newer
CPE_FORMAT_WFN | available in CPE 2.3 and newer versions, default in CPE 2.3 and newer

enum cpe_part_t

enumeration of possible CPE parts

Enumerator
CPE_PART_NONE | no part specified
CPE_PART_HW | hardware
CPE_PART_OS | operating system
CPE_PART_APP | application

## Function Documentation

bool cpe_name_check | ( | const char * | str | ) |

Checks whether str is valid CPE string (in any supported format).

Parameters

  str | string to be validated

struct cpe_name * cpe_name_clone | ( | struct cpe_name * | old_name | ) |

read

Clone CPE Name.

Parameters

  old_name | CPE name

void cpe_name_free | ( | struct cpe_name * | cpe | ) |

Destructor.

Frees any used resources and safely destroys cpe.

Parameters

  cpe | CPE to be deleted

char * cpe_name_get_as_format | ( | const struct cpe_name * | cpe,
|  | cpe_format_t | format
| ) |  |

Return CPE URI as a new string in specified format.

Note
  Returned string is newly allocated and is caller's responsibility to free it.

Parameters

  cpe | CPE to be converted
  format | Which format should the string be in

Returns
  CPE URI as string

Return values

  NULL | on failure

char * cpe_name_get_as_str | ( | const struct cpe_name * | cpe | ) |

Return CPE URI as a new string in the format in which it was loaded.

Note
  Returned string is newly allocated and is caller's responsibility to free it.

Parameters

  cpe | CPE to be converted

Returns
  CPE URI as string

Return values

  NULL | on failure

cpe_format_t cpe_name_get_format_of_str | ( | const char * | str | ) |

Looks at given string and returns format it is in.

CPE_FORMAT_UNKNOWN is used in case of errors

bool cpe_name_match_cpes | ( | const struct cpe_name * | name,
|  | size_t | n,
|  | struct cpe_name ** | namelist
| ) |  |

Check if CPE name matches any CPE in namelist.

Parameters

  name | name to be looked-up
  n | number of items in namelist
  namelist | list of names to search in

Returns
  true if name was found within namelist

int cpe_name_match_strs | ( | const char * | candidate,
|  | size_t | n,
|  | char ** | targets
| ) |  |

Match CPE URI candidate against list of n CPE URIs given by targets.

Parameters

  candidate | candidarte CPE URI as string
  n | number of items in targets
  targets | list of CPE URIs to be candidate matched against

Returns
  index of first URI in targets, that matched

Return values

  -1 | on mismatch
  -2 | invalid CPE URI was given as parameter

struct cpe_name * cpe_name_new | ( | const char * | cpe | ) |

read

Create a new CPE structure from string cpe.

Note
  If cpe is NULL, empty cpe will be created.

Parameters

  cpe | CPE URI string to be parsed

Returns
  new structure holding parsed data

Return values

  NULL | on failure

const char * cpe_name_supported | ( | void |  | ) |

Get supported version of CPE uri XML.

Returns
  version of XML file format

int cpe_name_write | ( | const struct cpe_name * | cpe,
|  | FILE * | f
| ) |  |

Write CPE URI cpe to file a descriptor f.

Parameters

  cpe | cpe to write
  f | file descriptor to write CPE URI to

Returns
  number of written characters

Return values

  <0 | on failure