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 if (!_dbus_string_init (&encoded))
00052 {
00053 _DBUS_SET_OOM (error);
00054 return FALSE;
00055 }
00056 if (!_dbus_uuid_encode (uuid, &encoded) ||
00057 !_dbus_string_steal_data (&encoded, uuid_p))
00058 {
00059 _DBUS_SET_OOM (error);
00060 _dbus_string_free (&encoded);
00061 return FALSE;
00062 }
00063 _dbus_string_free (&encoded);
00064 }
00065 return TRUE;
00066 }
00067
00079 dbus_bool_t
00080 dbus_internal_do_not_use_get_uuid (const char *filename,
00081 char **uuid_p,
00082 dbus_bool_t create_if_not_found,
00083 DBusError *error)
00084 {
00085 DBusGUID uuid;
00086
00087 if (filename)
00088 {
00089 DBusString filename_str;
00090 _dbus_string_init_const (&filename_str, filename);
00091 if (!_dbus_read_uuid_file (&filename_str, &uuid, create_if_not_found, error))
00092 goto error;
00093 }
00094 else
00095 {
00096 if (!_dbus_read_local_machine_uuid (&uuid, create_if_not_found, error))
00097 goto error;
00098 }
00099
00100 if (!return_uuid(&uuid, uuid_p, error))
00101 goto error;
00102
00103 return TRUE;
00104
00105 error:
00106 _DBUS_ASSERT_ERROR_IS_SET (error);
00107 return FALSE;
00108 }
00109
00118 dbus_bool_t
00119 dbus_internal_do_not_use_create_uuid (char **uuid_p)
00120 {
00121 DBusGUID uuid;
00122
00123 _dbus_generate_uuid (&uuid);
00124 return return_uuid (&uuid, uuid_p, NULL);
00125 }
00126