Debian Version API

The wpkg libdebpackages library includes an API to handle Debian versions. This API is written to work in C or C++ programs or any other language that supports C or C++ binding.

struct debian_version_t;
typedef struct debian_version_t    *debian_version_handle_t;

int validate_debian_version(
	const char *string,
	char *error_string,
	size_t error_size);

debian_version_handle_t string_to_debian_version(
	const char *string,
	char *error_string,
	size_t error_size);

int debian_version_to_string(
	const debian_version_handle_t debian_version,
	char *string,
	size_t string_size);

int debian_versions_compare(
	const debian_version_handle_t left,
	const debian_version_handle_t right);

void delete_debian_version(
	debian_version_handle_t debian_version);

Use the string_to_debian_version() to transform a string to a debian_version_handle_t pointer that you can then use to compare or canonicalize a version.

Once done with that handle, call the delete_debian_version() to delete it.

The validate_debian_version() can be used to check out a version without having to convert it in a Debian version handle.

Validation Example:

char err[256];
validate_debian_version("1.3", err, sizeof(err));

Comparison Example:

char err[256];
debian_version_handle_t *v1;
debian_version_handle_t *v2;
int r;

v1 = string_to_debian_version(vers1, err, sizeof(err));
v2 = string_to_debian_version(vers2, err, sizeof(err));
r = debian_versions_compare(v1, v2);
if(r == 0) // v1 == v2
if(r < 0) // v1 < v2
if(r > 0) // v1 > v2

Canonicalization Example:

char err[256];
debian_version_handle_t *v;
char out[256];

v = string_to_debian_version(vers, err, sizeof(err));
debian_version_to_string(v, out, sizeof(out));

Note that the debian_version_to_string() function ensures that out is always null terminated. If the size of the output buffer is at least as long as the input version string it should always fit.

Syndicate content