From f40368992f1cae771d0b8c9411fa6acc3914438a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sun, 15 May 2011 22:32:17 +0000 Subject: [PATCH] fix result code handling for mount: errors can be ORed SVN revision: 59419 --- legacy/eeze/src/lib/eeze_disk_mount.c | 77 +++++++++++++++-------------------- 1 file changed, 32 insertions(+), 45 deletions(-) diff --git a/legacy/eeze/src/lib/eeze_disk_mount.c b/legacy/eeze/src/lib/eeze_disk_mount.c index adff819..6ce182f 100644 --- a/legacy/eeze/src/lib/eeze_disk_mount.c +++ b/legacy/eeze/src/lib/eeze_disk_mount.c @@ -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) - switch (ev->exit_code) - { - case 1: + { + if (ev->exit_code & 1) _eeze_disk_mount_error_handler(disk, "incorrect invocation or permissions"); - break; - - case 2: + else if (ev->exit_code & 2) _eeze_disk_mount_error_handler(disk, "system error (out of memory, cannot fork, no more loop devices)"); - break; - - case 4: + else if (ev->exit_code & 4) _eeze_disk_mount_error_handler(disk, "internal mount bug"); - break; - - case 8: + else if (ev->exit_code & 8) _eeze_disk_mount_error_handler(disk, "user interrupt"); - break; - - case 16: + else if (ev->exit_code & 16) _eeze_disk_mount_error_handler(disk, "problems writing or locking /etc/mtab"); - break; - - case 32: + else if (ev->exit_code & 32) _eeze_disk_mount_error_handler(disk, "mount failure"); - break; - - case 64: + else if (ev->exit_code & 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; - } + 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 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; + } return ECORE_CALLBACK_RENEW; } -- 2.7.4