<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/4.6.6">
</HEAD>
<BODY>
Hello,<BR>
<BR>
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.<BR>
<BR>
As a concrete example we're using this in the Unity HUD service.  Each application that it knows about, it registers an object on DBus where the application can control the behavior of its items in the HUD.  Because application names don't have the same restrictions as DBus paths we're forced to transform the name into something that can be represented on DBus.  We do this using the libnih algorithm, and then application can predict where they'll show up without needing to query the HUD service.  We can also easily find them using debugging tools like D-Feet.<BR>
<BR>
I'm putting forward the libnih algorithm as the proposal for this.  To me it has some advantages:<BR>
<BR>
<UL>
    <LI>It is mostly human readable
    <LI>It is reversible
    <LI>It'll work for any characters we throw at it
</UL>
<BR>
The biggest downside to me:<BR>
<BR>
<UL>
    <LI>It is kinda verbose
</UL>
<BR>
Thoughts?  Is this something the spec needs?  Are people generally happy with the libnih algorithm?  If there's no complains I'll move to making a patch to the spec.<BR>
<BR>
Ted<BR>
<BR>
[1] http://bazaar.launchpad.net/~scott/libnih/trunk/view/head:/nih-dbus/dbus_util.c#L38
</BODY>
</HTML>