xmlutils.c File Reference

Simple XML reader. More...

`#include "xmlutils.h"`
`#include <assert.h>`
`#include <errno.h>`
`#include <fcntl.h>`
`#include <glib.h>`
`#include <glib/gtypes.h>`
`#include <libxml/parser.h>`
`#include <libxml/tree.h>`
`#include <string.h>`
`#include <time.h>`
`#include <unistd.h>`

Go to the source code of this file.

## Macros

#define | G_LOG_DOMAIN "libgvm util"
| GLib logging domain.
#define | BUFFER_SIZE 1048576
| Size of the buffer for reading from the manager.
#define | XML_FILE_BUFFER_SIZE 1048576

## Functions

static entity_t | make_entity (const char *name, const char *text)
| Create an entity.
entities_t | next_entities (entities_t entities)
| Return all the entities from an entities_t after the first.
entity_t | first_entity (entities_t entities)
| Return the first entity from an entities_t.
entity_t | add_entity (entities_t *entities, const char *name, const char *text)
| Add an XML entity to a tree of entities.
void | free_entity (entity_t entity)
| Free an entity, recursively.
char * | entity_text (entity_t entity)
| Get the text an entity.
char * | entity_name (entity_t entity)
| Get the name an entity.
static int | compare_entity_with_name (gconstpointer entity, gconstpointer name)
| Compare a given name with the name of a given entity.
entity_t | entity_child (entity_t entity, const char *name)
| Get a child of an entity.
const char * | entity_attribute (entity_t entity, const char *name)
| Get an attribute of an entity.
static void | add_attributes (entity_t entity, const gchar **names, const gchar **values)
| Add attributes from an XML callback to an entity.
static void | ignore_start_element (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)
| Handle the start of an OMP XML element.
static void | handle_start_element (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)
| Handle the start of an OMP XML element.
void | xml_handle_start_element (context_data_t *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values)
| Handle the start of an OMP XML element.
static void | ignore_end_element (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
| Handle the end of an XML element.
static void | handle_end_element (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
| Handle the end of an XML element.
void | xml_handle_end_element (context_data_t *context, const gchar *element_name)
| Handle the end of an XML element.
static void | ignore_text (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
| Handle additional text of an XML element.
static void | handle_text (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
| Handle additional text of an XML element.
void | xml_handle_text (context_data_t *context, const gchar *text, gsize text_len)
| Handle additional text of an XML element.
static void | handle_error (GMarkupParseContext *context, GError *error, gpointer user_data)
| Handle an OMP XML parsing error.
int | try_read_entity_and_string (gnutls_session_t *session, int timeout, entity_t *entity, GString **string_return)
| Try read an XML entity tree from the manager.
static int | try_read_string (gnutls_session_t *session, int timeout, GString **string_return)
| Try read a response from a TLS session.
static int | try_read_string_s (int socket, int timeout, GString **string_return)
| Try read an XML entity tree from the socket.
static int | try_read_entity_and_string_s (int socket, int timeout, entity_t *entity, GString **string_return)
| Try read an XML entity tree from the socket.
int | read_entity_and_string (gnutls_session_t *session, entity_t *entity, GString **string_return)
| Try read an XML entity tree from the manager.
int | read_entity_and_string_c (gvm_connection_t *connection, entity_t *entity, GString **string_return)
| Try read an XML entity tree from the manager.
int | read_entity_and_text (gnutls_session_t *session, entity_t *entity, char **text)
| Read an XML entity tree from the manager.
int | read_entity_and_text_c (gvm_connection_t *connection, entity_t *entity, char **text)
| Read an XML entity tree from the manager.
int | read_text_c (gvm_connection_t *connection, char **text)
| Read text from the server.
int | read_string (gnutls_session_t *session, GString **string)
| Read entity and text. Free the entity immediately.
int | read_string_c (gvm_connection_t *connection, GString **string)
| Read entity and text. Free the entity immediately.
int | try_read_entity (gnutls_session_t *session, int timeout, entity_t *entity)
| Try read an XML entity tree from the manager.
int | try_read_entity_c (gvm_connection_t *connection, int timeout, entity_t *entity)
| Try read an XML entity tree from the manager.
int | read_entity (gnutls_session_t *session, entity_t *entity)
| Read an XML entity tree from the manager.
int | read_entity_s (int socket, entity_t *entity)
| Read an XML entity tree from the socket.
int | read_entity_c (gvm_connection_t *connection, entity_t *entity)
| Read an XML entity tree from the manager.
int | parse_entity (const char *string, entity_t *entity)
| Read an XML entity tree from a string.
static void | foreach_print_entity_to_string (gpointer entity, gpointer string)
| Print an XML entity for g_slist_foreach to a GString.
static void | foreach_print_attribute_to_string (gpointer name, gpointer value, gpointer string)
| Print an XML attribute for g_hash_table_foreach to a GString.
void | print_entity_to_string (entity_t entity, GString *string)
| Print an XML entity tree to a GString, appending it if string is not.
static void | foreach_print_entity (gpointer entity, gpointer stream)
| Print an XML entity for g_slist_foreach.
static void | foreach_print_attribute (gpointer name, gpointer value, gpointer stream)
| Print an XML attribute for g_hash_table_foreach.
void | print_entity (FILE *stream, entity_t entity)
| Print an XML entity.
static void | foreach_print_attribute_format (gpointer name, gpointer value, gpointer none)
| Print an XML attribute for g_hash_table_foreach to stdout.
void | print_entity_format (entity_t entity, gpointer indent)
| Print an XML entity to stdout, recursively printing its children.
static gboolean | compare_find_attribute (gpointer key, gpointer value, gpointer attributes2)
| Look for a key-value pair in a hash table.
int | compare_entities (entity_t entity1, entity_t entity2)
| Compare two XML entity.
int | xml_count_entities (entities_t entities)
| Count the number of entities.
void | xml_string_append (GString *xml, const char *format,...)
| Append formatted escaped XML to a string.
static void | xml_search_handle_start_element (GMarkupParseContext *ctx, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data, GError **error)
| Handle the opening tag of an element in an XML search.
int | find_element_in_xml_file (gchar *file_path, gchar *find_element, GHashTable *find_attributes)
| Tests if an XML file contains an element with given attributes.
int | parse_element (const gchar *string, element_t *element)
| Read an XML element tree from a string.
void | element_free (element_t element)
| Free an entire element tree.
const gchar * | element_name (element_t element)
| Get the name of an element.
static element_t | find_child (element_t element, const gchar *name)
| Find child in an element.
element_t | element_child (element_t element, const gchar *name)
| Get a child of an element.
gchar * | element_text (element_t element)
| Get text of an element.
gchar * | element_attribute (element_t element, const gchar *name)
| Get an attribute of an element.
element_t | element_first_child (element_t element)
| Get the first child of an element.
element_t | element_next (element_t element)
| Get the next sibling of an element.
gchar * | element_to_string (element_t element)
| Output the XML element as a string.
void | print_element_to_string (element_t element, GString *string)
| Print an XML element tree to a GString, appending it if string is not.

## Detailed Description

Simple XML reader.

This is a generic XML interface. The key function is read_entity.

There are examples of using this interface in omp.c.

## Macro Definition Documentation

## BUFFER_SIZE

#define BUFFER_SIZE 1048576

Size of the buffer for reading from the manager.

## G_LOG_DOMAIN

#define G_LOG_DOMAIN "libgvm util"

GLib logging domain.

## XML_FILE_BUFFER_SIZE

#define XML_FILE_BUFFER_SIZE 1048576

## Function Documentation

## add_attributes()

static void add_attributes | ( | entity_t | entity,
|  | const gchar ** | names,
|  | const gchar ** | values
| ) |  |

static

Add attributes from an XML callback to an entity.

Parameters

  [in] | entity | The entity.
  [in] | names | List of attribute names.
  [in] | values | List of attribute values.

## add_entity()

entity_t add_entity | ( | entities_t * | entities,
|  | const char * | name,
|  | const char * | text
| ) |  |

Add an XML entity to a tree of entities.

Parameters

  [in] | entities | The tree of entities
  [in] | name | Name of the entity. Copied, copy is freed by free_entity.
  [in] | text | Text of the entity. Copied, copy is freed by free_entity.

Returns
  The new entity.

## compare_entities()

int compare_entities | ( | entity_t | entity1,
|  | entity_t | entity2
| ) |  |

Compare two XML entity.

Parameters

  [in] | entity1 | First entity.
  [in] | entity2 | First entity.

Returns
  0 if equal, 1 otherwise.

## compare_entity_with_name()

static int compare_entity_with_name | ( | gconstpointer | entity,
|  | gconstpointer | name
| ) |  |

static

Compare a given name with the name of a given entity.

Parameters

  [in] | entity | Entity.
  [in] | name | Name.

Returns
  Zero if entity name matches name, otherwise a positive or negative number as from strcmp.

## compare_find_attribute()

static gboolean compare_find_attribute | ( | gpointer | key,
|  | gpointer | value,
|  | gpointer | attributes2
| ) |  |

static

Look for a key-value pair in a hash table.

Parameters

  [in] | key | Key.
  [in] | value | Value.
  [in] | attributes2 | The hash table.

Returns
  FALSE if found, TRUE otherwise.

## element_attribute()

gchar * element_attribute | ( | element_t | element,
|  | const gchar * | name
| ) |  |

Get an attribute of an element.

Parameters

  [in] | element | Element.
  [in] | name | Name of the attribute.

Returns
  Attribute value if found, else NULL. Caller must g_free.

## element_child()

element_t element_child | ( | element_t | element,
|  | const gchar * | name
| ) |  |

Get a child of an element.

Parameters

  [in] | element | Element.
  [in] | name | Name of the child.

Returns
  Element if found, else NULL.

## element_first_child()

element_t element_first_child | ( | element_t | element | ) |

Get the first child of an element.

Parameters

  [in] | element | Element.

Returns
  Child if there is one, else NULL.

## element_free()

void element_free | ( | element_t | element | ) |

Free an entire element tree.

Beware that this frees the entire tree that element is part of, including any ancestors.

Parameters

  [in] | element | Element.

## element_name()

const gchar * element_name | ( | element_t | element | ) |

Get the name of an element.

Parameters

  [in] | element | Element.

Returns
  Element name.

## element_next()

element_t element_next | ( | element_t | element | ) |

Get the next sibling of an element.

Parameters

  [in] | element | Element.

Returns
  Next sibling element if there is one, else NULL.

## element_text()

gchar * element_text | ( | element_t | element | ) |

Get text of an element.

If element is not NULL then the return is guaranteed to be a string. So if the caller has NULL checked element then there is no need for the caller to NULL check the return.

Parameters

  [in] | element | Element.

Returns
  NULL if element is NULL, else the text. Caller must g_free.

## element_to_string()

gchar * element_to_string | ( | element_t | element | ) |

Output the XML element as a string.

The generated XML string will include namespace definitions from ancestor elements.

Parameters

  [in] | element | The element to output as a string.

Returns
  The newly allocated XML string.

## entity_attribute()

const char * entity_attribute | ( | entity_t | entity,
|  | const char * | name
| ) |  |

Get an attribute of an entity.

Parameters

  [in] | entity | Entity.
  [in] | name | Name of the attribute.

Returns
  Attribute if found, else NULL.

## entity_child()

entity_t entity_child | ( | entity_t | entity,
|  | const char * | name
| ) |  |

Get a child of an entity.

Parameters

  [in] | entity | Entity.
  [in] | name | Name of the child.

Returns
  Entity if found, else NULL.

## entity_name()

char * entity_name | ( | entity_t | entity | ) |

Get the name an entity.

Parameters

  [in] | entity | Entity.

Returns
  Entity name, which is freed by free_entity.

## entity_text()

char * entity_text | ( | entity_t | entity | ) |

Get the text an entity.

Parameters

  [in] | entity | Entity.

Returns
  Entity text, which is freed by free_entity.

## find_child()

static element_t find_child | ( | element_t | element,
|  | const gchar * | name
| ) |  |

static

Find child in an element.

Parameters

  [in] | element | Element.
  [in] | name | Name of child.

Returns
  Child if found, else NULL.

## find_element_in_xml_file()

int find_element_in_xml_file | ( | gchar * | file_path,
|  | gchar * | find_element,
|  | GHashTable * | find_attributes
| ) |  |

Tests if an XML file contains an element with given attributes.

Parameters

  [in] | file_path | Path of the XML file.
  [in] | find_element | Name of the element to find.
  [in] | find_attributes | GHashTable of attributes to find.

Returns
  1 if element was found, 0 if not.

## first_entity()

entity_t first_entity | ( | entities_t | entities | ) |

Return the first entity from an entities_t.

Parameters

  [in] | entities | The list of entities.

Returns
  The first entity.

## foreach_print_attribute()

static void foreach_print_attribute | ( | gpointer | name,
|  | gpointer | value,
|  | gpointer | stream
| ) |  |

static

Print an XML attribute for g_hash_table_foreach.

Parameters

  [in] | name | The attribute name.
  [in] | value | The attribute value.
  [in] | stream | The stream to which to print.

## foreach_print_attribute_format()

static void foreach_print_attribute_format | ( | gpointer | name,
|  | gpointer | value,
|  | gpointer | none
| ) |  |

static

Print an XML attribute for g_hash_table_foreach to stdout.

Parameters

  [in] | name | The attribute name.
  [in] | value | The attribute value.
  [in] | none | (ignored).

## foreach_print_attribute_to_string()

static void foreach_print_attribute_to_string | ( | gpointer | name,
|  | gpointer | value,
|  | gpointer | string
| ) |  |

static

Print an XML attribute for g_hash_table_foreach to a GString.

Parameters

  [in] | name | The attribute name.
  [in] | value | The attribute value.
  [in] | string | The string to which to print.

## foreach_print_entity()

static void foreach_print_entity | ( | gpointer | entity,
|  | gpointer | stream
| ) |  |

static

Print an XML entity for g_slist_foreach.

Parameters

  [in] | entity | The entity, as a gpointer.
  [in] | stream | The stream to which to print, as a gpointer.

## foreach_print_entity_to_string()

static void foreach_print_entity_to_string | ( | gpointer | entity,
|  | gpointer | string
| ) |  |

static

Print an XML entity for g_slist_foreach to a GString.

Parameters

  [in] | entity | The entity, as a gpointer.
  [in] | string | The stream to which to print, as a gpointer.

## free_entity()

void free_entity | ( | entity_t | entity | ) |

Free an entity, recursively.

Parameters

  [in] | entity | The entity, can be NULL.

## handle_end_element()

static void handle_end_element | ( | GMarkupParseContext * | context,
|  | const gchar * | element_name,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle the end of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## handle_error()

static void handle_error | ( | GMarkupParseContext * | context,
|  | GError * | error,
|  | gpointer | user_data
| ) |  |

static

Handle an OMP XML parsing error.

Parameters

  [in] | context | Parser context.
  [in] | error | The error.
  [in] | user_data | Dummy parameter.

## handle_start_element()

static void handle_start_element | ( | GMarkupParseContext * | context,
|  | const gchar * | element_name,
|  | const gchar ** | attribute_names,
|  | const gchar ** | attribute_values,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle the start of an OMP XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.
  [in] | attribute_names | XML attribute name.
  [in] | attribute_values | XML attribute values.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## handle_text()

static void handle_text | ( | GMarkupParseContext * | context,
|  | const gchar * | text,
|  | gsize | text_len,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle additional text of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | text | The text.
  [in] | text_len | Length of the text.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## ignore_end_element()

static void ignore_end_element | ( | GMarkupParseContext * | context,
|  | const gchar * | element_name,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle the end of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## ignore_start_element()

static void ignore_start_element | ( | GMarkupParseContext * | context,
|  | const gchar * | element_name,
|  | const gchar ** | attribute_names,
|  | const gchar ** | attribute_values,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle the start of an OMP XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.
  [in] | attribute_names | XML attribute name.
  [in] | attribute_values | XML attribute values.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## ignore_text()

static void ignore_text | ( | GMarkupParseContext * | context,
|  | const gchar * | text,
|  | gsize | text_len,
|  | gpointer | user_data,
|  | GError ** | error
| ) |  |

static

Handle additional text of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | text | The text.
  [in] | text_len | Length of the text.
  [in] | user_data | Dummy parameter.
  [in] | error | Error parameter.

## make_entity()

static entity_t make_entity | ( | const char * | name,
|  | const char * | text
| ) |  |

static

Create an entity.

Parameters

  [in] | name | Name of the entity. Copied, freed by free_entity.
  [in] | text | Text of the entity. Copied, freed by free_entity.

Returns
  A newly allocated entity.

## next_entities()

entities_t next_entities | ( | entities_t | entities | ) |

Return all the entities from an entities_t after the first.

Parameters

  [in] | entities | The list of entities.

Returns
  All the entities that follow the first.

## parse_element()

int parse_element | ( | const gchar * | string,
|  | element_t * | element
| ) |  |

Read an XML element tree from a string.

Caller must not free string until caller is finished using element.

Parameters

  [in] | string | Input string.
  [out] | element | Location for parsed element tree, or NULL if not required. If given, set to NULL on failure. Free with element_free.

Returns
  0 success, -1 read error, -2 parse error, -3 XML ended prematurely, -4 setup error.

## parse_entity()

int parse_entity | ( | const char * | string,
|  | entity_t * | entity
| ) |  |

Read an XML entity tree from a string.

Parameters

  [in] | string | Input string.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 XML ended prematurely.

## print_element_to_string()

void print_element_to_string | ( | element_t | element,
|  | GString * | string
| ) |  |

Print an XML element tree to a GString, appending it if string is not.

empty.

Parameters

  [in] | element | Element tree to print to string.
  [in,out] | string | String to write to.

## print_entity()

void print_entity | ( | FILE * | stream,
|  | entity_t | entity
| ) |  |

Print an XML entity.

Parameters

  [in] | entity | The entity.
  [in] | stream | The stream to which to print.

## print_entity_format()

void print_entity_format | ( | entity_t | entity,
|  | gpointer | indent
| ) |  |

Print an XML entity to stdout, recursively printing its children.

Does very basic indentation for pretty printing.

This function is used as the (callback) GFunc in g_slist_foreach.

Parameters

  [in] | entity | The entity.
  [in] | indent | Indentation level, indentation width is 2 spaces. Use GINT_TO_POINTER to convert a integer value when passing this parameter.

## print_entity_to_string()

void print_entity_to_string | ( | entity_t | entity,
|  | GString * | string
| ) |  |

Print an XML entity tree to a GString, appending it if string is not.

empty.

Parameters

  [in] | entity | Entity tree to print to string.
  [in,out] | string | String to write to.

## read_entity()

int read_entity | ( | gnutls_session_t * | session,
|  | entity_t * | entity
| ) |  |

Read an XML entity tree from the manager.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_and_string()

int read_entity_and_string | ( | gnutls_session_t * | session,
|  | entity_t * | entity,
|  | GString ** | string_return
| ) |  |

Try read an XML entity tree from the manager.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [out] | entity | Pointer to an entity tree.
  [out] | string_return | An optional return location for the text read from the session. If NULL then it simply remains NULL. If a pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it points to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_and_string_c()

int read_entity_and_string_c | ( | gvm_connection_t * | connection,
|  | entity_t * | entity,
|  | GString ** | string_return
| ) |  |

Try read an XML entity tree from the manager.

Parameters

  [in] | connection | Connection.
  [out] | entity | Pointer to an entity tree.
  [out] | string_return | An optional return location for the text read from the session. If NULL then it simply remains NULL. If a pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it points to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_and_text()

int read_entity_and_text | ( | gnutls_session_t * | session,
|  | entity_t * | entity,
|  | char ** | text
| ) |  |

Read an XML entity tree from the manager.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [out] | entity | Pointer to an entity tree.
  [out] | text | A pointer to a pointer, at which to store the address of a newly allocated string holding the text read from the session, if the text is required, else NULL.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_and_text_c()

int read_entity_and_text_c | ( | gvm_connection_t * | connection,
|  | entity_t * | entity,
|  | char ** | text
| ) |  |

Read an XML entity tree from the manager.

Parameters

  [in] | connection | Connection.
  [out] | entity | Entity tree.
  [out] | text | A pointer to a pointer, at which to store the address of a newly allocated string holding the text read from the session, if the text is required, else NULL.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_c()

int read_entity_c | ( | gvm_connection_t * | connection,
|  | entity_t * | entity
| ) |  |

Read an XML entity tree from the manager.

Parameters

  [in] | connection | Connection.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_entity_s()

int read_entity_s | ( | int | socket,
|  | entity_t * | entity
| ) |  |

Read an XML entity tree from the socket.

Parameters

  [in] | socket | Socket to read from.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_string()

int read_string | ( | gnutls_session_t * | session,
|  | GString ** | string
| ) |  |

Read entity and text. Free the entity immediately.

Parameters

  [in] | session | Pointer to GNUTLS session to read from.
  [out] | string | Return location for the string.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_string_c()

int read_string_c | ( | gvm_connection_t * | connection,
|  | GString ** | string
| ) |  |

Read entity and text. Free the entity immediately.

Parameters

  [in] | connection | Connection.
  [out] | string | Return location for the string.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file.

## read_text_c()

int read_text_c | ( | gvm_connection_t * | connection,
|  | char ** | text
| ) |  |

Read text from the server.

Parameters

  [in] | connection | Connection.
  [out] | text | A pointer to a pointer, at which to store the address of a newly allocated string holding the text read from the session.

Returns
  0 success, -1 read error, -2 argument error.

## try_read_entity()

int try_read_entity | ( | gnutls_session_t * | session,
|  | int | timeout,
|  | entity_t * | entity
| ) |  |

Try read an XML entity tree from the manager.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file, -4 timeout.

## try_read_entity_and_string()

int try_read_entity_and_string | ( | gnutls_session_t * | session,
|  | int | timeout,
|  | entity_t * | entity,
|  | GString ** | string_return
| ) |  |

Try read an XML entity tree from the manager.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | entity | Pointer to an entity tree.
  [out] | string_return | An optional return location for the text read from the session. If NULL then it simply remains NULL. If a pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it points to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file, -4 timeout, -5 null buffer.

## try_read_entity_and_string_s()

static int try_read_entity_and_string_s | ( | int | socket,
|  | int | timeout,
|  | entity_t * | entity,
|  | GString ** | string_return
| ) |  |

static

Try read an XML entity tree from the socket.

Parameters

  [in] | socket | Socket to read from.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | entity | Pointer to an entity tree.
  [out] | string_return | An optional return location for the text read from the session. If NULL then it simply remains NULL. If a pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it points to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file, -4 timeout, -5 null buffer.

## try_read_entity_c()

int try_read_entity_c | ( | gvm_connection_t * | connection,
|  | int | timeout,
|  | entity_t * | entity
| ) |  |

Try read an XML entity tree from the manager.

Parameters

  [in] | connection | Connection.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | entity | Pointer to an entity tree.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file, -4 timeout.

## try_read_string()

static int try_read_string | ( | gnutls_session_t * | session,
|  | int | timeout,
|  | GString ** | string_return
| ) |  |

static

Try read a response from a TLS session.

Parameters

  [in] | session | Pointer to GNUTLS session.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | string_return | An optional return location for the text read from the session.

If string_return is NULL then it simply remains NULL. If it is pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it must point to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -4 timeout, -5 null buffer.

## try_read_string_s()

static int try_read_string_s | ( | int | socket,
|  | int | timeout,
|  | GString ** | string_return
| ) |  |

static

Try read an XML entity tree from the socket.

Parameters

  [in] | socket | Socket to read from.
  [in] | timeout | Server idle time before giving up, in seconds. 0 to wait forever.
  [out] | entity | Pointer to an entity tree.
  [out] | string_return | An optional return location for the text read from the session. If NULL then it simply remains NULL. If a pointer to NULL then it points to a freshly allocated GString on successful return. Otherwise it points to an existing GString onto which the text is appended.

Returns
  0 success, -1 read error, -2 parse error, -3 end of file, -4 timeout, -5 null buffer.

## xml_count_entities()

int xml_count_entities | ( | entities_t | entities | ) |

Count the number of entities.

Parameters

  [in] | entities | Entities.

Returns
  Number of entities.

## xml_handle_end_element()

void xml_handle_end_element | ( | context_data_t * | context,
|  | const gchar * | element_name
| ) |  |

Handle the end of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.

## xml_handle_start_element()

void xml_handle_start_element | ( | context_data_t * | context,
|  | const gchar * | element_name,
|  | const gchar ** | attribute_names,
|  | const gchar ** | attribute_values
| ) |  |

Handle the start of an OMP XML element.

Parameters

  [in] | context | Parser context.
  [in] | element_name | XML element name.
  [in] | attribute_names | XML attribute name.
  [in] | attribute_values | XML attribute values.

## xml_handle_text()

void xml_handle_text | ( | context_data_t * | context,
|  | const gchar * | text,
|  | gsize | text_len
| ) |  |

Handle additional text of an XML element.

Parameters

  [in] | context | Parser context.
  [in] | text | The text.
  [in] | text_len | Length of the text.

## xml_search_handle_start_element()

static void xml_search_handle_start_element | ( | GMarkupParseContext * | ctx,
|  | const gchar * | element_name,
|  | const gchar ** | attribute_names,
|  | const gchar ** | attribute_values,
|  | gpointer | data,
|  | GError ** | error
| ) |  |

static

Handle the opening tag of an element in an XML search.

Parameters

  [in] | ctx | The parse context.
  [in] | element_name | The name of the element.
  [in] | attribute_names | NULL-terminated array of attribute names.
  [in] | attribute_values | NULL-terminated array of attribute values.
  [in] | data | The search data struct.
  [out] | error | Pointer to error output location.

## xml_string_append()

void xml_string_append | ( | GString * | xml,
|  | const char * | format,
|  |  | ...
| ) |  |

Append formatted escaped XML to a string.

Parameters

  [in] | xml | XML string.
  [in] | format | Format string.
  [in] | ... | Arguments for format string.

Returns
  Result of XSL transformation.