00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "dbus-uuidgen.h"
00024 #include "dbus-internals.h"
00025 #include "dbus-string.h"
00026 #include "dbus-protocol.h"
00027
00028 #ifdef DBUS_WIN
00029 #error "dbus-uuidgen should not be needed on Windows"
00030 #endif
00031
00043 static dbus_bool_t
00044 return_uuid (DBusGUID *uuid,
00045 char **uuid_p,
00046 DBusError *error)
00047 {
00048 if (uuid_p)
00049 {
00050 DBusString encoded;
00051
00052 if (!_dbus_string_init (&encoded))
00053 {
00054 _DBUS_SET_OOM (error);
00055 return FALSE;
00056 }
00057
00058 if (!_dbus_uuid_encode (uuid, &encoded) ||
00059 !_dbus_string_steal_data (&encoded, uuid_p))
00060 {
00061 _DBUS_SET_OOM (error);
00062 _dbus_string_free (&encoded);
00063 return FALSE;
00064 }
00065 _dbus_string_free (&encoded);
00066 }
00067 return TRUE;
00068 }
00069
00081 dbus_bool_t
00082 dbus_internal_do_not_use_get_uuid (const char *filename,
00083 char **uuid_p,
00084 dbus_bool_t create_if_not_found,
00085 DBusError *error)
00086 {
00087 DBusGUID uuid;
00088
00089 if (filename)
00090 {
00091 DBusString filename_str;
00092 _dbus_string_init_const (&filename_str, filename);
00093 if (!_dbus_read_uuid_file (&filename_str, &uuid, create_if_not_found, error))
00094 goto error;
00095 }
00096 else
00097 {
00098 if (!_dbus_read_local_machine_uuid (&uuid, create_if_not_found, error))
00099 goto error;
00100 }
00101
00102 if (!return_uuid(&uuid, uuid_p, error))
00103 goto error;
00104
00105 return TRUE;
00106
00107 error:
00108 _DBUS_ASSERT_ERROR_IS_SET (error);
00109 return FALSE;
00110 }
00111
00120 dbus_bool_t
00121 dbus_internal_do_not_use_create_uuid (char **uuid_p)
00122 {
00123 DBusGUID uuid;
00124
00125 _dbus_generate_uuid (&uuid);
00126 return return_uuid (&uuid, uuid_p, NULL);
00127 }
00128