continue;
}
- /* find the separator */
- sep = memchr(buf, '=', param_len);
- if (!sep)
- continue;
-
- name_len = sep - buf;
- value_len = param_len - name_len - 1;
-
/* update the params array */
event->params = talloc_realloc(event, event->params,
struct param, ++event->n_params);
param = &event->params[event->n_params - 1];
+ sep = memchr(buf, '=', param_len);
+ if (!sep) {
+ name_len = param_len;
+ value_len = 0;
+ param->value = "";
+ } else {
+ name_len = sep - buf;
+ value_len = param_len - name_len - 1;
+ param->value = talloc_strndup(event, sep + 1,
+ value_len);
+ }
param->name = talloc_strndup(event, buf, name_len);
- param->value = talloc_strndup(event, sep + 1, value_len);
}
}
return NULL;
}
+
+void event_set_param(struct event *event, const char *name, const char *value)
+{
+ struct param *param;
+ int i;
+
+ /* if it's already present, replace the value of the old param */
+ for (i = 0; i < event->n_params; i++) {
+ param = &event->params[i];
+ if (!strcasecmp(param->name, name)) {
+ talloc_free(param->value);
+ param->value = talloc_strdup(event, value);
+ return;
+ }
+ }
+
+ /* not found - create a new param */
+ event->params = talloc_realloc(event, event->params,
+ struct param, ++event->n_params);
+ param = &event->params[event->n_params - 1];
+
+ param->name = talloc_strdup(event, name);
+ param->value = talloc_strdup(event, value);
+}