Hi folks, Does sd-bus API provide a way to append a char string of a basic type (be it SD_BUS_TYPE_STRING, SD_BUS_TYPE_OBJECT_PATH, or SD_BUS_TYPE_SIGNATURE for that matter) to a D-Bus message while allowing the caller to explicitly specify the length of that char string?
sd_bus_message_append_basic() function takes a pointer only, and calls strlen() on that pointer. If there is no such API, could we add a new function with string size as an additional parameter. It would make the API more usable and general and, as a specific use case, help C++ code using sd-bus API to append char strings of type std::string_view to the D-Bus message without having to convert a std::string_view to a std::string just to get null-terminated string which can then be passed safely to sd_bus_message_append_basic(). Right now we have to do that conversion which defeats the fundamental purpose of std::string_view type in C++ standard library. For example something along these lines: int sd_bus_message_append_basic_string_n(sd_bus_message *m, char type, const void *p, size_t len); Which would work only for the above-mentioned three D-Bus string types. And in C++ code (sdbus-c++ wrapper, for example), we could call it simply like this: std::string_view view{...}; sd_bus_message_append_basic_string_n(msg, SD_BUS_TYPE_STRING, view.data(), view.length()); What do you think of this proposal? Could we extend sd-bus API along these lines? Would you do that or shall I create a PR? Kind regards, Stanislav.