Arbitrary string to DBus path

Lennart Poettering mzqohf at
Fri Nov 15 09:45:40 PST 2013

On Fri, 15.11.13 11:21, Ted Gould (ted at wrote:

> Hello,
> One problem we've had is taking arbitrary string (usually application
> names) and putting them into object paths on DBus.  The characters
> allowed in the path is limited, which is fine, but we need some way to
> represent the string we're passed through that.  libnih has a small
> function[1] that does this by taking any character that isn't an ASCII
> character or digit and putting it's value as ASCII digits after an
> underscore.  We've been using this in various places, and I think it'd
> be useful if there was an algorithm that was included in the DBus
> spec.

Why? The spec is something you should follow to stay interoperable, but
I don't see how a spec on the precise mappings from some project
specific identifiers to bus paths would be needed for that.


This algorithm isn't even correct according to the spec. It needs to
escape numeric characters at the beginning of each label, too.

We use a similar algorithm in systemd too:

And I am pretty sure that exposing a similar call in a dbus library
implementation certainly would make sense but I really don't see why
there needs to be a spec about this...

(I mean, I am actually for removing stuff from the spec anyway, for
example, I don't see why we need to list annotations in there that have
no clear uses for general implementations of dbus).


Lennart Poettering, Red Hat

More information about the dbus mailing list