int bus_message_type_from_string(const char *s, uint8_t *u) {
if (streq(s, "signal"))
- *u = SD_BUS_MESSAGE_TYPE_SIGNAL;
+ *u = SD_BUS_MESSAGE_SIGNAL;
else if (streq(s, "method_call"))
- *u = SD_BUS_MESSAGE_TYPE_METHOD_CALL;
+ *u = SD_BUS_MESSAGE_METHOD_CALL;
else if (streq(s, "error"))
- *u = SD_BUS_MESSAGE_TYPE_METHOD_ERROR;
+ *u = SD_BUS_MESSAGE_METHOD_ERROR;
else if (streq(s, "method_return"))
- *u = SD_BUS_MESSAGE_TYPE_METHOD_RETURN;
+ *u = SD_BUS_MESSAGE_METHOD_RETURN;
else
return -EINVAL;
}
const char *bus_message_type_to_string(uint8_t u) {
- if (u == SD_BUS_MESSAGE_TYPE_SIGNAL)
+ if (u == SD_BUS_MESSAGE_SIGNAL)
return "signal";
- else if (u == SD_BUS_MESSAGE_TYPE_METHOD_CALL)
+ else if (u == SD_BUS_MESSAGE_METHOD_CALL)
return "method_call";
- else if (u == SD_BUS_MESSAGE_TYPE_METHOD_ERROR)
+ else if (u == SD_BUS_MESSAGE_METHOD_ERROR)
return "error";
- else if (u == SD_BUS_MESSAGE_TYPE_METHOD_RETURN)
+ else if (u == SD_BUS_MESSAGE_METHOD_RETURN)
return "method_return";
else
return NULL;
}
+
+char *bus_address_escape(const char *v) {
+ const char *a;
+ char *r, *b;
+
+ r = new(char, strlen(v)*3+1);
+ if (!r)
+ return NULL;
+
+ for (a = v, b = r; *a; a++) {
+
+ if ((*a >= '0' && *a <= '9') ||
+ (*a >= 'a' && *a <= 'z') ||
+ (*a >= 'A' && *a <= 'Z') ||
+ strchr("_-/.", *a))
+ *(b++) = *a;
+ else {
+ *(b++) = '%';
+ *(b++) = hexchar(*a >> 4);
+ *(b++) = hexchar(*a & 0xF);
+ }
+ }
+
+ *b = 0;
+ return r;
+}