forked from enlightenment/enlightenment
big eeze mounting overhaul: things will "probably" work now. status increment to 95% on http://trac.enlightenment.org/e/wiki/Release
SVN revision: 62881
This commit is contained in:
parent
b7967f2941
commit
65a1d27500
|
@ -136,7 +136,8 @@ _e_fm_main_eeze_cb_vol_mounted(void *user_data __UNUSED__,
|
||||||
char *buf;
|
char *buf;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
v = eeze_disk_data_get(ev->disk);
|
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
|
||||||
|
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
|
||||||
if (v->guard)
|
if (v->guard)
|
||||||
{
|
{
|
||||||
ecore_timer_del(v->guard);
|
ecore_timer_del(v->guard);
|
||||||
|
@ -186,8 +187,8 @@ _e_fm_main_eeze_cb_vol_error(void *user_data __UNUSED__,
|
||||||
char *buf;
|
char *buf;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
v = eeze_disk_data_get(ev->disk);
|
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
|
||||||
|
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
|
||||||
if (v->mounted)
|
if (v->mounted)
|
||||||
{
|
{
|
||||||
size = _e_fm_main_eeze_format_error_msg(&buf, v, "org.enlightenment.fm2.UnmountError", ev->message);
|
size = _e_fm_main_eeze_format_error_msg(&buf, v, "org.enlightenment.fm2.UnmountError", ev->message);
|
||||||
|
@ -213,7 +214,8 @@ _e_fm_main_eeze_cb_vol_unmounted(void *user_data __UNUSED__,
|
||||||
int size;
|
int size;
|
||||||
E_Volume *v;
|
E_Volume *v;
|
||||||
|
|
||||||
v = eeze_disk_data_get(ev->disk);
|
v = _e_fm_main_eeze_volume_find_fast(eeze_disk_syspath_get(ev->disk));
|
||||||
|
//v = eeze_disk_data_get(ev->disk); THIS IS BROKEN DON'T ASK WHY
|
||||||
if (v->guard)
|
if (v->guard)
|
||||||
{
|
{
|
||||||
ecore_timer_del(v->guard);
|
ecore_timer_del(v->guard);
|
||||||
|
@ -317,7 +319,10 @@ _e_fm_main_eeze_volume_add(const char *syspath,
|
||||||
v->uuid = eeze_disk_uuid_get(v->disk);
|
v->uuid = eeze_disk_uuid_get(v->disk);
|
||||||
v->label = eeze_disk_label_get(v->disk);
|
v->label = eeze_disk_label_get(v->disk);
|
||||||
v->fstype = eeze_disk_fstype_get(v->disk);
|
v->fstype = eeze_disk_fstype_get(v->disk);
|
||||||
|
v->parent = eeze_disk_udev_get_parent(v->disk);
|
||||||
str = eeze_disk_udev_get_sysattr(v->disk, "queue/hw_sector_size");
|
str = eeze_disk_udev_get_sysattr(v->disk, "queue/hw_sector_size");
|
||||||
|
if (!str)
|
||||||
|
str = eeze_udev_syspath_get_sysattr(v->parent, "queue/hw_sector_size");
|
||||||
if (str)
|
if (str)
|
||||||
{
|
{
|
||||||
int64_t sector_size, size;
|
int64_t sector_size, size;
|
||||||
|
@ -348,7 +353,6 @@ _e_fm_main_eeze_volume_add(const char *syspath,
|
||||||
v->partition_label = eeze_disk_udev_get_property(v->disk, "ID_FS_LABEL");
|
v->partition_label = eeze_disk_udev_get_property(v->disk, "ID_FS_LABEL");
|
||||||
}
|
}
|
||||||
|
|
||||||
v->parent = eeze_disk_udev_get_parent(v->disk);
|
|
||||||
{
|
{
|
||||||
E_Storage *s;
|
E_Storage *s;
|
||||||
s = e_storage_find(v->parent);
|
s = e_storage_find(v->parent);
|
||||||
|
@ -356,9 +360,13 @@ _e_fm_main_eeze_volume_add(const char *syspath,
|
||||||
" partition: %d\n partition_number: %d\n partition_label: %s\n mounted: %d\n mount_point: %s",
|
" partition: %d\n partition_number: %d\n partition_label: %s\n mounted: %d\n mount_point: %s",
|
||||||
v->udi, v->uuid, v->fstype, v->size, v->label, v->partition, v->partition_number,
|
v->udi, v->uuid, v->fstype, v->size, v->label, v->partition, v->partition_number,
|
||||||
v->partition ? v->partition_label : "(not a partition)", v->mounted, v->mount_point);
|
v->partition ? v->partition_label : "(not a partition)", v->mounted, v->mount_point);
|
||||||
|
if (s)
|
||||||
|
v->storage = s;
|
||||||
|
else if (v->parent)
|
||||||
|
s = v->storage = _e_fm_main_eeze_storage_add(v->parent);
|
||||||
|
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
v->storage = s;
|
|
||||||
s->volumes = eina_list_append(s->volumes, v);
|
s->volumes = eina_list_append(s->volumes, v);
|
||||||
INF(" for storage: %s", s->udi);
|
INF(" for storage: %s", s->udi);
|
||||||
}
|
}
|
||||||
|
@ -526,7 +534,8 @@ _scanner_poll(void *data __UNUSED__)
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
|
||||||
|
if (svr) return EINA_FALSE;
|
||||||
tmp = getenv("TMPDIR");
|
tmp = getenv("TMPDIR");
|
||||||
if (!tmp) tmp = "/tmp";
|
if (!tmp) tmp = "/tmp";
|
||||||
|
|
||||||
|
@ -540,16 +549,19 @@ _scanner_poll(void *data __UNUSED__)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_scanner_add(void *data __UNUSED__, int type __UNUSED__, Ecore_Exe_Event_Add *ev __UNUSED__)
|
_scanner_add(void *data, int type __UNUSED__, Ecore_Exe_Event_Add *ev)
|
||||||
{
|
{
|
||||||
if (!_scanner_poll(NULL))
|
if (data != ecore_exe_data_get(ev->exe)) return ECORE_CALLBACK_PASS_ON;
|
||||||
|
INF("Scanner started");
|
||||||
|
if (_scanner_poll(NULL))
|
||||||
ecore_poller_add(ECORE_POLLER_CORE, 32, (Ecore_Task_Cb)_scanner_poll, NULL);
|
ecore_poller_add(ECORE_POLLER_CORE, 32, (Ecore_Task_Cb)_scanner_poll, NULL);
|
||||||
return ECORE_CALLBACK_RENEW;
|
return ECORE_CALLBACK_RENEW;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_scanner_del(void *data __UNUSED__, int type __UNUSED__, Ecore_Exe_Event_Del *ev __UNUSED__)
|
_scanner_del(void *data, int type __UNUSED__, Ecore_Exe_Event_Del *ev)
|
||||||
{
|
{
|
||||||
|
if (data != ecore_exe_data_get(ev->exe)) return ECORE_CALLBACK_PASS_ON;
|
||||||
if (!svr)
|
if (!svr)
|
||||||
{
|
{
|
||||||
INF("scanner connection dead, exiting");
|
INF("scanner connection dead, exiting");
|
||||||
|
@ -606,7 +618,7 @@ _scanner_run(void)
|
||||||
CRI("Could not locate scanner at '%s'! EFM exiting.", buf);
|
CRI("Could not locate scanner at '%s'! EFM exiting.", buf);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
scanner = ecore_exe_pipe_run(buf, ECORE_EXE_NOT_LEADER, NULL);
|
scanner = ecore_exe_pipe_run(buf, ECORE_EXE_NOT_LEADER, pfx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -671,8 +683,8 @@ _e_fm_main_eeze_init(void)
|
||||||
ecore_event_handler_add(EEZE_EVENT_DISK_EJECT, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_ejected, NULL);
|
ecore_event_handler_add(EEZE_EVENT_DISK_EJECT, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_ejected, NULL);
|
||||||
ecore_event_handler_add(EEZE_EVENT_DISK_ERROR, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_error, NULL);
|
ecore_event_handler_add(EEZE_EVENT_DISK_ERROR, (Ecore_Event_Handler_Cb)_e_fm_main_eeze_cb_vol_error, NULL);
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_ADD, (Ecore_Event_Handler_Cb)_scanner_add, NULL);
|
ecore_event_handler_add(ECORE_EXE_EVENT_ADD, (Ecore_Event_Handler_Cb)_scanner_add, pfx);
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, (Ecore_Event_Handler_Cb)_scanner_del, NULL);
|
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, (Ecore_Event_Handler_Cb)_scanner_del, pfx);
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_scanner_con, NULL);
|
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, (Ecore_Event_Handler_Cb)_scanner_con, NULL);
|
||||||
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_scanner_disc, NULL);
|
ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, (Ecore_Event_Handler_Cb)_scanner_disc, NULL);
|
||||||
|
@ -733,7 +745,20 @@ _e_fm_main_eeze_storage_add(const char *syspath)
|
||||||
if (_e_fm_main_eeze_storage_find_fast(syspath)) return NULL;
|
if (_e_fm_main_eeze_storage_find_fast(syspath)) return NULL;
|
||||||
|
|
||||||
str = eeze_udev_syspath_get_property(syspath, "ID_TYPE");
|
str = eeze_udev_syspath_get_property(syspath, "ID_TYPE");
|
||||||
if (!str) return NULL;
|
if (!str)
|
||||||
|
{
|
||||||
|
const char *p, *subsystem;
|
||||||
|
|
||||||
|
p = eeze_udev_syspath_get_parent(syspath);
|
||||||
|
if (!p) return NULL;
|
||||||
|
subsystem = eeze_udev_syspath_get_subsystem(p);
|
||||||
|
if ((!subsystem) || strcmp(subsystem, "mmc"))
|
||||||
|
{
|
||||||
|
eina_stringshare_del(subsystem);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
eina_stringshare_del(subsystem);
|
||||||
|
}
|
||||||
eina_stringshare_del(str);
|
eina_stringshare_del(str);
|
||||||
s = calloc(1, sizeof(E_Storage));
|
s = calloc(1, sizeof(E_Storage));
|
||||||
if (!s) return NULL;
|
if (!s) return NULL;
|
||||||
|
@ -746,15 +771,21 @@ _e_fm_main_eeze_storage_add(const char *syspath)
|
||||||
{
|
{
|
||||||
case EEZE_DISK_TYPE_CDROM:
|
case EEZE_DISK_TYPE_CDROM:
|
||||||
s->drive_type = eina_stringshare_add("cdrom");
|
s->drive_type = eina_stringshare_add("cdrom");
|
||||||
|
break;
|
||||||
case EEZE_DISK_TYPE_USB:
|
case EEZE_DISK_TYPE_USB:
|
||||||
s->drive_type = eina_stringshare_add("usb");
|
s->drive_type = eina_stringshare_add("usb");
|
||||||
|
break;
|
||||||
case EEZE_DISK_TYPE_INTERNAL:
|
case EEZE_DISK_TYPE_INTERNAL:
|
||||||
s->drive_type = eina_stringshare_add("ata");
|
s->drive_type = eina_stringshare_add("ata");
|
||||||
|
break;
|
||||||
|
case EEZE_DISK_TYPE_FLASH:
|
||||||
|
s->drive_type = eina_stringshare_add("sd_mmc");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
s->drive_type = eina_stringshare_add("unknown");
|
s->drive_type = eina_stringshare_add("unknown");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
s->model = eina_stringshare_add(eeze_disk_model_get(s->disk));
|
s->model = eina_stringshare_add(eeze_disk_model_get(s->disk));
|
||||||
if (!s->model) goto error;
|
|
||||||
s->vendor = eina_stringshare_add(eeze_disk_vendor_get(s->disk));
|
s->vendor = eina_stringshare_add(eeze_disk_vendor_get(s->disk));
|
||||||
s->serial = eina_stringshare_add(eeze_disk_serial_get(s->disk));
|
s->serial = eina_stringshare_add(eeze_disk_serial_get(s->disk));
|
||||||
if (!s->serial) ERR("Error getting serial for %s", s->udi);
|
if (!s->serial) ERR("Error getting serial for %s", s->udi);
|
||||||
|
|
|
@ -68,6 +68,8 @@ _e_fm2_device_volume_setup(E_Volume *v)
|
||||||
else
|
else
|
||||||
snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor);
|
snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor);
|
||||||
}
|
}
|
||||||
|
else if (v->storage->drive_type && (!strcmp(v->storage->drive_type, "sd_mmc")))
|
||||||
|
snprintf(label, sizeof(label) - 1, "Flash Card - %s", size);
|
||||||
else
|
else
|
||||||
snprintf(label, sizeof(label), _("Unknown Volume"));
|
snprintf(label, sizeof(label), _("Unknown Volume"));
|
||||||
|
|
||||||
|
@ -79,7 +81,7 @@ _e_fm2_device_volume_setup(E_Volume *v)
|
||||||
icon = v->storage->icon.volume;
|
icon = v->storage->icon.volume;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk")))
|
if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk")) || (!strcmp(v->storage->drive_type, "partition")))
|
||||||
{
|
{
|
||||||
if (v->storage->removable == 0)
|
if (v->storage->removable == 0)
|
||||||
icon = "drive-harddisk";
|
icon = "drive-harddisk";
|
||||||
|
|
Loading…
Reference in New Issue