GUAC-847: Add arbitrary data to callback.
This commit is contained in:
parent
9e57d01c99
commit
9b8d77891e
@ -253,7 +253,7 @@ static int guacd_parse_quoted_value(char* buffer, int length, char* value) {
|
|||||||
* parameter/value pair is invalid for any reason, a negative value is
|
* parameter/value pair is invalid for any reason, a negative value is
|
||||||
* returned.
|
* returned.
|
||||||
*/
|
*/
|
||||||
static int guacd_parse_parameter(guacd_param_callback* callback, char* buffer, int length) {
|
static int guacd_parse_parameter(guacd_param_callback* callback, char* buffer, int length, void* data) {
|
||||||
|
|
||||||
char param_name[GUACD_CONF_MAX_NAME_LENGTH + 1];
|
char param_name[GUACD_CONF_MAX_NAME_LENGTH + 1];
|
||||||
char param_value[GUACD_CONF_MAX_VALUE_LENGTH + 1];
|
char param_value[GUACD_CONF_MAX_VALUE_LENGTH + 1];
|
||||||
@ -316,7 +316,7 @@ static int guacd_parse_parameter(guacd_param_callback* callback, char* buffer, i
|
|||||||
chars_read += retval;
|
chars_read += retval;
|
||||||
|
|
||||||
/* Call callback, handling error code */
|
/* Call callback, handling error code */
|
||||||
if (callback(__guacd_current_section, param_name, param_value))
|
if (callback(__guacd_current_section, param_name, param_value, data))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return chars_read;
|
return chars_read;
|
||||||
@ -373,7 +373,7 @@ static int guacd_parse_section(char* buffer, int length) {
|
|||||||
* parameter/value pair. The empty string is acceptable, as well, as a
|
* parameter/value pair. The empty string is acceptable, as well, as a
|
||||||
* "null declaration".
|
* "null declaration".
|
||||||
*/
|
*/
|
||||||
static int guacd_parse_declaration(guacd_param_callback* callback, char* buffer, int length) {
|
static int guacd_parse_declaration(guacd_param_callback* callback, char* buffer, int length, void* data) {
|
||||||
|
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
@ -383,7 +383,7 @@ static int guacd_parse_declaration(guacd_param_callback* callback, char* buffer,
|
|||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
/* Lacking a section name, read parameter/value pair */
|
/* Lacking a section name, read parameter/value pair */
|
||||||
retval = guacd_parse_parameter(callback, buffer, length);
|
retval = guacd_parse_parameter(callback, buffer, length, data);
|
||||||
if (retval != 0)
|
if (retval != 0)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
@ -476,7 +476,7 @@ static int guacd_parse_line_end(char* buffer, int length) {
|
|||||||
* occurs, a negative value is returned. Otherwise, the number of characters
|
* occurs, a negative value is returned. Otherwise, the number of characters
|
||||||
* parsed is returned.
|
* parsed is returned.
|
||||||
*/
|
*/
|
||||||
static int guacd_parse_line(guacd_param_callback* callback, char* buffer, int length) {
|
static int guacd_parse_line(guacd_param_callback* callback, char* buffer, int length, void* data) {
|
||||||
|
|
||||||
int chars_read = 0;
|
int chars_read = 0;
|
||||||
int retval;
|
int retval;
|
||||||
@ -488,7 +488,7 @@ static int guacd_parse_line(guacd_param_callback* callback, char* buffer, int le
|
|||||||
length -= retval;
|
length -= retval;
|
||||||
|
|
||||||
/* Declaration (which may be the empty string) */
|
/* Declaration (which may be the empty string) */
|
||||||
retval = guacd_parse_declaration(callback, buffer, length);
|
retval = guacd_parse_declaration(callback, buffer, length, data);
|
||||||
if (retval < 0)
|
if (retval < 0)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
@ -507,7 +507,7 @@ static int guacd_parse_line(guacd_param_callback* callback, char* buffer, int le
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int guacd_parse_conf(guacd_param_callback* callback, char* buffer, int length) {
|
int guacd_parse_conf(guacd_param_callback* callback, char* buffer, int length, void* data) {
|
||||||
return guacd_parse_line(callback, buffer, length);
|
return guacd_parse_line(callback, buffer, length, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,15 +39,16 @@
|
|||||||
* function will not be called for parameters outside of sections, which are
|
* function will not be called for parameters outside of sections, which are
|
||||||
* illegal.
|
* illegal.
|
||||||
*/
|
*/
|
||||||
typedef int guacd_param_callback(const char* section, const char* param, const char* value);
|
typedef int guacd_param_callback(const char* section, const char* param, const char* value, void* data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses an arbitrary buffer of configuration file data, calling the given
|
* Parses an arbitrary buffer of configuration file data, calling the given
|
||||||
* callback for each valid parameter/value pair. Upon success, the number of
|
* callback for each valid parameter/value pair. Upon success, the number of
|
||||||
* characters parsed is returned. On failure, a negative value is returned, and
|
* characters parsed is returned. On failure, a negative value is returned, and
|
||||||
* guacd_conf_parse_error and guacd_conf_parse_error_location are set.
|
* guacd_conf_parse_error and guacd_conf_parse_error_location are set. The
|
||||||
|
* provided data will be passed to the callback for each invocation.
|
||||||
*/
|
*/
|
||||||
int guacd_parse_conf(guacd_param_callback* callback, char* buffer, int length);
|
int guacd_parse_conf(guacd_param_callback* callback, char* buffer, int length, void* data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Human-readable description of the current error, if any.
|
* Human-readable description of the current error, if any.
|
||||||
|
Loading…
Reference in New Issue
Block a user