Greenbone Vulnerability Management Libraries 22.8.0
xmlutils.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009-2023 Greenbone AG
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
11#ifndef _GVM_XMLUTILS_H
12#define _GVM_XMLUTILS_H
13
14#include "serverutils.h"
15
16#include <glib.h>
17#include <gnutls/gnutls.h>
18#include <stdio.h>
19
26typedef struct
27{
28 GSList *first;
29 GSList *current;
30 gboolean done;
32
33void
34xml_handle_start_element (context_data_t *, const gchar *, const gchar **,
35 const gchar **);
36
37void
38xml_handle_end_element (context_data_t *, const gchar *);
39
40void
41xml_handle_text (context_data_t *, const gchar *, gsize);
42
46typedef GSList *entities_t;
47
52{
53 char *name;
54 char *text;
55 GHashTable *attributes;
57};
58typedef struct entity_s *entity_t;
59
63typedef struct
64{
65 int found;
66 int done;
67 gchar *find_element;
68 GHashTable *find_attributes;
70
72
74
76add_entity (entities_t *, const char *, const char *);
77
79
81entity_child (entity_t, const char *);
82
83const char *
84entity_attribute (entity_t, const char *);
85
86char *
87entity_name (entity_t entity);
88
89char *
90entity_text (entity_t entity);
91
93
94void
95print_entity (FILE *, entity_t);
96
97void
98print_entity_format (entity_t, gpointer indentation);
99
100int
101try_read_entity_and_string (gnutls_session_t *, int, entity_t *, GString **);
102
103int
104read_entity_and_string (gnutls_session_t *, entity_t *, GString **);
105
106int
108
109int
110read_entity_and_text (gnutls_session_t *, entity_t *, char **);
111
112int
114
115int
116try_read_entity (gnutls_session_t *, int, entity_t *);
117
118int
120
121int
122read_entity (gnutls_session_t *, entity_t *);
123
124int
125read_entity_s (int, entity_t *);
126
127int
129
130int
131read_string (gnutls_session_t *, GString **);
132
133int
134read_string_c (gvm_connection_t *, GString **);
135
136int
137read_text_c (gvm_connection_t *, char **);
138
139int
140parse_entity (const char *, entity_t *);
141
142void
143print_entity_to_string (entity_t entity, GString *string);
144
146
147void
148xml_string_append (GString *, const char *, ...);
149
150/* XML file utilities */
151
152int
153find_element_in_xml_file (gchar *, gchar *, GHashTable *);
154
155/* The new faster parser that uses libxml2. */
156
157typedef struct _xmlNode *element_t;
158
159int
160parse_element (const gchar *, element_t *);
161
163
164const gchar *element_name (element_t);
165
166gchar *
167element_attribute (element_t, const gchar *);
168
169gchar *element_text (element_t);
170
172element_child (element_t, const gchar *);
173
175
177
178gchar *
180
181void
182print_element_to_string (element_t element, GString *string);
183
184#endif /* not _GVM_XMLUTILS_H */
GnuTLS based functions for server communication - header file.
XML context.
Definition xmlutils.h:27
GSList * first
The very first entity.
Definition xmlutils.h:28
GSList * current
The element currently being parsed.
Definition xmlutils.h:29
gboolean done
Flag which is true when the first element is closed.
Definition xmlutils.h:30
XML element.
Definition xmlutils.h:52
entities_t entities
Children.
Definition xmlutils.h:56
char * text
Text.
Definition xmlutils.h:54
GHashTable * attributes
Attributes.
Definition xmlutils.h:55
char * name
Name.
Definition xmlutils.h:53
Connection.
Definition serverutils.h:30
Data for xml search functions.
Definition xmlutils.h:64
int done
Definition xmlutils.h:66
gchar * find_element
Definition xmlutils.h:67
GHashTable * find_attributes
Definition xmlutils.h:68
int found
Definition xmlutils.h:65
int try_read_entity_and_string(gnutls_session_t *, int, entity_t *, GString **)
Try read an XML entity tree from the manager.
Definition xmlutils.c:501
struct entity_s * entity_t
Definition xmlutils.h:58
int try_read_entity(gnutls_session_t *, int, entity_t *)
Try read an XML entity tree from the manager.
Definition xmlutils.c:1436
const gchar * element_name(element_t)
Get the name of an element.
Definition xmlutils.c:2048
int xml_count_entities(entities_t)
Count the number of entities.
Definition xmlutils.c:1826
char * entity_name(entity_t entity)
Get the name an entity.
Definition xmlutils.c:161
char * entity_text(entity_t entity)
Get the text an entity.
Definition xmlutils.c:145
int compare_entities(entity_t, entity_t)
Compare two XML entity.
Definition xmlutils.c:1761
int parse_entity(const char *, entity_t *)
Read an XML entity tree from a string.
Definition xmlutils.c:1511
int read_text_c(gvm_connection_t *, char **)
Read text from the server.
Definition xmlutils.c:1366
gchar * element_text(element_t)
Get text of an element.
Definition xmlutils.c:2133
entities_t next_entities(entities_t)
Return all the entities from an entities_t after the first.
Definition xmlutils.c:67
int read_entity_and_text_c(gvm_connection_t *, entity_t *, char **)
Read an XML entity tree from the manager.
Definition xmlutils.c:1336
int read_entity_s(int, entity_t *)
Read an XML entity tree from the socket.
Definition xmlutils.c:1483
void xml_handle_start_element(context_data_t *, const gchar *, const gchar **, const gchar **)
Handle the start of an OMP XML element.
Definition xmlutils.c:326
const char * entity_attribute(entity_t, const char *)
Get an attribute of an entity.
Definition xmlutils.c:216
struct _xmlNode * element_t
Definition xmlutils.h:157
int try_read_entity_c(gvm_connection_t *, int, entity_t *)
Try read an XML entity tree from the manager.
Definition xmlutils.c:1452
void print_element_to_string(element_t element, GString *string)
Print an XML element tree to a GString, appending it if string is not.
Definition xmlutils.c:2276
int find_element_in_xml_file(gchar *, gchar *, GHashTable *)
Tests if an XML file contains an element with given attributes.
Definition xmlutils.c:1938
int read_string(gnutls_session_t *, GString **)
Read entity and text. Free the entity immediately.
Definition xmlutils.c:1400
int read_entity(gnutls_session_t *, entity_t *)
Read an XML entity tree from the manager.
Definition xmlutils.c:1469
element_t element_next(element_t)
Get the next sibling of an element.
Definition xmlutils.c:2226
void xml_handle_end_element(context_data_t *, const gchar *)
Handle the end of an XML element.
Definition xmlutils.c:402
entity_t entity_child(entity_t, const char *)
Get a child of an entity.
Definition xmlutils.c:193
int read_entity_c(gvm_connection_t *, entity_t *)
Read an XML entity tree from the manager.
Definition xmlutils.c:1497
int read_entity_and_string(gnutls_session_t *, entity_t *, GString **)
Try read an XML entity tree from the manager.
Definition xmlutils.c:1262
GSList * entities_t
Entities.
Definition xmlutils.h:46
element_t element_child(element_t, const gchar *)
Get a child of an element.
Definition xmlutils.c:2082
void print_entity_format(entity_t, gpointer indentation)
Print an XML entity to stdout, recursively printing its children.
Definition xmlutils.c:1702
gchar * element_attribute(element_t, const gchar *)
Get an attribute of an element.
Definition xmlutils.c:2158
void xml_handle_text(context_data_t *, const gchar *, gsize)
Handle additional text of an XML element.
Definition xmlutils.c:464
int read_entity_and_text(gnutls_session_t *, entity_t *, char **)
Read an XML entity tree from the manager.
Definition xmlutils.c:1305
entity_t first_entity(entities_t)
Return the first entity from an entities_t.
Definition xmlutils.c:82
gchar * element_to_string(element_t element)
Output the XML element as a string.
Definition xmlutils.c:2249
void print_entity(FILE *, entity_t)
Print an XML entity.
Definition xmlutils.c:1659
void element_free(element_t)
Free an entire element tree.
Definition xmlutils.c:2031
element_t element_first_child(element_t)
Get the first child of an element.
Definition xmlutils.c:2206
void free_entity(entity_t)
Free an entity, recursively.
Definition xmlutils.c:115
entity_t add_entity(entities_t *, const char *, const char *)
Add an XML entity to a tree of entities.
Definition xmlutils.c:101
int parse_element(const gchar *, element_t *)
Read an XML element tree from a string.
Definition xmlutils.c:1999
void xml_string_append(GString *, const char *,...)
Append formatted escaped XML to a string.
Definition xmlutils.c:1845
void print_entity_to_string(entity_t entity, GString *string)
Print an XML entity tree to a GString, appending it if string is not.
Definition xmlutils.c:1612
int read_string_c(gvm_connection_t *, GString **)
Read entity and text. Free the entity immediately.
Definition xmlutils.c:1420
int read_entity_and_string_c(gvm_connection_t *, entity_t *, GString **)
Try read an XML entity tree from the manager.
Definition xmlutils.c:1282