fix udisks stringshare usage, print some error messages on failure so I can tell wtf is going on

SVN revision: 72020
This commit is contained in:
Mike Blumenkrantz 2012-06-12 12:21:16 +00:00
parent 3ebff9189e
commit 4275e53f59
1 changed files with 19 additions and 20 deletions

View File

@ -408,35 +408,36 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
if (dbus_error_is_set(error)) if (dbus_error_is_set(error))
{ {
dbus_error_free(error); dbus_error_free(error);
goto error; ERR("err");
} }
if (e_ukit_property_bool_get(ret, "DeviceIsSystemInternal", &err) || err) goto error; EINA_SAFETY_ON_TRUE_GOTO(e_ukit_property_bool_get(ret, "DeviceIsSystemInternal", &err) || err, error);
/* skip volumes with volume.ignore set */ /* skip volumes with volume.ignore set */
if (e_ukit_property_bool_get(ret, "DeviceIsMediaChangeDetectionInhibited", &err) || err) EINA_SAFETY_ON_TRUE_GOTO(e_ukit_property_bool_get(ret, "DeviceIsMediaChangeDetectionInhibited", &err) || err, error);
goto error;
/* skip volumes that aren't filesystems */ /* skip volumes that aren't filesystems */
str = e_ukit_property_string_get(ret, "IdUsage", &err); str = e_ukit_property_string_get(ret, "IdUsage", &err);
if (err || !str) goto error; EINA_SAFETY_ON_TRUE_GOTO(err || (!str), error);
if (strcmp(str, "filesystem")) if (strcmp(str, "filesystem"))
{ {
if (strcmp(str, "crypto")) if (strcmp(str, "crypto"))
v->encrypted = e_ukit_property_bool_get(ret, "DeviceIsLuks", &err); v->encrypted = e_ukit_property_bool_get(ret, "DeviceIsLuks", &err);
if (!v->encrypted) if (!v->encrypted)
goto error; {
ERR("encrypted filesystems not yet supported");
goto error;
}
} }
str = NULL; str = NULL;
v->uuid = e_ukit_property_string_get(ret, "IdUuid", &err); v->uuid = e_ukit_property_string_get(ret, "IdUuid", &err);
if (err) goto error; EINA_SAFETY_ON_TRUE_GOTO(err, error);
v->uuid = eina_stringshare_add(v->uuid); v->uuid = eina_stringshare_add(v->uuid);
v->label = e_ukit_property_string_get(ret, "IdLabel", &err); v->label = e_ukit_property_string_get(ret, "IdLabel", &err);
if (!v->label) v->label = v->uuid;
if (!v->label) v->label = e_ukit_property_string_get(ret, "DeviceFile", &err); /* avoid having blank labels */ if (!v->label) v->label = e_ukit_property_string_get(ret, "DeviceFile", &err); /* avoid having blank labels */
if (!v->label) v->label = v->uuid; /* last resort */
v->label = eina_stringshare_add(v->label); v->label = eina_stringshare_add(v->label);
if (!v->encrypted) if (!v->encrypted)
@ -444,7 +445,7 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
const Eina_List *l; const Eina_List *l;
l = e_ukit_property_strlist_get(ret, "DeviceMountPaths", &err); l = e_ukit_property_strlist_get(ret, "DeviceMountPaths", &err);
if (err) goto error; EINA_SAFETY_ON_TRUE_GOTO(err, error);
if (l) v->mount_point = eina_stringshare_add(l->data); if (l) v->mount_point = eina_stringshare_add(l->data);
v->fstype = e_ukit_property_string_get(ret, "IdType", &err); v->fstype = e_ukit_property_string_get(ret, "IdType", &err);
@ -453,13 +454,13 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
v->size = e_ukit_property_uint64_get(ret, "DeviceSize", &err); v->size = e_ukit_property_uint64_get(ret, "DeviceSize", &err);
v->mounted = e_ukit_property_bool_get(ret, "DeviceIsMounted", &err); v->mounted = e_ukit_property_bool_get(ret, "DeviceIsMounted", &err);
if (err) goto error; EINA_SAFETY_ON_TRUE_GOTO(err, error);
} }
else else
v->unlocked = e_ukit_property_bool_get(ret, "DeviceIsLuksCleartext", &err); v->unlocked = e_ukit_property_bool_get(ret, "DeviceIsLuksCleartext", &err);
v->partition = e_ukit_property_bool_get(ret, "DeviceIsPartition", &err); v->partition = e_ukit_property_bool_get(ret, "DeviceIsPartition", &err);
if (err) goto error; EINA_SAFETY_ON_TRUE_GOTO(err, error);
if (v->partition) if (v->partition)
{ {
@ -475,7 +476,7 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
enc = e_ukit_property_string_get(ret, "LuksCleartextSlave", &err); enc = e_ukit_property_string_get(ret, "LuksCleartextSlave", &err);
venc = _e_fm_main_udisks_volume_find(enc); venc = _e_fm_main_udisks_volume_find(enc);
v->parent = venc->parent; v->parent = eina_stringshare_add(venc->parent);
v->storage = venc->storage; v->storage = venc->storage;
v->storage->volumes = eina_list_append(v->storage->volumes, v); v->storage->volumes = eina_list_append(v->storage->volumes, v);
} }
@ -494,13 +495,12 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
if (!eina_list_data_find_list(s->volumes, v)) if (!eina_list_data_find_list(s->volumes, v))
s->volumes = eina_list_append(s->volumes, v); s->volumes = eina_list_append(s->volumes, v);
} }
v->parent = eina_stringshare_add(v->parent);
} }
else else
{ {
if (v->parent) eina_stringshare_replace(&v->parent, v->udi);
eina_stringshare_del(v->parent); s = e_storage_find(v->udi);
v->parent = eina_stringshare_add(v->udi);
s = e_storage_find(v->udi);
if (s) if (s)
{ {
v->storage = s; v->storage = s;
@ -509,13 +509,12 @@ _e_fm_main_udisks_cb_vol_prop(E_Volume *v,
} }
else else
{ {
v->storage = _e_fm_main_udisks_storage_add(v->udi); /* disk is both storage and volume */ v->storage = _e_fm_main_udisks_storage_add(v->udi); /* disk is both storage and volume */
if (v->storage) v->storage->volumes = eina_list_append(v->storage->volumes, v); if (v->storage) v->storage->volumes = eina_list_append(v->storage->volumes, v);
} }
} }
} }
} }
v->parent = eina_stringshare_add(v->parent);
switch (v->optype) switch (v->optype)
{ {