- int param_len, name_len, value_len;
- struct param *param;
- char *sep;
-
- for (; len > 0; len -= param_len + 1, buf += param_len + 1) {
-
- /* find the length of the whole parameter */
- param_len = strnlen(buf, len);
- if (!param_len) {
- /* multiple NULs? skip over */
- param_len = 1;
- 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];
-
- param->name = talloc_strndup(event, buf, name_len);
- param->value = talloc_strndup(event, sep + 1, value_len);
- }
+ struct pb_udev *udev = p;
+
+ udev_monitor_unref(udev->monitor);
+ udev->monitor = NULL;
+
+ udev_unref(udev->udev);
+ udev->udev = NULL;
+
+ return 0;