|
OpenVAS Libraries
8.0.8
|
Simple XML reader. More...
#include <assert.h>#include <errno.h>#include <fcntl.h>#include <glib.h>#include <string.h>#include <unistd.h>#include "xml.h"Data Structures | |
| struct | context_data_t |
| XML context. More... | |
Macros | |
| #define | G_LOG_DOMAIN "lib xml" |
| GLib log domain. More... | |
| #define | BUFFER_SIZE 1048576 |
| Size of the buffer for reading from the manager. More... | |
Functions | |
| entity_t | make_entity (const char *name, const char *text) |
| Create an entity. More... | |
| entities_t | next_entities (entities_t entities) |
| Return all the entities from an entities_t after the first. More... | |
| entity_t | first_entity (entities_t entities) |
| Return the first entity from an entities_t. More... | |
| entity_t | add_entity (entities_t *entities, const char *name, const char *text) |
| Add an XML entity to a tree of entities. More... | |
| void | free_entity (entity_t entity) |
| Free an entity, recursively. More... | |
| char * | entity_text (entity_t entity) |
| Get the text an entity. More... | |
| char * | entity_name (entity_t entity) |
| Get the name an entity. More... | |
| int | compare_entity_with_name (gconstpointer entity, gconstpointer name) |
| Compare a given name with the name of a given entity. More... | |
| entity_t | entity_child (entity_t entity, const char *name) |
| Get a child of an entity. More... | |
| const char * | entity_attribute (entity_t entity, const char *name) |
| Get an attribute of an entity. More... | |
| void | add_attributes (entity_t entity, const gchar **names, const gchar **values) |
| Add attributes from an XML callback to an entity. More... | |
| 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. More... | |
| void | handle_end_element (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error) |
| Handle the end of an XML element. More... | |
| void | handle_text (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error) |
| Handle additional text of an XML element. More... | |
| void | handle_error (GMarkupParseContext *context, GError *error, gpointer user_data) |
| Handle an OMP XML parsing error. More... | |
| 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. More... | |
| int | read_entity_and_string (gnutls_session_t *session, entity_t *entity, GString **string_return) |
| Try read an XML entity tree from the manager. More... | |
| int | read_entity_and_text (gnutls_session_t *session, entity_t *entity, char **text) |
| Read an XML entity tree from the manager. More... | |
| int | read_string (gnutls_session_t *session, GString **string) |
| Read entity and text. Free the entity immediately. More... | |
| int | try_read_entity (gnutls_session_t *session, int timeout, entity_t *entity) |
| Try read an XML entity tree from the manager. More... | |
| int | read_entity (gnutls_session_t *session, entity_t *entity) |
| Read an XML entity tree from the manager. More... | |
| int | parse_entity (const char *string, entity_t *entity) |
| Read an XML entity tree from a string. More... | |
| void | print_entity_to_string (entity_t entity, GString *string) |
| Print an XML entity tree to a GString, appending it if string is not. More... | |
| void | print_entity (FILE *stream, entity_t entity) |
| Print an XML entity. More... | |
| void | print_entity_format (entity_t entity, gpointer indent) |
| Print an XML entity to stdout, recusively printing its children. More... | |
| gboolean | compare_find_attribute (gpointer key, gpointer value, gpointer attributes2) |
| Look for a key-value pair in a hash table. More... | |
| int | compare_entities (entity_t entity1, entity_t entity2) |
| Compare two XML entity. More... | |
| int | xml_count_entities (entities_t entities) |
| Count the number of entities. More... | |
| void | xml_string_append (GString *xml, const char *format,...) |
| Append formatted escaped XML to a string. More... | |
Simple XML reader.
This is a generic XML interface. The key function is read_entity.
The openvas-manager tests use this interface to read and handle the XML returned by the manager. The OMP part of openvas-client does the same.
There are examples of using this interface in omp.c and in the openvas-manager tests.
| #define BUFFER_SIZE 1048576 |
Size of the buffer for reading from the manager.
| #define G_LOG_DOMAIN "lib xml" |
GLib log domain.
| void add_attributes | ( | entity_t | entity, |
| const gchar ** | names, | ||
| const gchar ** | values | ||
| ) |
Add attributes from an XML callback to an entity.
| [in] | entity | The entity. |
| [in] | names | List of attribute names. |
| [in] | values | List of attribute values. |
| entity_t add_entity | ( | entities_t * | entities, |
| const char * | name, | ||
| const char * | text | ||
| ) |
Add an XML entity to a tree of entities.
| [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. |
Compare two XML entity.
| [in] | entity1 | First entity. |
| [in] | entity2 | First entity. |
| int compare_entity_with_name | ( | gconstpointer | entity, |
| gconstpointer | name | ||
| ) |
Compare a given name with the name of a given entity.
| [in] | entity | Entity. |
| [in] | name | Name. |
| gboolean compare_find_attribute | ( | gpointer | key, |
| gpointer | value, | ||
| gpointer | attributes2 | ||
| ) |
Look for a key-value pair in a hash table.
| [in] | key | Key. |
| [in] | value | Value. |
| [in] | attributes2 | The hash table. |
| const char* entity_attribute | ( | entity_t | entity, |
| const char * | name | ||
| ) |
Get an attribute of an entity.
| [in] | entity | Entity. |
| [in] | name | Name of the attribute. |
Get a child of an entity.
| [in] | entity | Entity. |
| [in] | name | Name of the child. |
| char* entity_name | ( | entity_t | entity | ) |
Get the name an entity.
| [in] | entity | Entity. |
| char* entity_text | ( | entity_t | entity | ) |
Get the text an entity.
| [in] | entity | Entity. |
| entity_t first_entity | ( | entities_t | entities | ) |
Return the first entity from an entities_t.
| [in] | entities | The list of entities. |
| void free_entity | ( | entity_t | entity | ) |
Free an entity, recursively.
| [in] | entity | The entity, can be NULL. |
| void handle_end_element | ( | GMarkupParseContext * | context, |
| const gchar * | element_name, | ||
| gpointer | user_data, | ||
| GError ** | error | ||
| ) |
Handle the end of an XML element.
| [in] | context | Parser context. |
| [in] | element_name | XML element name. |
| [in] | user_data | Dummy parameter. |
| [in] | error | Error parameter. |
| void handle_error | ( | GMarkupParseContext * | context, |
| GError * | error, | ||
| gpointer | user_data | ||
| ) |
Handle an OMP XML parsing error.
| [in] | context | Parser context. |
| [in] | error | The error. |
| [in] | user_data | Dummy parameter. |
| 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.
| [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. |
| void handle_text | ( | GMarkupParseContext * | context, |
| const gchar * | text, | ||
| gsize | text_len, | ||
| gpointer | user_data, | ||
| GError ** | error | ||
| ) |
Handle additional text of an XML element.
| [in] | context | Parser context. |
| [in] | text | The text. |
| [in] | text_len | Length of the text. |
| [in] | user_data | Dummy parameter. |
| [in] | error | Error parameter. |
| entity_t make_entity | ( | const char * | name, |
| const char * | text | ||
| ) |
Create an entity.
| [in] | name | Name of the entity. Copied, freed by free_entity. |
| [in] | text | Text of the entity. Copied, freed by free_entity. |
| entities_t next_entities | ( | entities_t | entities | ) |
Return all the entities from an entities_t after the first.
| [in] | entities | The list of entities. |
| int parse_entity | ( | const char * | string, |
| entity_t * | entity | ||
| ) |
Read an XML entity tree from a string.
| [in] | string | Input string. |
| [out] | entity | Pointer to an entity tree. |
| void print_entity | ( | FILE * | stream, |
| entity_t | entity | ||
| ) |
Print an XML entity.
| [in] | entity | The entity. |
| [in] | stream | The stream to which to print. |
| void print_entity_format | ( | entity_t | entity, |
| gpointer | indent | ||
| ) |
Print an XML entity to stdout, recusively printing its children.
Does very basic indentation for pretty printing.
This function is used as the (callback) GFunc in g_slist_foreach.
| [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. |
| 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.
| [in] | entity | Entity tree to print to string. |
| [in,out] | string | String to write to (will be created if NULL). |
| int read_entity | ( | gnutls_session_t * | session, |
| entity_t * | entity | ||
| ) |
Read an XML entity tree from the manager.
| [in] | session | Pointer to GNUTLS session. |
| [out] | entity | Pointer to an entity tree. |
| int read_entity_and_string | ( | gnutls_session_t * | session, |
| entity_t * | entity, | ||
| GString ** | string_return | ||
| ) |
Try read an XML entity tree from the manager.
| [in] | session | Pointer to GNUTLS session. |
| [in] | timeout | Seconds or server idle time before giving up. 0 to wait forever. |
| [out] | entity | Pointer to an entity tree. |
| [out] | string | 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. |
| int read_entity_and_text | ( | gnutls_session_t * | session, |
| entity_t * | entity, | ||
| char ** | text | ||
| ) |
Read an XML entity tree from the manager.
| [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. |
| int read_string | ( | gnutls_session_t * | session, |
| GString ** | string | ||
| ) |
Read entity and text. Free the entity immediately.
| [in] | session | Pointer to GNUTLS session to read from. |
| [out] | string | Return location for the string. |
| int try_read_entity | ( | gnutls_session_t * | session, |
| int | timeout, | ||
| entity_t * | entity | ||
| ) |
Try read an XML entity tree from the manager.
| [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. |
| 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.
| [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 | 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. |
| int xml_count_entities | ( | entities_t | entities | ) |
Count the number of entities.
| [in] | entities | Entities. |
| void xml_string_append | ( | GString * | xml, |
| const char * | format, | ||
| ... | |||
| ) |
Append formatted escaped XML to a string.
| [in] | xml | XML string. |
| [in] | format | Format string. |
| [in] | ... | Arguments for format string. |
1.8.11