fix result code handling for mount: errors can be ORed

SVN revision: 59419
This commit is contained in:
Mike Blumenkrantz 2011-05-15 22:32:17 +00:00
parent 9ca9d4a0c5
commit f40368992f
1 changed files with 36 additions and 49 deletions

View File

@ -65,58 +65,45 @@ _eeze_disk_mount_result_handler(void *data __UNUSED__, int type __UNUSED__, Ecor
eeze_events = eina_list_remove_list(eeze_events, l);
if (disk->mount_status == EEZE_DISK_MOUNTING)
{
if (ev->exit_code & 1)
_eeze_disk_mount_error_handler(disk, "incorrect invocation or permissions");
else if (ev->exit_code & 2)
_eeze_disk_mount_error_handler(disk, "system error (out of memory, cannot fork, no more loop devices)");
else if (ev->exit_code & 4)
_eeze_disk_mount_error_handler(disk, "internal mount bug");
else if (ev->exit_code & 8)
_eeze_disk_mount_error_handler(disk, "user interrupt");
else if (ev->exit_code & 16)
_eeze_disk_mount_error_handler(disk, "problems writing or locking /etc/mtab");
else if (ev->exit_code & 32)
_eeze_disk_mount_error_handler(disk, "mount failure");
else if (ev->exit_code & 64)
_eeze_disk_mount_error_handler(disk, "some mount succeeded");
else if (!ev->exit_code)
{
e = malloc(sizeof(Eeze_Event_Disk_Mount));
EINA_SAFETY_ON_NULL_RETURN_VAL(e, ECORE_CALLBACK_RENEW);
e->disk = disk;
ecore_event_add(EEZE_EVENT_DISK_MOUNT, e, NULL, NULL);
}
}
else
switch (ev->exit_code)
{
case 1:
_eeze_disk_mount_error_handler(disk, "incorrect invocation or permissions");
break;
case 0:
e = malloc(sizeof(Eeze_Event_Disk_Unmount));
EINA_SAFETY_ON_NULL_RETURN_VAL(e, ECORE_CALLBACK_RENEW);
e->disk = disk;
ecore_event_add(EEZE_EVENT_DISK_UNMOUNT, e, NULL, NULL);
break;
case 2:
_eeze_disk_mount_error_handler(disk, "system error (out of memory, cannot fork, no more loop devices)");
break;
case 4:
_eeze_disk_mount_error_handler(disk, "internal mount bug");
break;
case 8:
_eeze_disk_mount_error_handler(disk, "user interrupt");
break;
case 16:
_eeze_disk_mount_error_handler(disk, "problems writing or locking /etc/mtab");
break;
case 32:
_eeze_disk_mount_error_handler(disk, "mount failure");
break;
case 64:
_eeze_disk_mount_error_handler(disk, "some mount succeeded");
break;
default:
e = malloc(sizeof(Eeze_Event_Disk_Mount));
EINA_SAFETY_ON_NULL_RETURN_VAL(e, ECORE_CALLBACK_RENEW);
e->disk = disk;
ecore_event_add(EEZE_EVENT_DISK_MOUNT, e, NULL, NULL);
}
else
switch (ev->exit_code)
{
case 0:
e = malloc(sizeof(Eeze_Event_Disk_Unmount));
EINA_SAFETY_ON_NULL_RETURN_VAL(e, ECORE_CALLBACK_RENEW);
e->disk = disk;
ecore_event_add(EEZE_EVENT_DISK_UNMOUNT, e, NULL, NULL);
break;
default:
INF("Could not unmount disk, retrying");
disk->mounter = ecore_exe_pipe_run(eina_strbuf_string_get(disk->unmount_cmd), 0, disk);
eeze_events = eina_list_append(eeze_events, disk);
return ECORE_CALLBACK_RENEW;
}
default:
INF("Could not unmount disk, retrying");
disk->mounter = ecore_exe_pipe_run(eina_strbuf_string_get(disk->unmount_cmd), 0, disk);
eeze_events = eina_list_append(eeze_events, disk);
return ECORE_CALLBACK_RENEW;
}
return ECORE_CALLBACK_RENEW;
}