summaryrefslogtreecommitdiff
path: root/libdleyna/core/core.h
diff options
context:
space:
mode:
Diffstat (limited to 'libdleyna/core/core.h')
-rw-r--r--libdleyna/core/core.h53
1 files changed, 5 insertions, 48 deletions
diff --git a/libdleyna/core/core.h b/libdleyna/core/core.h
index 8d9bdda..d5a6dd2 100644
--- a/libdleyna/core/core.h
+++ b/libdleyna/core/core.h
@@ -20,54 +20,11 @@
*
*/
-#include <string.h>
+#ifndef DLEYNA_CORE_TASK_H__
+#define DLEYNA_CORE_TASK_H__
-#include "core.h"
+#include <glib.h>
-gchar *dleyna_core_prv_convert_udn_to_path(const gchar *udn)
-{
- gchar *uuid;
- size_t len;
- size_t dest_len;
- size_t i;
+gchar *dleyna_core_prv_convert_udn_to_path(const gchar *udn);
- /* This function will generate a valid dbus path from the udn
- * We are not going to check the UDN validity. We will try to
- * convert it anyway. To avoid any security problem, we will
- * check some limits and possibly return only a partial
- * UDN. For a better understanding, a valid UDN should be:
- * UDN = "uuid:4Hex-2Hex-2Hex-2Hex-6Hex"
- *
- * The convertion rules are:
- * 1 - An invalid char will be escaped using its hexa representation
- * prefixed with '_':
- * Example 1 ': ' -> '_3A'
- * Example 2 '- ' -> '_2D'
- * 2 - The max size of the converted UDN can be 3 times the original
- * size (if all char are not dbus compliant).
- * The max size of a dbus path is an UINT32: G_MAXUINT32
- * We will limit the of the converted string size to G_MAXUINT32 / 2
- * otherwise we will never have space to generate object path.
- */
-
- len = strlen(udn);
- dest_len = MIN(len * 3, G_MAXUINT32 / 2);
-
- uuid = g_malloc(dest_len + 1);
- i = 0;
-
- while (*udn && (i < dest_len))
- {
- if (g_ascii_isalnum(*udn) || (*udn == '_'))
- uuid[i++] = *udn;
- else
- i += g_snprintf(uuid + i, dest_len + 1,"_%02x", *udn);
-
- udn++;
- }
-
-
- uuid[i]=0;
-
- return uuid;
-}
+#endif /* DLEYNA_CORE_TASK_H__ */