From: Enlightenment S. <no-...@en...> - 2010-12-23 16:47:12
|
Log: fix sizeof use, thanks to kim woelders Author: discomfitor Date: 2010-12-23 08:47:05 -0800 (Thu, 23 Dec 2010) New Revision: 55739 Trac: http://trac.enlightenment.org/e/changeset/55739 Modified: trunk/e/src/bin/e_hints.c Modified: trunk/e/src/bin/e_hints.c =================================================================== --- trunk/e/src/bin/e_hints.c 2010-12-23 12:47:23 UTC (rev 55738) +++ trunk/e/src/bin/e_hints.c 2010-12-23 16:47:05 UTC (rev 55739) @@ -1435,7 +1435,8 @@ int num, i; memset(state, 0, sizeof(state)); - num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, state, sizeof(state)); + num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, + state, sizeof(state) / sizeof(state[0]); /* ugly, but avoids possible future overflow if more states are added */ if (!num) return; for (i = 0; (i < num) && (i < sizeof(state)); i++) |
From: Enlightenment S. <no-...@en...> - 2010-12-23 17:33:24
|
Log: I am super tired this morning :/ Author: discomfitor Date: 2010-12-23 09:33:16 -0800 (Thu, 23 Dec 2010) New Revision: 55740 Trac: http://trac.enlightenment.org/e/changeset/55740 Modified: trunk/e/src/bin/e_hints.c Modified: trunk/e/src/bin/e_hints.c =================================================================== --- trunk/e/src/bin/e_hints.c 2010-12-23 16:47:05 UTC (rev 55739) +++ trunk/e/src/bin/e_hints.c 2010-12-23 17:33:16 UTC (rev 55740) @@ -1436,7 +1436,7 @@ memset(state, 0, sizeof(state)); num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, - state, sizeof(state) / sizeof(state[0]); /* ugly, but avoids possible future overflow if more states are added */ + state, sizeof(state) / sizeof(state[0])); /* ugly, but avoids possible future overflow if more states are added */ if (!num) return; for (i = 0; (i < num) && (i < sizeof(state)); i++) |
From: Enlightenment S. <no-...@en...> - 2010-12-23 17:50:55
|
Log: fix explicit check to actually be the correct one, and use type instead of variable for sizeof Author: discomfitor Date: 2010-12-23 09:50:48 -0800 (Thu, 23 Dec 2010) New Revision: 55741 Trac: http://trac.enlightenment.org/e/changeset/55741 Modified: trunk/e/src/bin/e_hints.c Modified: trunk/e/src/bin/e_hints.c =================================================================== --- trunk/e/src/bin/e_hints.c 2010-12-23 17:33:16 UTC (rev 55740) +++ trunk/e/src/bin/e_hints.c 2010-12-23 17:50:48 UTC (rev 55741) @@ -1436,10 +1436,10 @@ memset(state, 0, sizeof(state)); num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, - state, sizeof(state) / sizeof(state[0])); /* ugly, but avoids possible future overflow if more states are added */ + state, sizeof(state) / sizeof(Ecore_X_Atom)); /* ugly, but avoids possible future overflow if more states are added */ if (!num) return; - for (i = 0; (i < num) && (i < sizeof(state)); i++) + for (i = 0; (i < num) && (i < sizeof(state) / sizeof(Ecore_X_Atom)); i++) { if (state[i] == E_ATOM_WINDOW_STATE_CENTERED) bd->client.e.state.centered = 1; |
From: Enlightenment S. <no-...@en...> - 2010-12-23 18:06:50
|
Log: apparently this was too hard to read for k-s ;) Author: discomfitor Date: 2010-12-23 10:06:43 -0800 (Thu, 23 Dec 2010) New Revision: 55742 Trac: http://trac.enlightenment.org/e/changeset/55742 Modified: trunk/e/src/bin/e_hints.c Modified: trunk/e/src/bin/e_hints.c =================================================================== --- trunk/e/src/bin/e_hints.c 2010-12-23 17:50:48 UTC (rev 55741) +++ trunk/e/src/bin/e_hints.c 2010-12-23 18:06:43 UTC (rev 55742) @@ -1436,10 +1436,10 @@ memset(state, 0, sizeof(state)); num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, - state, sizeof(state) / sizeof(Ecore_X_Atom)); /* ugly, but avoids possible future overflow if more states are added */ + state, sizeof(state) / sizeof(state[0])); /* ugly, but avoids possible future overflow if more states are added */ if (!num) return; - for (i = 0; (i < num) && (i < sizeof(state) / sizeof(Ecore_X_Atom)); i++) + for (i = 0; (i < num) && (i < sizeof(state) / sizeof(state[0])); i++) { if (state[i] == E_ATOM_WINDOW_STATE_CENTERED) bd->client.e.state.centered = 1; |
From: Enlightenment S. <no-...@en...> - 2011-01-03 01:49:48
|
Log: ecrustified for formatting Author: discomfitor Date: 2011-01-02 17:49:41 -0800 (Sun, 02 Jan 2011) New Revision: 55803 Trac: http://trac.enlightenment.org/e/changeset/55803 Modified: trunk/e/src/bin/e_fm_device.c Modified: trunk/e/src/bin/e_fm_device.c =================================================================== --- trunk/e/src/bin/e_fm_device.c 2011-01-03 01:29:37 UTC (rev 55802) +++ trunk/e/src/bin/e_fm_device.c 2011-01-03 01:49:41 UTC (rev 55803) @@ -11,7 +11,7 @@ static void _e_fm2_device_unmount_fail(E_Fm2_Mount *m) EINA_ARG_NONNULL(1); static Eina_List *_e_stores = NULL; -static Eina_List *_e_vols = NULL; +static Eina_List *_e_vols = NULL; EAPI void e_fm2_device_storage_add(E_Storage *s) @@ -20,50 +20,50 @@ s->validated = EINA_TRUE; _e_stores = eina_list_append(_e_stores, s); -/* +/* printf("STO+\n" - " udi: %s\n" - " bus: %s\n" - " drive_type: %s\n" - " model: %s\n" - " vendor: %s\n" - " serial: %s\n" - " removable: %i\n" - " media_available: %i\n" - " media_size: %lli\n" - " requires_eject: %i\n" - " hotpluggable: %i\n" - " media_check_enabled: %i\n" - " icon.drive: %s\n" - " icon.volume: %s\n\n" - , - s->udi, - s->bus, - s->drive_type, - s->model, - s->vendor, - s->serial, - s->removable, - s->media_available, - s->media_size, - s->requires_eject, - s->hotpluggable, - s->media_check_enabled, - s->icon.drive, - s->icon.volume); + " udi: %s\n" + " bus: %s\n" + " drive_type: %s\n" + " model: %s\n" + " vendor: %s\n" + " serial: %s\n" + " removable: %i\n" + " media_available: %i\n" + " media_size: %lli\n" + " requires_eject: %i\n" + " hotpluggable: %i\n" + " media_check_enabled: %i\n" + " icon.drive: %s\n" + " icon.volume: %s\n\n" + , + s->udi, + s->bus, + s->drive_type, + s->model, + s->vendor, + s->serial, + s->removable, + s->media_available, + s->media_size, + s->requires_eject, + s->hotpluggable, + s->media_check_enabled, + s->icon.drive, + s->icon.volume); */ if ((s->removable == 0) && - (s->media_available == 0) && - (s->media_size == 0) && - (s->requires_eject == 0) && - (s->hotpluggable == 0) && - (s->media_check_enabled == 0)) + (s->media_available == 0) && + (s->media_size == 0) && + (s->requires_eject == 0) && + (s->hotpluggable == 0) && + (s->media_check_enabled == 0)) { // printf(" Ignore this storage\n"); } else { - s->trackable = EINA_TRUE; + s->trackable = EINA_TRUE; } } @@ -71,18 +71,18 @@ e_fm2_device_storage_del(E_Storage *s) { // printf("STO- %s\n", s->udi); - _e_stores = eina_list_remove(_e_stores, s); - _e_fm_shared_device_storage_free(s); + _e_stores = eina_list_remove(_e_stores, s); + _e_fm_shared_device_storage_free(s); } EAPI E_Storage * e_fm2_device_storage_find(const char *udi) { Eina_List *l; - E_Storage *s; + E_Storage *s; if (!udi) return NULL; - EINA_LIST_FOREACH(_e_stores, l, s) + EINA_LIST_FOREACH(_e_stores, l, s) { if (!strcmp(udi, s->udi)) return s; } @@ -103,160 +103,159 @@ v->validated = EINA_TRUE; _e_vols = eina_list_append(_e_vols, v); -/* +/* printf("VOL+\n" - " udi: %s\n" - " uuid: %s\n" - " fstype: %s\n" - " size: %llu\n" - " label: %s\n" - " partition: %d\n" - " partition_number: %d\n" - " partition_label: %s\n" - " mounted: %d\n" - " mount_point: %s\n" - " parent: %s\n" - , - 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->parent); + " udi: %s\n" + " uuid: %s\n" + " fstype: %s\n" + " size: %llu\n" + " label: %s\n" + " partition: %d\n" + " partition_number: %d\n" + " partition_label: %s\n" + " mounted: %d\n" + " mount_point: %s\n" + " parent: %s\n" + , + 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->parent); */ - /* Check mount point */ +/* Check mount point */ if ((!v->mount_point) || (v->mount_point[0] == 0)) { - if (v->mount_point) eina_stringshare_del(v->mount_point); - v->mount_point = NULL; - v->mount_point = e_fm2_device_volume_mountpoint_get(v); - if ((!v->mount_point) || (v->mount_point[0] == 0)) - { - char buf[PATH_MAX]; - const char *id; - - if (v->mount_point) eina_stringshare_del(v->mount_point); - v->mount_point = NULL; - id = "disk"; - if ((v->uuid) && (v->uuid[0])) id = v->uuid; - if (ecore_file_is_dir("/media")) - snprintf(buf, sizeof(buf), "/media/%s", id); - else if (ecore_file_is_dir("/mnt")) - snprintf(buf, sizeof(buf), "/mnt/%s", id); - else if (ecore_file_is_dir("/tmp")) - snprintf(buf, sizeof(buf), "/tmp/%s", id); - else - buf[0] = 0; - v->mount_point = eina_stringshare_add(buf); - } + if (v->mount_point) eina_stringshare_del(v->mount_point); + v->mount_point = NULL; + v->mount_point = e_fm2_device_volume_mountpoint_get(v); + if ((!v->mount_point) || (v->mount_point[0] == 0)) + { + char buf[PATH_MAX]; + const char *id; + + if (v->mount_point) eina_stringshare_del(v->mount_point); + v->mount_point = NULL; + id = "disk"; + if ((v->uuid) && (v->uuid[0])) id = v->uuid; + if (ecore_file_is_dir("/media")) + snprintf(buf, sizeof(buf), "/media/%s", id); + else if (ecore_file_is_dir("/mnt")) + snprintf(buf, sizeof(buf), "/mnt/%s", id); + else if (ecore_file_is_dir("/tmp")) + snprintf(buf, sizeof(buf), "/tmp/%s", id); + else + buf[0] = 0; + v->mount_point = eina_stringshare_add(buf); + } } /* Search parent storage */ if ((s = e_fm2_device_storage_find(v->parent))) { - v->storage = s; - s->volumes = eina_list_append(s->volumes, v); + v->storage = s; + s->volumes = eina_list_append(s->volumes, v); } if (v->storage) { - char label[1024] = {0}; - char size[256] = {0}; - const char *icon = NULL; - unsigned long long sz; + char label[1024] = {0}; + char size[256] = {0}; + const char *icon = NULL; + unsigned long long sz; - /* Compute the size in a readable form */ - if (v->size) - { - if ((sz = (v->size / TEBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu TiB"), sz); - else if ((sz = (v->size / GIBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu GiB"), sz); - else if ((sz = (v->size / MEBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu MiB"), sz); - else if ((sz = (v->size / KIBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu KiB"), sz); - else - snprintf(size, sizeof(size) - 1, _("%llu B"), v->size); - } + /* Compute the size in a readable form */ + if (v->size) + { + if ((sz = (v->size / TEBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu TiB"), sz); + else if ((sz = (v->size / GIBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu GiB"), sz); + else if ((sz = (v->size / MEBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu MiB"), sz); + else if ((sz = (v->size / KIBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu KiB"), sz); + else + snprintf(size, sizeof(size) - 1, _("%llu B"), v->size); + } - /* Choose the label */ - if ((v->label) && (v->label[0])) - {} - else if ((v->partition_label) && (v->partition_label[0])) - snprintf(label, sizeof(label) - 1, "%s", v->partition_label); - else if (((v->storage->vendor) && (v->storage->vendor[0])) && - ((v->storage->model) && (v->storage->model[0]))) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s %s - %s", v->storage->vendor, v->storage->model, size); - else - snprintf(label, sizeof(label) - 1, "%s %s", v->storage->vendor, v->storage->model); - } - else if ((v->storage->model) && (v->storage->model[0])) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->model, size); - else - snprintf(label, sizeof(label) - 1, "%s", v->storage->model); - } - else if ((v->storage->vendor) && (v->storage->vendor[0])) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->vendor, size); - else - snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor); - } - else - snprintf(label, sizeof(label), _("Unknown Volume")); + /* Choose the label */ + if ((v->label) && (v->label[0])) + {}else if ((v->partition_label) && (v->partition_label[0])) + snprintf(label, sizeof(label) - 1, "%s", v->partition_label); + else if (((v->storage->vendor) && (v->storage->vendor[0])) && + ((v->storage->model) && (v->storage->model[0]))) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s %s - %s", v->storage->vendor, v->storage->model, size); + else + snprintf(label, sizeof(label) - 1, "%s %s", v->storage->vendor, v->storage->model); + } + else if ((v->storage->model) && (v->storage->model[0])) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->model, size); + else + snprintf(label, sizeof(label) - 1, "%s", v->storage->model); + } + else if ((v->storage->vendor) && (v->storage->vendor[0])) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->vendor, size); + else + snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor); + } + else + snprintf(label, sizeof(label), _("Unknown Volume")); - if (label[0]) - { - if (v->label) eina_stringshare_del(v->label); - v->label = eina_stringshare_add(label); - } + if (label[0]) + { + if (v->label) eina_stringshare_del(v->label); + v->label = eina_stringshare_add(label); + } - /* Choose the icon */ + /* Choose the icon */ /* http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html */ - if (v->storage->icon.volume) - icon = v->storage->icon.volume; - else - { - if (!strcmp(v->storage->drive_type, "disk")) - { - if (v->storage->removable == 0) - icon = "drive-harddisk"; - else - icon = "drive-removable-media"; - } - else if (!strcmp(v->storage->drive_type, "cdrom")) - icon = "drive-optical"; - else if (!strcmp(v->storage->drive_type, "floppy")) - icon = "media-floppy"; - else if (!strcmp(v->storage->drive_type, "tape")) - icon = "media-tape"; - else if (!strcmp(v->storage->drive_type, "compact_flash") - || !strcmp(v->storage->drive_type, "memory_stick") - || !strcmp(v->storage->drive_type, "smart_media") - || !strcmp(v->storage->drive_type, "sd_mmc")) - icon = "media-flash"; - } - if (icon) - { - if (v->icon) eina_stringshare_del(v->icon); - v->icon = eina_stringshare_add(icon); - } + if (v->storage->icon.volume) + icon = v->storage->icon.volume; + else + { + if (!strcmp(v->storage->drive_type, "disk")) + { + if (v->storage->removable == 0) + icon = "drive-harddisk"; + else + icon = "drive-removable-media"; + } + else if (!strcmp(v->storage->drive_type, "cdrom")) + icon = "drive-optical"; + else if (!strcmp(v->storage->drive_type, "floppy")) + icon = "media-floppy"; + else if (!strcmp(v->storage->drive_type, "tape")) + icon = "media-tape"; + else if (!strcmp(v->storage->drive_type, "compact_flash") + || !strcmp(v->storage->drive_type, "memory_stick") + || !strcmp(v->storage->drive_type, "smart_media") + || !strcmp(v->storage->drive_type, "sd_mmc")) + icon = "media-flash"; + } + if (icon) + { + if (v->icon) eina_stringshare_del(v->icon); + v->icon = eina_stringshare_add(icon); + } - if ((!v->mount_point) || - (strcmp(v->mount_point, "/") && - strcmp(v->mount_point, "/home") && - strcmp(v->mount_point, "/tmp"))) - _e_fm2_volume_write(v); + if ((!v->mount_point) || + (strcmp(v->mount_point, "/") && + strcmp(v->mount_point, "/home") && + strcmp(v->mount_point, "/tmp"))) + _e_fm2_volume_write(v); } } @@ -268,7 +267,7 @@ // printf("VOL- %s\n", v->udi); _e_vols = eina_list_remove(_e_vols, v); _e_fm2_volume_erase(v); - if (v->storage) + if (v->storage) { v->storage->volumes = eina_list_remove(v->storage->volumes, v); v->storage = NULL; @@ -287,72 +286,72 @@ char buf[PATH_MAX], buf2[PATH_MAX]; FILE *f; const char *id; - + if (!v->storage) return; id = ecore_file_file_get(v->storage->udi); // printf("vol write %s\n", id); e_user_dir_snprintf(buf, sizeof(buf), "fileman/favorites/|%s_%d.desktop", - id, v->partition_number); + id, v->partition_number); f = fopen(buf, "w"); if (f) { - fprintf(f, - "[Desktop Entry]\n" - "Encoding=UTF-8\n" - "Type=Link\n" - "X-Enlightenment-Type=Removable\n" - "X-Enlightenment-Removable-State=Full\n" - "Name=%s\n" - "Icon=%s\n" - "Comment=%s\n" - "URL=file:/%s\n" - , - v->label, - v->icon, - _("Removable Device"), - v->udi); - fclose(f); + fprintf(f, + "[Desktop Entry]\n" + "Encoding=UTF-8\n" + "Type=Link\n" + "X-Enlightenment-Type=Removable\n" + "X-Enlightenment-Removable-State=Full\n" + "Name=%s\n" + "Icon=%s\n" + "Comment=%s\n" + "URL=file:/%s\n" + , + v->label, + v->icon, + _("Removable Device"), + v->udi); + fclose(f); - if (e_config->device_desktop) - { - e_user_homedir_snprintf(buf2, sizeof(buf2), - "%s/|%s_%d.desktop", - _("Desktop"), id, v->partition_number); - ecore_file_symlink(buf, buf2); - } + if (e_config->device_desktop) + { + e_user_homedir_snprintf(buf2, sizeof(buf2), + "%s/|%s_%d.desktop", + _("Desktop"), id, v->partition_number); + ecore_file_symlink(buf, buf2); + } - /* FIXME: manipulate icon directly */ - _e_fm2_file_force_update(buf); - //_e_fm2_file_force_update(buf2); + /* FIXME: manipulate icon directly */ + _e_fm2_file_force_update(buf); + //_e_fm2_file_force_update(buf2); } } -#undef TEBIBYTE_SIZE -#undef GIBIBYTE_SIZE -#undef MEBIBYTE_SIZE -#undef KIBIBYTE_SIZE +#undef TEBIBYTE_SIZE +#undef GIBIBYTE_SIZE +#undef MEBIBYTE_SIZE +#undef KIBIBYTE_SIZE static void _e_fm2_volume_erase(E_Volume *v) { char buf[PATH_MAX] = {0}; const char *id; - + if (!v->storage) return; id = ecore_file_file_get(v->storage->udi); e_user_homedir_snprintf(buf, sizeof(buf), "%s/|%s_%d.desktop", - _("Desktop"), id, v->partition_number); + _("Desktop"), id, v->partition_number); ecore_file_unlink(buf); _e_fm2_file_force_update(buf); if (e_config->device_desktop) { - e_user_dir_snprintf(buf, sizeof(buf), - "fileman/favorites/|%s_%d.desktop", - id, v->partition_number); - ecore_file_unlink(buf); - _e_fm2_file_force_update(buf); + e_user_dir_snprintf(buf, sizeof(buf), + "fileman/favorites/|%s_%d.desktop", + id, v->partition_number); + ecore_file_unlink(buf); + _e_fm2_file_force_update(buf); } } @@ -361,7 +360,7 @@ { Eina_List *l; E_Volume *v; - + if (!udi) return NULL; EINA_LIST_FOREACH(_e_vols, l, v) @@ -382,9 +381,9 @@ if (v->mount_point) { // printf("GET MOUNTPOINT = %s\n", v->mount_point); - return eina_stringshare_add(v->mount_point); + return eina_stringshare_add(v->mount_point); } - + if (v->label && v->label[0] != '\0') snprintf(buf, sizeof(buf) - 1, "/media/%s", v->label); else if (v->uuid && v->uuid[0] != '\0') @@ -401,7 +400,8 @@ } EAPI void -e_fm2_device_mount_add(E_Volume *v, const char *mountpoint) +e_fm2_device_mount_add(E_Volume *v, + const char *mountpoint) { Eina_List *l; E_Fm2_Mount *m; @@ -409,8 +409,8 @@ v->mounted = EINA_TRUE; if (mountpoint && (*mountpoint != 0)) { - if (v->mount_point) - eina_stringshare_del(v->mount_point); + if (v->mount_point) + eina_stringshare_del(v->mount_point); v->mount_point = eina_stringshare_add(mountpoint); } @@ -424,14 +424,14 @@ e_fm2_device_mount_del(E_Volume *v) { E_Fm2_Mount *m; - + v->mounted = EINA_FALSE; - if (v->mount_point) + if (v->mount_point) { eina_stringshare_del(v->mount_point); v->mount_point = NULL; } - + EINA_LIST_FREE(v->mounts, m) { _e_fm2_device_unmount_ok(m); @@ -458,20 +458,22 @@ EINA_LIST_FOREACH(_e_vols, l, v) { - if (v->mounted - && v->mount_point - && !strncmp(path, v->mount_point, strlen(v->mount_point)) - && v->mounts) - return eina_list_data_get(v->mounts); + if (v->mounted + && v->mount_point + && !strncmp(path, v->mount_point, strlen(v->mount_point)) + && v->mounts) + return eina_list_data_get(v->mounts); } return NULL; } EAPI E_Fm2_Mount * -e_fm2_device_mount(E_Volume *v, - Ecore_Cb mount_ok, Ecore_Cb mount_fail, - Ecore_Cb unmount_ok, Ecore_Cb unmount_fail, - void *data) +e_fm2_device_mount(E_Volume *v, + Ecore_Cb mount_ok, + Ecore_Cb mount_fail, + Ecore_Cb unmount_ok, + Ecore_Cb unmount_fail, + void *data) { E_Fm2_Mount *m; @@ -479,14 +481,14 @@ m = calloc(1, sizeof(E_Fm2_Mount)); if (!m) return NULL; - m->udi = eina_stringshare_add(v->udi); - m->mount_ok = mount_ok; - m->mount_fail = mount_fail; - m->unmount_ok = unmount_ok; + m->udi = eina_stringshare_add(v->udi); + m->mount_ok = mount_ok; + m->mount_fail = mount_fail; + m->unmount_ok = unmount_ok; m->unmount_fail = unmount_fail; - m->data = data; - m->volume = v; - m->mounted = v->mounted; + m->data = data; + m->volume = v; + m->mounted = v->mounted; v->mounts = eina_list_prepend(v->mounts, m); @@ -495,7 +497,7 @@ if (!v->mounted) { v->auto_unmount = EINA_TRUE; - _e_fm2_client_mount(v->udi, v->mount_point); + _e_fm2_client_mount(v->udi, v->mount_point); } else { @@ -512,7 +514,7 @@ E_Fm2_Mount *m; v->mounted = EINA_FALSE; - if (v->mount_point) + if (v->mount_point) { eina_stringshare_del(v->mount_point); v->mount_point = NULL; @@ -555,10 +557,10 @@ { if (m->mounted) return; m->mounted = EINA_TRUE; - if (m->volume) - m->mount_point = eina_stringshare_add(m->volume->mount_point); - if (m->mount_ok) - m->mount_ok(m->data); + if (m->volume) + m->mount_point = eina_stringshare_add(m->volume->mount_point); + if (m->mount_ok) + m->mount_ok(m->data); // printf("MOUNT OK '%s'\n", m->mount_point); } @@ -571,7 +573,7 @@ eina_stringshare_del(m->mount_point); m->mount_point = NULL; } - if (m->mount_fail) + if (m->mount_fail) m->mount_fail(m->data); } @@ -585,8 +587,8 @@ eina_stringshare_del(m->mount_point); m->mount_point = NULL; } - if (m->unmount_ok) - m->unmount_ok(m->data); + if (m->unmount_ok) + m->unmount_ok(m->data); } static void @@ -594,7 +596,7 @@ { if (m->mounted) return; m->mounted = EINA_TRUE; - if (m->unmount_fail) + if (m->unmount_fail) m->unmount_fail(m->data); } @@ -609,18 +611,18 @@ EINA_LIST_FOREACH(_e_vols, l, v) { - if (!v) continue; + if (!v) continue; if (!v->storage) continue; id = ecore_file_file_get(v->storage->udi); e_user_dir_snprintf(buf, sizeof(buf), - "fileman/favorites/|%s_%d.desktop", - id, v->partition_number); + "fileman/favorites/|%s_%d.desktop", + id, v->partition_number); e_user_homedir_snprintf(buf2, sizeof(buf2), - "%s/|%s_%d.desktop", - _("Desktop"), id, v->partition_number); + "%s/|%s_%d.desktop", + _("Desktop"), id, v->partition_number); if (ecore_file_exists(buf) && !ecore_file_exists(buf2)) { @@ -640,14 +642,14 @@ EINA_LIST_FOREACH(_e_vols, l, v) { - if (!v) continue; + if (!v) continue; if (!v->storage) continue; id = ecore_file_file_get(v->storage->udi); e_user_homedir_snprintf(buf, sizeof(buf), - "%s/|%s_%d.desktop", - _("Desktop"), id, v->partition_number); + "%s/|%s_%d.desktop", + _("Desktop"), id, v->partition_number); if (ecore_file_exists(buf)) { @@ -657,8 +659,9 @@ } } -EAPI Eina_List* +EAPI Eina_List * e_fm2_device_volume_list_get(void) { return _e_vols; } + |
From: Enlightenment S. <no-...@en...> - 2011-01-03 01:54:10
|
Log: simplify a couple stringshare instances Author: discomfitor Date: 2011-01-02 17:54:01 -0800 (Sun, 02 Jan 2011) New Revision: 55804 Trac: http://trac.enlightenment.org/e/changeset/55804 Modified: trunk/e/src/bin/e_fm_device.c Modified: trunk/e/src/bin/e_fm_device.c =================================================================== --- trunk/e/src/bin/e_fm_device.c 2011-01-03 01:49:41 UTC (rev 55803) +++ trunk/e/src/bin/e_fm_device.c 2011-01-03 01:54:01 UTC (rev 55804) @@ -187,7 +187,8 @@ /* Choose the label */ if ((v->label) && (v->label[0])) - {}else if ((v->partition_label) && (v->partition_label[0])) + {} + else if ((v->partition_label) && (v->partition_label[0])) snprintf(label, sizeof(label) - 1, "%s", v->partition_label); else if (((v->storage->vendor) && (v->storage->vendor[0])) && ((v->storage->model) && (v->storage->model[0]))) @@ -214,11 +215,7 @@ else snprintf(label, sizeof(label), _("Unknown Volume")); - if (label[0]) - { - if (v->label) eina_stringshare_del(v->label); - v->label = eina_stringshare_add(label); - } + if (label[0]) eina_stringshare_replace(&v->label, label); /* Choose the icon */ /* http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html */ @@ -245,11 +242,7 @@ || !strcmp(v->storage->drive_type, "sd_mmc")) icon = "media-flash"; } - if (icon) - { - if (v->icon) eina_stringshare_del(v->icon); - v->icon = eina_stringshare_add(icon); - } + if (icon) eina_stringshare_replace(&v->icon, icon); if ((!v->mount_point) || (strcmp(v->mount_point, "/") && |
From: Enlightenment S. <no-...@en...> - 2011-01-04 02:13:24
|
Log: okay, this should work a bit better as a generated header now Author: discomfitor Date: 2011-01-03 18:13:18 -0800 (Mon, 03 Jan 2011) New Revision: 55835 Trac: http://trac.enlightenment.org/e/changeset/55835 Modified: trunk/e/src/bin/e_fm_shared_types.h.in Modified: trunk/e/src/bin/e_fm_shared_types.h.in =================================================================== --- trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-04 02:11:41 UTC (rev 55834) +++ trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-04 02:13:18 UTC (rev 55835) @@ -3,20 +3,25 @@ #include <Eina.h> #include <Ecore.h> -#include <E_DBus.h> +#if @EEZE_MOUNT_CONFIG@ +# include <Eeze.h> +# include <Eeze_Disk.h> +#endif +#if @DBUS_MOUNT_CONFIG@ +# include <E_DBus.h> +#endif + # define E_DEVICE_TYPE_STORAGE 1 # define E_DEVICE_TYPE_VOLUME 2 typedef struct _E_Storage E_Storage; typedef struct _E_Volume E_Volume; typedef struct _E_Fm2_Mount E_Fm2_Mount; -#if @EEZE_MOUNT_CONFIG@ -#else struct _E_Storage { int type; - const char *udi, *bus; + const char *udi; /* with eeze, this is actually the syspath */ const char *drive_type; const char *model, *vendor, *serial; @@ -38,6 +43,10 @@ Eina_Bool validated : 1; Eina_Bool trackable : 1; +#if @EEZE_MOUNT_CONFIG@ + Eeze_Disk *disk; +#endif + const char *bus; }; struct _E_Volume @@ -55,7 +64,6 @@ const char *parent; E_Storage *storage; - void *prop_handler; Eina_List *mounts; Eina_Bool validated : 1; @@ -63,7 +71,10 @@ Eina_Bool auto_unmount : 1; // unmount, when last associated fm window closed Eina_Bool first_time; // volume discovery in init sequence Ecore_Timer *guard; // operation guard timer +#if @DBUS_MOUNT_CONFIG@ DBusPendingCall *op; // d-bus call handle + void *prop_handler; +#endif }; struct _E_Fm2_Mount @@ -83,4 +94,3 @@ }; #endif -#endif |
From: Enlightenment S. <no-...@en...> - 2011-01-04 22:02:59
|
Log: add some type detections for upcoming udisks/eeze support Author: discomfitor Date: 2011-01-04 14:02:53 -0800 (Tue, 04 Jan 2011) New Revision: 55857 Trac: http://trac.enlightenment.org/e/changeset/55857 Modified: trunk/e/src/bin/e_fm_device.c Modified: trunk/e/src/bin/e_fm_device.c =================================================================== --- trunk/e/src/bin/e_fm_device.c 2011-01-04 20:19:04 UTC (rev 55856) +++ trunk/e/src/bin/e_fm_device.c 2011-01-04 22:02:53 UTC (rev 55857) @@ -223,23 +223,24 @@ icon = v->storage->icon.volume; else { - if (!strcmp(v->storage->drive_type, "disk")) + if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk"))) { if (v->storage->removable == 0) icon = "drive-harddisk"; else icon = "drive-removable-media"; } - else if (!strcmp(v->storage->drive_type, "cdrom")) + else if ((!strcmp(v->storage->drive_type, "cdrom")) || (!strncmp(v->storage->drive_type, "optical", 7))) icon = "drive-optical"; - else if (!strcmp(v->storage->drive_type, "floppy")) + else if (!strncmp(v->storage->drive_type, "floppy", 6)) icon = "media-floppy"; else if (!strcmp(v->storage->drive_type, "tape")) icon = "media-tape"; else if (!strcmp(v->storage->drive_type, "compact_flash") || !strcmp(v->storage->drive_type, "memory_stick") || !strcmp(v->storage->drive_type, "smart_media") - || !strcmp(v->storage->drive_type, "sd_mmc")) + || !strcmp(v->storage->drive_type, "sd_mmc") + || !strncmp(v->storage->drive_type, "flash", 5)) icon = "media-flash"; } if (icon) eina_stringshare_replace(&v->icon, icon); |
From: Enlightenment S. <no-...@en...> - 2011-01-05 05:39:36
|
Log: fix annoying comparison is always true warning Author: discomfitor Date: 2011-01-04 21:39:30 -0800 (Tue, 04 Jan 2011) New Revision: 55862 Trac: http://trac.enlightenment.org/e/changeset/55862 Modified: trunk/e/src/bin/e_fm.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2011-01-05 05:17:18 UTC (rev 55861) +++ trunk/e/src/bin/e_fm.c 2011-01-05 05:39:30 UTC (rev 55862) @@ -644,8 +644,7 @@ }; const char *status; - if ((ere->status >= 0) && - (ere->status < sizeof(status_strings) / sizeof(status_strings[0]))) + if (ere->status <= E_FM2_OP_STATUS_ERROR) status = status_strings[ere->status]; else status = status_strings[0]; |
From: Enlightenment S. <no-...@en...> - 2011-01-05 05:44:36
|
Log: add enum for operation type to volumes Author: discomfitor Date: 2011-01-04 21:44:29 -0800 (Tue, 04 Jan 2011) New Revision: 55863 Trac: http://trac.enlightenment.org/e/changeset/55863 Modified: trunk/e/src/bin/e_fm_shared_types.h.in Modified: trunk/e/src/bin/e_fm_shared_types.h.in =================================================================== --- trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-05 05:39:30 UTC (rev 55862) +++ trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-05 05:44:29 UTC (rev 55863) @@ -18,6 +18,14 @@ typedef struct _E_Volume E_Volume; typedef struct _E_Fm2_Mount E_Fm2_Mount; +typedef enum +{ + E_VOLUME_OP_TYPE_NONE, + E_VOLUME_OP_TYPE_MOUNT, + E_VOLUME_OP_TYPE_UNMOUNT, + E_VOLUME_OP_TYPE_EJECT +} E_Volume_Op_Type; + struct _E_Storage { int type; @@ -71,6 +79,7 @@ Eina_Bool auto_unmount : 1; // unmount, when last associated fm window closed Eina_Bool first_time; // volume discovery in init sequence Ecore_Timer *guard; // operation guard timer + E_Volume_Op_Type optype; #if @DBUS_MOUNT_CONFIG@ DBusPendingCall *op; // d-bus call handle void *prop_handler; |
From: Enlightenment S. <no-...@en...> - 2011-01-05 19:42:30
|
Log: remove random semicolon? Author: discomfitor Date: 2011-01-05 11:42:24 -0800 (Wed, 05 Jan 2011) New Revision: 55901 Trac: http://trac.enlightenment.org/e/changeset/55901 Modified: trunk/e/src/bin/e_fm.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2011-01-05 19:00:10 UTC (rev 55900) +++ trunk/e/src/bin/e_fm.c 2011-01-05 19:42:24 UTC (rev 55901) @@ -3243,7 +3243,7 @@ { if (!v->mount_point) v->mount_point = e_fm2_device_volume_mountpoint_get(v); - ; + if (PRT("%s/%s", v->mount_point, path) >= sizeof(buf)) return NULL; } |
From: Enlightenment S. <no-...@en...> - 2011-01-06 00:16:39
|
Log: whoops forgot to commit this Author: discomfitor Date: 2011-01-05 16:16:32 -0800 (Wed, 05 Jan 2011) New Revision: 55910 Trac: http://trac.enlightenment.org/e/changeset/55910 Modified: trunk/e/src/bin/e_fm_shared_types.h.in Modified: trunk/e/src/bin/e_fm_shared_types.h.in =================================================================== --- trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-05 23:23:30 UTC (rev 55909) +++ trunk/e/src/bin/e_fm_shared_types.h.in 2011-01-06 00:16:32 UTC (rev 55910) @@ -20,6 +20,14 @@ typedef enum { + EFM_MODE_USING_RASTER_MOUNT, + EFM_MODE_USING_HAL_MOUNT, + EFM_MODE_USING_UDISKS_MOUNT, + EFM_MODE_USING_EEZE_MOUNT +} Efm_Mode; + +typedef enum +{ E_VOLUME_OP_TYPE_NONE, E_VOLUME_OP_TYPE_MOUNT, E_VOLUME_OP_TYPE_UNMOUNT, @@ -80,6 +88,8 @@ Eina_Bool first_time; // volume discovery in init sequence Ecore_Timer *guard; // operation guard timer E_Volume_Op_Type optype; + Efm_Mode efm_mode; + #if @DBUS_MOUNT_CONFIG@ DBusPendingCall *op; // d-bus call handle void *prop_handler; |
From: Enlightenment S. <no-...@en...> - 2011-01-06 01:17:27
|
Log: forgot to add new enum to the volume edd :X Author: discomfitor Date: 2011-01-05 17:17:21 -0800 (Wed, 05 Jan 2011) New Revision: 55912 Trac: http://trac.enlightenment.org/e/changeset/55912 Modified: trunk/e/src/bin/e_fm_shared_codec.c Modified: trunk/e/src/bin/e_fm_shared_codec.c =================================================================== --- trunk/e/src/bin/e_fm_shared_codec.c 2011-01-06 00:57:27 UTC (rev 55911) +++ trunk/e/src/bin/e_fm_shared_codec.c 2011-01-06 01:17:21 UTC (rev 55912) @@ -31,6 +31,7 @@ DAT(mount_point, STRING); DAT(parent, STRING); DAT(first_time, CHAR); + DAT(efm_mode, UINT); #undef DAT return edd; } |
From: Enlightenment S. <no-...@en...> - 2011-01-06 01:29:10
|
Log: free disk when using eeze mount, disabled for now Author: discomfitor Date: 2011-01-05 17:29:03 -0800 (Wed, 05 Jan 2011) New Revision: 55913 Trac: http://trac.enlightenment.org/e/changeset/55913 Modified: trunk/e/src/bin/e_fm_shared_device.c Modified: trunk/e/src/bin/e_fm_shared_device.c =================================================================== --- trunk/e/src/bin/e_fm_shared_device.c 2011-01-06 01:17:21 UTC (rev 55912) +++ trunk/e/src/bin/e_fm_shared_device.c 2011-01-06 01:29:03 UTC (rev 55913) @@ -18,6 +18,9 @@ if (s->serial) eina_stringshare_del(s->serial); if (s->icon.drive) eina_stringshare_del(s->icon.drive); if (s->icon.volume) eina_stringshare_del(s->icon.volume); +#ifdef HAVE_EEZE_MOUNT + if (s->disk) eeze_disk_free(s->disk); +#endif free(s); } |
From: Enlightenment S. <no-...@en...> - 2011-01-06 03:57:45
|
Log: split _e_fm2_device_volume_setup off to be reused later for setting up volumes which get added before their storage; now removables have the correct icons in udisks mode! Author: discomfitor Date: 2011-01-05 19:57:37 -0800 (Wed, 05 Jan 2011) New Revision: 55922 Trac: http://trac.enlightenment.org/e/changeset/55922 Modified: trunk/e/src/bin/e_fm_device.c Modified: trunk/e/src/bin/e_fm_device.c =================================================================== --- trunk/e/src/bin/e_fm_device.c 2011-01-06 03:53:34 UTC (rev 55921) +++ trunk/e/src/bin/e_fm_device.c 2011-01-06 03:57:37 UTC (rev 55922) @@ -2,6 +2,11 @@ #include "e_fm_shared_codec.h" #include "e_fm_shared_device.h" +#define TEBIBYTE_SIZE 1099511627776LL +#define GIBIBYTE_SIZE 1073741824 +#define MEBIBYTE_SIZE 1048576 +#define KIBIBYTE_SIZE 1024 + static void _e_fm2_volume_write(E_Volume *v) EINA_ARG_NONNULL(1); static void _e_fm2_volume_erase(E_Volume *v) EINA_ARG_NONNULL(1); static void _e_fm2_device_mount_free(E_Fm2_Mount *m); EINA_ARG_NONNULL(1); @@ -13,9 +18,102 @@ static Eina_List *_e_stores = NULL; static Eina_List *_e_vols = NULL; +static void +_e_fm2_device_volume_setup(E_Volume *v) +{ + char label[1024] = {0}; + char size[256] = {0}; + const char *icon = NULL; + unsigned long long sz; + + /* Compute the size in a readable form */ + if (v->size) + { + if ((sz = (v->size / TEBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu TiB"), sz); + else if ((sz = (v->size / GIBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu GiB"), sz); + else if ((sz = (v->size / MEBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu MiB"), sz); + else if ((sz = (v->size / KIBIBYTE_SIZE)) > 0) + snprintf(size, sizeof(size) - 1, _("%llu KiB"), sz); + else + snprintf(size, sizeof(size) - 1, _("%llu B"), v->size); + } + + /* Choose the label */ + if ((v->label) && (v->label[0])) + {} + else if ((v->partition_label) && (v->partition_label[0])) + snprintf(label, sizeof(label) - 1, "%s", v->partition_label); + else if (((v->storage->vendor) && (v->storage->vendor[0])) && + ((v->storage->model) && (v->storage->model[0]))) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s %s - %s", v->storage->vendor, v->storage->model, size); + else + snprintf(label, sizeof(label) - 1, "%s %s", v->storage->vendor, v->storage->model); + } + else if ((v->storage->model) && (v->storage->model[0])) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->model, size); + else + snprintf(label, sizeof(label) - 1, "%s", v->storage->model); + } + else if ((v->storage->vendor) && (v->storage->vendor[0])) + { + if (size[0] != '\0') + snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->vendor, size); + else + snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor); + } + else + snprintf(label, sizeof(label), _("Unknown Volume")); + + if (label[0]) eina_stringshare_replace(&v->label, label); + + /* Choose the icon */ + /* http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html */ + if (v->storage->icon.volume) + icon = v->storage->icon.volume; + else + { + if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk"))) + { + if (v->storage->removable == 0) + icon = "drive-harddisk"; + else + icon = "drive-removable-media"; + } + else if ((!strcmp(v->storage->drive_type, "cdrom")) || (!strncmp(v->storage->drive_type, "optical", 7))) + icon = "drive-optical"; + else if (!strncmp(v->storage->drive_type, "floppy", 6)) + icon = "media-floppy"; + else if (!strcmp(v->storage->drive_type, "tape")) + icon = "media-tape"; + else if (!strcmp(v->storage->drive_type, "compact_flash") + || !strcmp(v->storage->drive_type, "memory_stick") + || !strcmp(v->storage->drive_type, "smart_media") + || !strcmp(v->storage->drive_type, "sd_mmc") + || !strncmp(v->storage->drive_type, "flash", 5)) + icon = "media-flash"; + } + if (icon) eina_stringshare_replace(&v->icon, icon); + + if ((!v->mount_point) || + (strcmp(v->mount_point, "/") && + strcmp(v->mount_point, "/home") && + strcmp(v->mount_point, "/tmp"))) + _e_fm2_volume_write(v); +} + EAPI void e_fm2_device_storage_add(E_Storage *s) { + Eina_List *l; + E_Volume *v; + if (e_fm2_device_storage_find(s->udi)) return; s->validated = EINA_TRUE; @@ -65,6 +163,15 @@ { s->trackable = EINA_TRUE; } + + EINA_LIST_FOREACH(_e_vols, l, v) /* catch volumes which were added before their storage */ + { + if ((!v->storage) && (s->udi == v->parent)) + { + v->storage = s; + _e_fm2_device_volume_setup(v); + } + } } EAPI void @@ -89,10 +196,6 @@ return NULL; } -#define TEBIBYTE_SIZE 1099511627776LL -#define GIBIBYTE_SIZE 1073741824 -#define MEBIBYTE_SIZE 1048576 -#define KIBIBYTE_SIZE 1024 EAPI void e_fm2_device_volume_add(E_Volume *v) @@ -164,94 +267,8 @@ s->volumes = eina_list_append(s->volumes, v); } - if (v->storage) - { - char label[1024] = {0}; - char size[256] = {0}; - const char *icon = NULL; - unsigned long long sz; - - /* Compute the size in a readable form */ - if (v->size) - { - if ((sz = (v->size / TEBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu TiB"), sz); - else if ((sz = (v->size / GIBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu GiB"), sz); - else if ((sz = (v->size / MEBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu MiB"), sz); - else if ((sz = (v->size / KIBIBYTE_SIZE)) > 0) - snprintf(size, sizeof(size) - 1, _("%llu KiB"), sz); - else - snprintf(size, sizeof(size) - 1, _("%llu B"), v->size); - } - - /* Choose the label */ - if ((v->label) && (v->label[0])) - {} - else if ((v->partition_label) && (v->partition_label[0])) - snprintf(label, sizeof(label) - 1, "%s", v->partition_label); - else if (((v->storage->vendor) && (v->storage->vendor[0])) && - ((v->storage->model) && (v->storage->model[0]))) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s %s - %s", v->storage->vendor, v->storage->model, size); - else - snprintf(label, sizeof(label) - 1, "%s %s", v->storage->vendor, v->storage->model); - } - else if ((v->storage->model) && (v->storage->model[0])) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->model, size); - else - snprintf(label, sizeof(label) - 1, "%s", v->storage->model); - } - else if ((v->storage->vendor) && (v->storage->vendor[0])) - { - if (size[0] != '\0') - snprintf(label, sizeof(label) - 1, "%s - %s", v->storage->vendor, size); - else - snprintf(label, sizeof(label) - 1, "%s", v->storage->vendor); - } - else - snprintf(label, sizeof(label), _("Unknown Volume")); - - if (label[0]) eina_stringshare_replace(&v->label, label); - - /* Choose the icon */ - /* http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html */ - if (v->storage->icon.volume) - icon = v->storage->icon.volume; - else - { - if ((!v->storage->drive_type) || (!strcmp(v->storage->drive_type, "disk"))) - { - if (v->storage->removable == 0) - icon = "drive-harddisk"; - else - icon = "drive-removable-media"; - } - else if ((!strcmp(v->storage->drive_type, "cdrom")) || (!strncmp(v->storage->drive_type, "optical", 7))) - icon = "drive-optical"; - else if (!strncmp(v->storage->drive_type, "floppy", 6)) - icon = "media-floppy"; - else if (!strcmp(v->storage->drive_type, "tape")) - icon = "media-tape"; - else if (!strcmp(v->storage->drive_type, "compact_flash") - || !strcmp(v->storage->drive_type, "memory_stick") - || !strcmp(v->storage->drive_type, "smart_media") - || !strcmp(v->storage->drive_type, "sd_mmc") - || !strncmp(v->storage->drive_type, "flash", 5)) - icon = "media-flash"; - } - if (icon) eina_stringshare_replace(&v->icon, icon); - - if ((!v->mount_point) || - (strcmp(v->mount_point, "/") && - strcmp(v->mount_point, "/home") && - strcmp(v->mount_point, "/tmp"))) - _e_fm2_volume_write(v); - } + if (v->storage) _e_fm2_device_volume_setup(v); + } EAPI void |
From: Enlightenment S. <no-...@en...> - 2011-01-08 06:04:39
|
Log: fix segv when using udisks to mount during ipc reads Author: discomfitor Date: 2011-01-07 22:04:32 -0800 (Fri, 07 Jan 2011) New Revision: 55989 Trac: http://trac.enlightenment.org/e/changeset/55989 Modified: trunk/e/src/bin/e_fm.c trunk/e/src/bin/e_fm_device.c Modified: trunk/e/src/bin/e_fm.c =================================================================== --- trunk/e/src/bin/e_fm.c 2011-01-08 05:55:25 UTC (rev 55988) +++ trunk/e/src/bin/e_fm.c 2011-01-08 06:04:32 UTC (rev 55989) @@ -3000,10 +3000,11 @@ if ((e->data) && (e->size > 1)) { E_Volume *v; - char *udi, *mountpoint; + char *udi, *mountpoint = NULL; udi = e->data; - mountpoint = udi + strlen(udi) + 1; + if ((unsigned int)e->size != (strlen(udi) + 1)) + mountpoint = udi + strlen(udi) + 1; v = e_fm2_device_volume_find(udi); if (v) { @@ -3016,7 +3017,7 @@ a = e_action_find("fileman"); m = e_manager_list(); - if (a && a->func.go && m && eina_list_data_get(m)) + if (a && a->func.go && m && eina_list_data_get(m) && mountpoint) a->func.go(E_OBJECT(eina_list_data_get(m)), mountpoint); } } Modified: trunk/e/src/bin/e_fm_device.c =================================================================== --- trunk/e/src/bin/e_fm_device.c 2011-01-08 05:55:25 UTC (rev 55988) +++ trunk/e/src/bin/e_fm_device.c 2011-01-08 06:04:32 UTC (rev 55989) @@ -421,12 +421,8 @@ E_Fm2_Mount *m; v->mounted = EINA_TRUE; - if (mountpoint && (*mountpoint != 0)) - { - if (v->mount_point) - eina_stringshare_del(v->mount_point); - v->mount_point = eina_stringshare_add(mountpoint); - } + if (mountpoint && (mountpoint[0])) + eina_stringshare_replace(&v->mount_point, mountpoint); EINA_LIST_FOREACH(v->mounts, l, m) _e_fm2_device_mount_ok(m); |
From: Enlightenment S. <no-...@en...> - 2011-01-16 01:11:54
|
Log: avoid possible strlen(NULL) Author: discomfitor Date: 2011-01-15 17:11:46 -0800 (Sat, 15 Jan 2011) New Revision: 56144 Trac: http://trac.enlightenment.org/e/changeset/56144 Modified: trunk/e/src/bin/e_menu.c Modified: trunk/e/src/bin/e_menu.c =================================================================== --- trunk/e/src/bin/e_menu.c 2011-01-15 20:25:44 UTC (rev 56143) +++ trunk/e/src/bin/e_menu.c 2011-01-16 01:11:46 UTC (rev 56144) @@ -619,10 +619,13 @@ if (mi->icon_key) eina_stringshare_del(mi->icon_key); mi->icon = NULL; mi->icon_key = NULL; - if (icon) mi->icon = eina_stringshare_add(icon); - len = strlen(icon); - if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj"))) - mi->icon_key = eina_stringshare_add("icon"); + if (icon) + { + mi->icon = eina_stringshare_add(icon); + len = strlen(icon); + if ((len > 4) && (!strcasecmp(icon + len - 4, ".edj"))) + mi->icon_key = eina_stringshare_add("icon"); + } mi->changed = 1; mi->menu->changed = 1; } |
From: Enlightenment S. <no-...@en...> - 2011-01-16 01:20:46
|
Log: prevent garbage value determining flow if list is null Author: discomfitor Date: 2011-01-15 17:20:38 -0800 (Sat, 15 Jan 2011) New Revision: 56147 Trac: http://trac.enlightenment.org/e/changeset/56147 Modified: trunk/e/src/bin/e_int_shelf_config.c Modified: trunk/e/src/bin/e_int_shelf_config.c =================================================================== --- trunk/e/src/bin/e_int_shelf_config.c 2011-01-16 01:19:22 UTC (rev 56146) +++ trunk/e/src/bin/e_int_shelf_config.c 2011-01-16 01:20:38 UTC (rev 56147) @@ -376,7 +376,7 @@ E_Desk *desk; Eina_List *l; E_Config_Shelf_Desk *sd; - int show; + int show = 0; desk = e_desk_current_get(cfdata->es->zone); EINA_LIST_FOREACH(cfdata->escfg->desk_list, l, sd) |
From: Enlightenment S. <no-...@en...> - 2011-01-16 02:08:28
|
Log: add __UNUSED__ somewhat indiscriminately here since we're doing crazy macros anyway Author: discomfitor Date: 2011-01-15 18:08:22 -0800 (Sat, 15 Jan 2011) New Revision: 56159 Trac: http://trac.enlightenment.org/e/changeset/56159 Modified: trunk/e/src/bin/e_actions.c Modified: trunk/e/src/bin/e_actions.c =================================================================== --- trunk/e/src/bin/e_actions.c 2011-01-16 02:05:33 UTC (rev 56158) +++ trunk/e/src/bin/e_actions.c 2011-01-16 02:08:22 UTC (rev 56159) @@ -11,7 +11,7 @@ if (act) act->func.go = _e_actions_act_##name##_go; \ } #define ACT_FN_GO(act, use) \ - static void _e_actions_act_##act##_go(E_Object *obj, const char *params use) + static void _e_actions_act_##act##_go(E_Object *obj __UNUSED__, const char *params use) #define ACT_GO_MOUSE(name) \ { \ @@ -19,7 +19,7 @@ if (act) act->func.go_mouse = _e_actions_act_##name##_go_mouse; \ } #define ACT_FN_GO_MOUSE(act, use) \ - static void _e_actions_act_##act##_go_mouse(E_Object *obj, const char *params use, Ecore_Event_Mouse_Button *ev) + static void _e_actions_act_##act##_go_mouse(E_Object *obj __UNUSED__, const char *params use, Ecore_Event_Mouse_Button *ev __UNUSED__) #define ACT_GO_WHEEL(name) \ { \ @@ -27,7 +27,7 @@ if (act) act->func.go_wheel = _e_actions_act_##name##_go_wheel; \ } #define ACT_FN_GO_WHEEL(act, use) \ - static void _e_actions_act_##act##_go_wheel(E_Object *obj, const char *params use, Ecore_Event_Mouse_Wheel *ev) + static void _e_actions_act_##act##_go_wheel(E_Object *obj __UNUSED__, const char *params use, Ecore_Event_Mouse_Wheel *ev __UNUSED__) #define ACT_GO_EDGE(name) \ { \ @@ -35,7 +35,7 @@ if (act) act->func.go_edge = _e_actions_act_##name##_go_edge; \ } #define ACT_FN_GO_EDGE(act, use) \ - static void _e_actions_act_##act##_go_edge(E_Object *obj, const char *params use, E_Event_Zone_Edge *ev) + static void _e_actions_act_##act##_go_edge(E_Object *obj __UNUSED__, const char *params use, E_Event_Zone_Edge *ev __UNUSED__) #define ACT_GO_SIGNAL(name) \ { \ @@ -43,7 +43,7 @@ if (act) act->func.go_signal = _e_actions_act_##name##_go_signal; \ } #define ACT_FN_GO_SIGNAL(act, use) \ - static void _e_actions_act_##act##_go_signal(E_Object *obj, const char *params use, const char *sig, const char *src) + static void _e_actions_act_##act##_go_signal(E_Object *obj __UNUSED__, const char *params use, const char *sig, const char *src) #define ACT_GO_KEY(name) \ { \ @@ -51,7 +51,7 @@ if (act) act->func.go_key = _e_actions_act_##name##_go_key; \ } #define ACT_FN_GO_KEY(act, use) \ - static void _e_actions_act_##act##_go_key(E_Object *obj, const char *params use, Ecore_Event_Key *ev) + static void _e_actions_act_##act##_go_key(E_Object *obj __UNUSED__, const char *params use, Ecore_Event_Key *ev __UNUSED__) #define ACT_END(name) \ { \ @@ -59,7 +59,7 @@ if (act) act->func.end = _e_actions_act_##name##_end; \ } #define ACT_FN_END(act, use) \ - static void _e_actions_act_##act##_end(E_Object *obj, const char *params use) + static void _e_actions_act_##act##_end(E_Object *obj __UNUSED__, const char *params use) #define ACT_END_MOUSE(name) \ { \ @@ -67,7 +67,7 @@ if (act) act->func.end_mouse = _e_actions_act_##name##_end_mouse; \ } #define ACT_FN_END_MOUSE(act, use) \ - static void _e_actions_act_##act##_end_mouse(E_Object *obj, const char *params use, Ecore_Event_Mouse_Button *ev) + static void _e_actions_act_##act##_end_mouse(E_Object *obj __UNUSED__, const char *params use, Ecore_Event_Mouse_Button *ev __UNUSED__) #define ACT_END_KEY(name) \ { \ @@ -75,7 +75,7 @@ if (act) act->func.end_key = _e_actions_act_##name##_end_key; \ } #define ACT_FN_END_KEY(act, use) \ - static void _e_actions_act_##act##_end_key(E_Object *obj, const char *params use, Ecore_Event_Key *ev) + static void _e_actions_act_##act##_end_key(E_Object *obj __UNUSED__, const char *params use, Ecore_Event_Key *ev __UNUSED__) #define ACT_GO_ACPI(name) \ { \ @@ -83,7 +83,7 @@ if (act) act->func.go_acpi = _e_actions_act_##name##_go_acpi; \ } #define ACT_FN_GO_ACPI(act, use) \ - static void _e_actions_act_##act##_go_acpi(E_Object *obj, const char *params use, E_Event_Acpi *ev) + static void _e_actions_act_##act##_go_acpi(E_Object *obj __UNUSED__, const char *params use, E_Event_Acpi *ev __UNUSED__) /* local subsystem functions */ static void _e_action_free(E_Action *act); |
From: Enlightenment S. <no-...@en...> - 2011-05-15 22:11:36
|
Log: ecrustified Author: discomfitor Date: 2011-05-15 15:11:30 -0700 (Sun, 15 May 2011) New Revision: 59416 Trac: http://trac.enlightenment.org/e/changeset/59416 Modified: trunk/e/src/bin/e_sys_main.c Modified: trunk/e/src/bin/e_sys_main.c =================================================================== --- trunk/e/src/bin/e_sys_main.c 2011-05-15 21:41:39 UTC (rev 59415) +++ trunk/e/src/bin/e_sys_main.c 2011-05-15 22:11:30 UTC (rev 59416) @@ -15,16 +15,25 @@ #include <Eina.h> /* local subsystem functions */ -static int auth_action_ok(char *a, uid_t uid, gid_t gid, gid_t *gl, int gn, gid_t egid); -static int auth_etc_enlightenment_sysactions(char *a, char *u, char **g); -static char *get_word(char *s, char *d); +static int auth_action_ok(char *a, + uid_t uid, + gid_t gid, + gid_t *gl, + int gn, + gid_t egid); +static int auth_etc_enlightenment_sysactions(char *a, + char *u, + char **g); +static char *get_word(char *s, + char *d); /* local subsystem globals */ static Eina_Hash *actions = NULL; /* externally accessible functions */ int -main(int argc, char **argv) +main(int argc, + char **argv) { int i, gn; int test = 0; @@ -34,29 +43,29 @@ for (i = 1; i < argc; i++) { - if ((!strcmp(argv[i], "-h")) || - (!strcmp(argv[i], "-help")) || - (!strcmp(argv[i], "--help"))) - { - printf( - "This is an internal tool for Enlightenment.\n" - "do not use it.\n" - ); - exit(0); - } + if ((!strcmp(argv[i], "-h")) || + (!strcmp(argv[i], "-help")) || + (!strcmp(argv[i], "--help"))) + { + printf( + "This is an internal tool for Enlightenment.\n" + "do not use it.\n" + ); + exit(0); + } } if (argc == 3) { - if (!strcmp(argv[1], "-t")) test = 1; - action = argv[2]; + if (!strcmp(argv[1], "-t")) test = 1; + action = argv[2]; } else if (argc == 2) { - action = argv[1]; + action = argv[1]; } else { - exit(1); + exit(1); } uid = getuid(); @@ -65,45 +74,50 @@ gn = getgroups(65536, gl); if (gn < 0) { - printf("ERROR: MEMBER OF MORE THAN 65536 GROUPS\n"); - exit(3); + printf("ERROR: MEMBER OF MORE THAN 65536 GROUPS\n"); + exit(3); } if (setuid(0) != 0) { - printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n"); - exit(5); + printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n"); + exit(5); } if (setgid(0) != 0) { - printf("ERROR: UNABLE TO ASSUME ROOT GROUP PRIVILEDGES\n"); - exit(7); + printf("ERROR: UNABLE TO ASSUME ROOT GROUP PRIVILEDGES\n"); + exit(7); } - + eina_init(); if (!auth_action_ok(action, uid, gid, gl, gn, egid)) { - printf("ERROR: ACTION NOT ALLOWED: %s\n", action); - exit(10); + printf("ERROR: ACTION NOT ALLOWED: %s\n", action); + exit(10); } /* we can add more levels of auth here */ - + cmd = eina_hash_find(actions, action); if (!cmd) { - printf("ERROR: UNDEFINED ACTION: %s\n", action); - exit(20); + printf("ERROR: UNDEFINED ACTION: %s\n", action); + exit(20); } if (!test) return system(cmd); - + eina_shutdown(); - + return 0; } /* local subsystem functions */ static int -auth_action_ok(char *a, uid_t uid, gid_t gid, gid_t *gl, int gn, gid_t egid) +auth_action_ok(char *a, + uid_t uid, + gid_t gid, + gid_t *gl, + int gn, + gid_t egid) { struct passwd *pw; struct group *gp; @@ -119,22 +133,22 @@ gp = getgrgid(gid); if (gp) { - grp[j] = gp->gr_name; - j++; + grp[j] = gp->gr_name; + j++; } for (i = 0; i < gn; i++) { - if (gl[i] != egid) - { - gp = getgrgid(gl[i]); - if (gp) - { - g = alloca(strlen(gp->gr_name) + 1); - strcpy(g, gp->gr_name); - grp[j] = g; - j++; - } - } + if (gl[i] != egid) + { + gp = getgrgid(gl[i]); + if (gp) + { + g = alloca(strlen(gp->gr_name) + 1); + strcpy(g, gp->gr_name); + grp[j] = g; + j++; + } + } } grp[j] = NULL; /* first stage - check: @@ -142,13 +156,16 @@ */ ret = auth_etc_enlightenment_sysactions(a, usr, grp); if (ret == 1) return 1; - else if (ret == -1) return 0; + else if (ret == -1) + return 0; /* the DEFAULT - allow */ return 1; } static int -auth_etc_enlightenment_sysactions(char *a, char *u, char **g) +auth_etc_enlightenment_sysactions(char *a, + char *u, + char **g) { FILE *f; char file[4096], buf[4096], id[4096], ugname[4096], perm[4096], act[4096]; @@ -156,124 +173,128 @@ int len, line = 0, ok = 0; int allow = 0; int deny = 0; - + snprintf(file, sizeof(file), "/etc/enlightenment/sysactions.conf"); f = fopen(file, "r"); if (!f) { - snprintf(file, sizeof(file), PACKAGE_SYSCONF_DIR"/enlightenment/sysactions.conf"); - f = fopen(file, "r"); - if (!f) return 0; + snprintf(file, sizeof(file), PACKAGE_SYSCONF_DIR "/enlightenment/sysactions.conf"); + f = fopen(file, "r"); + if (!f) return 0; } while (fgets(buf, sizeof(buf), f)) { - line++; - len = strlen(buf); - if (len < 1) continue; - if (buf[len - 1] == '\n') buf[len - 1] = 0; - /* format: - * - * # comment - * user: username [allow:|deny:] halt reboot ... - * group: groupname [allow:|deny:] suspend ... - */ - if (buf[0] == '#') continue; - p = buf; - p = get_word(p, id); - p = get_word(p, ugname); - pp = p; - p = get_word(p, perm); - allow = 0; - deny = 0; - if (!strcmp(id, "user:")) - { - if (!fnmatch(ugname, u, 0)) - { - if (!strcmp(perm, "allow:")) allow = 1; - else if (!strcmp(perm, "deny:")) deny = 1; - else - goto malformed; - } - else - continue; - } - else if (!strcmp(id, "group:")) - { - int matched; - - matched = 0; - for (gp = g; *gp; gp++) - { - if (!fnmatch(ugname, *gp, 0)) - { - matched = 1; - if (!strcmp(perm, "allow:")) allow = 1; - else if (!strcmp(perm, "deny:")) deny = 1; - else - goto malformed; - } - } - if (!matched) continue; - } - else if (!strcmp(id, "action:")) - { - while ((*pp) && (isspace(*pp))) pp++; - s = eina_hash_find(actions, ugname); - if (s) eina_hash_del(actions, ugname, s); - if (!actions) actions = eina_hash_string_superfast_new(free); - eina_hash_add(actions, ugname, strdup(pp)); - continue; - } - else if (id[0] == 0) - continue; - else - goto malformed; - - for (;;) - { - p = get_word(p, act); - if (act[0] == 0) break; - if (!fnmatch(act, a, 0)) - { - if (allow) ok = 1; - else if (deny) ok = -1; - goto done; - } - } - - continue; - malformed: - printf("WARNING: %s:%i\n" - "LINE: '%s'\n" - "MALFORMED LINE. SKIPPED.\n", - file, line, buf); + line++; + len = strlen(buf); + if (len < 1) continue; + if (buf[len - 1] == '\n') buf[len - 1] = 0; + /* format: + * + * # comment + * user: username [allow:|deny:] halt reboot ... + * group: groupname [allow:|deny:] suspend ... + */ + if (buf[0] == '#') continue; + p = buf; + p = get_word(p, id); + p = get_word(p, ugname); + pp = p; + p = get_word(p, perm); + allow = 0; + deny = 0; + if (!strcmp(id, "user:")) + { + if (!fnmatch(ugname, u, 0)) + { + if (!strcmp(perm, "allow:")) allow = 1; + else if (!strcmp(perm, "deny:")) + deny = 1; + else + goto malformed; + } + else + continue; + } + else if (!strcmp(id, "group:")) + { + int matched; + + matched = 0; + for (gp = g; *gp; gp++) + { + if (!fnmatch(ugname, *gp, 0)) + { + matched = 1; + if (!strcmp(perm, "allow:")) allow = 1; + else if (!strcmp(perm, "deny:")) + deny = 1; + else + goto malformed; + } + } + if (!matched) continue; + } + else if (!strcmp(id, "action:")) + { + while ((*pp) && (isspace(*pp))) pp++; + s = eina_hash_find(actions, ugname); + if (s) eina_hash_del(actions, ugname, s); + if (!actions) actions = eina_hash_string_superfast_new(free); + eina_hash_add(actions, ugname, strdup(pp)); + continue; + } + else if (id[0] == 0) + continue; + else + goto malformed; + + for (;; ) + { + p = get_word(p, act); + if (act[0] == 0) break; + if (!fnmatch(act, a, 0)) + { + if (allow) ok = 1; + else if (deny) + ok = -1; + goto done; + } + } + + continue; +malformed: + printf("WARNING: %s:%i\n" + "LINE: '%s'\n" + "MALFORMED LINE. SKIPPED.\n", + file, line, buf); } - done: +done: fclose(f); return ok; } static char * -get_word(char *s, char *d) +get_word(char *s, + char *d) { char *p1, *p2; - + p1 = s; p2 = d; while (*p1) { - if (p2 == d) - { - if (isspace(*p1)) - { - p1++; - continue; - } - } - if (isspace(*p1)) break; - *p2 = *p1; - p1++; - p2++; + if (p2 == d) + { + if (isspace(*p1)) + { + p1++; + continue; + } + } + if (isspace(*p1)) break; + *p2 = *p1; + p1++; + p2++; } *p2 = 0; return p1; |
From: Enlightenment S. <no-...@en...> - 2011-05-15 22:17:21
|
Log: fix typos in printfs Author: discomfitor Date: 2011-05-15 15:17:15 -0700 (Sun, 15 May 2011) New Revision: 59417 Trac: http://trac.enlightenment.org/e/changeset/59417 Modified: trunk/e/src/bin/e_sys_main.c Modified: trunk/e/src/bin/e_sys_main.c =================================================================== --- trunk/e/src/bin/e_sys_main.c 2011-05-15 22:11:30 UTC (rev 59416) +++ trunk/e/src/bin/e_sys_main.c 2011-05-15 22:17:15 UTC (rev 59417) @@ -79,12 +79,12 @@ } if (setuid(0) != 0) { - printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n"); + printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEGES\n"); exit(5); } if (setgid(0) != 0) { - printf("ERROR: UNABLE TO ASSUME ROOT GROUP PRIVILEDGES\n"); + printf("ERROR: UNABLE TO ASSUME ROOT GROUP PRIVILEGES\n"); exit(7); } |
From: Enlightenment S. <no-...@en...> - 2011-05-15 23:47:50
|
Log: eeze mount prep: allow enlightenment_sys to run mount/umount commands when properly formatted and specified in sysactions.conf Author: discomfitor Date: 2011-05-15 16:47:42 -0700 (Sun, 15 May 2011) New Revision: 59424 Trac: http://trac.enlightenment.org/e/changeset/59424 Modified: trunk/e/src/bin/e_sys_main.c Modified: trunk/e/src/bin/e_sys_main.c =================================================================== --- trunk/e/src/bin/e_sys_main.c 2011-05-15 22:58:36 UTC (rev 59423) +++ trunk/e/src/bin/e_sys_main.c 2011-05-15 23:47:42 UTC (rev 59424) @@ -37,6 +37,7 @@ { int i, gn; int test = 0; + Eina_Bool mnt = EINA_FALSE; char *action, *cmd; uid_t uid; gid_t gid, gl[65536], egid; @@ -54,10 +55,23 @@ exit(0); } } - if (argc == 3) + if (argc >= 3) { - if (!strcmp(argv[1], "-t")) test = 1; - action = argv[2]; + if ((argc == 3) && (!strcmp(argv[1], "-t"))) + { + test = 1; + action = argv[2]; + } + else + { + const char *s; + + s = strrchr(argv[1], '/'); + if ((!s) || (!(++s))) exit(1); /* eeze always uses complete path */ + if (strcmp(s, "mount") && strcmp(s, "umount")) exit(1); + mnt = EINA_TRUE; + action = argv[1]; + } } else if (argc == 2) { @@ -97,17 +111,36 @@ } /* we can add more levels of auth here */ + /* when mounting, this will match the exact path to the exe, + * as required in sysactions.conf + * this is intentionally pedantic for security + */ cmd = eina_hash_find(actions, action); if (!cmd) { printf("ERROR: UNDEFINED ACTION: %s\n", action); exit(20); } - if (!test) return system(cmd); + if ((!test) && (!mnt)) return system(cmd); + if (mnt) + { + Eina_Strbuf *buf; + buf = eina_strbuf_new(); + if (!buf) goto err; + for (i = 1; i < argc; i++) + eina_strbuf_append_printf(buf, "%s ", argv[i]); + return system(eina_strbuf_string_get(buf)); + } + eina_shutdown(); return 0; + +err: + printf("ERROR: MEMORY CRISIS\n"); + eina_shutdown(); + return 30; } /* local subsystem functions */ |
From: Enlightenment S. <no-...@en...> - 2011-05-16 10:34:03
|
Log: add some rudimentary dir management for mounting (creation/deletion of /media/$uuid dirs) Author: discomfitor Date: 2011-05-16 03:33:57 -0700 (Mon, 16 May 2011) New Revision: 59440 Trac: http://trac.enlightenment.org/e/changeset/59440 Modified: trunk/e/src/bin/e_sys_main.c Modified: trunk/e/src/bin/e_sys_main.c =================================================================== --- trunk/e/src/bin/e_sys_main.c 2011-05-16 09:52:16 UTC (rev 59439) +++ trunk/e/src/bin/e_sys_main.c 2011-05-16 10:33:57 UTC (rev 59440) @@ -5,6 +5,7 @@ #include <unistd.h> #include <string.h> #include <sys/types.h> +#include <sys/stat.h> #include <pwd.h> #include <grp.h> #include <fnmatch.h> @@ -125,14 +126,68 @@ if (mnt) { Eina_Strbuf *buf; + int ret; + const char *mp; buf = eina_strbuf_new(); if (!buf) goto err; for (i = 1; i < argc; i++) - eina_strbuf_append_printf(buf, "%s ", argv[i]); - return system(eina_strbuf_string_get(buf)); + { + if (!strncmp(argv[i], "/media/", 7)) + { + mp = argv[i]; + if (!strcmp(action, "mount")) + { + struct stat s; + + if (stat("/media", &s)) + { + mode_t um; + + um = umask(0); + if (mkdir("/media", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) + { + printf("ERROR: COULD NOT CREATE DIRECTORY /media\n"); + exit(40); + } + umask(um); + } + else if (!S_ISDIR(s.st_mode)) + { + printf("ERROR: NOT A DIRECTORY: /media\n"); + exit(40); + } + + if (stat(argv[i], &s)) + { + mode_t um; + + um = umask(0); + if (mkdir(argv[i], S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) + { + printf("ERROR: COULD NOT CREATE DIRECTORY %s\n", argv[i]); + exit(40); + } + umask(um); + } + else if (!S_ISDIR(s.st_mode)) + { + printf("ERROR: NOT A DIRECTORY: %s\n", argv[i]); + exit(40); + } + } + } + eina_strbuf_append_printf(buf, "%s ", argv[i]); + } + ret = system(eina_strbuf_string_get(buf)); + if ((!strcmp(action, "umount")) && (!ret)) + { + if (rmdir(mp)) + printf("ERROR: COULD NOT UNLINK MOUNT POINT %s\n", mp); + } + return ret; } - + eina_shutdown(); return 0; |
From: Enlightenment S. <no-...@en...> - 2011-05-16 11:03:52
|
Log: also allow eject Author: discomfitor Date: 2011-05-16 04:03:45 -0700 (Mon, 16 May 2011) New Revision: 59444 Trac: http://trac.enlightenment.org/e/changeset/59444 Modified: trunk/e/src/bin/e_sys_main.c Modified: trunk/e/src/bin/e_sys_main.c =================================================================== --- trunk/e/src/bin/e_sys_main.c 2011-05-16 11:03:06 UTC (rev 59443) +++ trunk/e/src/bin/e_sys_main.c 2011-05-16 11:03:45 UTC (rev 59444) @@ -69,7 +69,7 @@ s = strrchr(argv[1], '/'); if ((!s) || (!(++s))) exit(1); /* eeze always uses complete path */ - if (strcmp(s, "mount") && strcmp(s, "umount")) exit(1); + if (strcmp(s, "mount") && strcmp(s, "umount") && strcmp(s, "eject")) exit(1); mnt = EINA_TRUE; action = argv[1]; } |
From: Enlightenment S. <no-...@en...> - 2011-06-29 14:13:41
|
Log: ecrustified Author: discomfitor Date: 2011-06-29 07:13:34 -0700 (Wed, 29 Jun 2011) New Revision: 60819 Trac: http://trac.enlightenment.org/e/changeset/60819 Modified: trunk/e/src/bin/e_ipc.c Modified: trunk/e/src/bin/e_ipc.c =================================================================== --- trunk/e/src/bin/e_ipc.c 2011-06-29 13:58:42 UTC (rev 60818) +++ trunk/e/src/bin/e_ipc.c 2011-06-29 14:13:34 UTC (rev 60819) @@ -2,9 +2,15 @@ #ifdef USE_IPC /* local subsystem functions */ -static Eina_Bool _e_ipc_cb_client_add(void *data __UNUSED__, int type __UNUSED__, void *event); -static Eina_Bool _e_ipc_cb_client_del(void *data __UNUSED__, int type __UNUSED__, void *event); -static Eina_Bool _e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event); +static Eina_Bool _e_ipc_cb_client_add(void *data __UNUSED__, + int type __UNUSED__, + void *event); +static Eina_Bool _e_ipc_cb_client_del(void *data __UNUSED__, + int type __UNUSED__, + void *event); +static Eina_Bool _e_ipc_cb_client_data(void *data __UNUSED__, + int type __UNUSED__, + void *event); /* local subsystem globals */ static Ecore_Ipc_Server *_e_ipc_server = NULL; @@ -32,35 +38,35 @@ } else { - struct stat st; + struct stat st; - if (stat(buf, &st) == 0) - { - if ((st.st_uid == - getuid()) && - ((st.st_mode & (S_IFDIR|S_IRWXU|S_IRWXG|S_IRWXO)) == - (S_IRWXU|S_IFDIR))) - { - } - else - { - e_error_message_show(_("Possible IPC Hack Attempt. The IPC socket\n" - "directory already exists BUT has permissions\n" - "that are too leanient (must only be readable\n" "and writable by the owner, and nobody else)\n" - "or is not owned by you. Please check:\n" - "%s/enlightenment-%s\n"), tmp, user); - return 0; - } - } - else - { - e_error_message_show(_("The IPC socket directory cannot be created or\n" - "examined.\n" - "Please check:\n" - "%s/enlightenment-%s\n"), - tmp, user); - return 0; - } + if (stat(buf, &st) == 0) + { + if ((st.st_uid == + getuid()) && + ((st.st_mode & (S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO)) == + (S_IRWXU | S_IFDIR))) + { + } + else + { + e_error_message_show(_("Possible IPC Hack Attempt. The IPC socket\n" + "directory already exists BUT has permissions\n" + "that are too leanient (must only be readable\n" "and writable by the owner, and nobody else)\n" + "or is not owned by you. Please check:\n" + "%s/enlightenment-%s\n"), tmp, user); + return 0; + } + } + else + { + e_error_message_show(_("The IPC socket directory cannot be created or\n" + "examined.\n" + "Please check:\n" + "%s/enlightenment-%s\n"), + tmp, user); + return 0; + } } snprintf(buf, sizeof(buf), "%s/enlightenment-%s/disp-%s-%i", tmp, user, disp, pid); _e_ipc_server = ecore_ipc_server_add(ECORE_IPC_LOCAL_SYSTEM, buf, 0, NULL); @@ -84,8 +90,8 @@ e_ipc_codec_shutdown(); if (_e_ipc_server) { - ecore_ipc_server_del(_e_ipc_server); - _e_ipc_server = NULL; + ecore_ipc_server_del(_e_ipc_server); + _e_ipc_server = NULL; } #endif return 1; @@ -94,7 +100,9 @@ #ifdef USE_IPC /* local subsystem globals */ static Eina_Bool -_e_ipc_cb_client_add(void *data __UNUSED__, int type __UNUSED__, void *event) +_e_ipc_cb_client_add(void *data __UNUSED__, + int type __UNUSED__, + void *event) { Ecore_Ipc_Event_Client_Add *e; @@ -104,7 +112,9 @@ } static Eina_Bool -_e_ipc_cb_client_del(void *data __UNUSED__, int type __UNUSED__, void *event) +_e_ipc_cb_client_del(void *data __UNUSED__, + int type __UNUSED__, + void *event) { Ecore_Ipc_Event_Client_Del *e; @@ -119,7 +129,9 @@ } static Eina_Bool -_e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event) +_e_ipc_cb_client_data(void *data __UNUSED__, + int type __UNUSED__, + void *event) { Ecore_Ipc_Event_Client_Data *e; @@ -133,67 +145,73 @@ case E_IPC_DOMAIN_EVENT: switch (e->minor) { - case E_IPC_OP_EXEC_ACTION: - { - E_Ipc_2Str *req = NULL; + case E_IPC_OP_EXEC_ACTION: + { + E_Ipc_2Str *req = NULL; - if (e_ipc_codec_2str_dec(e->data, e->size, &req)) - { - Eina_List *m = e_manager_list(); - int len, ok = 0; - void *d; + if (e_ipc_codec_2str_dec(e->data, e->size, &req)) + { + Eina_List *m = e_manager_list(); + int len, ok = 0; + void *d; - if (m) - { - E_Manager *man = eina_list_data_get(m); + if (m) + { + E_Manager *man = eina_list_data_get(m); - if (man) - { - E_Action *act = e_action_find(req->str1); + if (man) + { + E_Action *act = e_action_find(req->str1); - if (act && act->func.go) - { - act->func.go(E_OBJECT(man), req->str2); - ok = 1; - } - } - } + if (act && act->func.go) + { + act->func.go(E_OBJECT(man), req->str2); + ok = 1; + } + } + } - d = e_ipc_codec_int_enc(ok, &len); - if (d) - { - ecore_ipc_client_send(e->client, - E_IPC_DOMAIN_REPLY, - E_IPC_OP_EXEC_ACTION_REPLY, - 0, 0, 0, d, len); - free(d); - } + d = e_ipc_codec_int_enc(ok, &len); + if (d) + { + ecore_ipc_client_send(e->client, + E_IPC_DOMAIN_REPLY, + E_IPC_OP_EXEC_ACTION_REPLY, + 0, 0, 0, d, len); + free(d); + } - if (req) - { - E_FREE(req->str1); - E_FREE(req->str2); - E_FREE(req); - } - } - } + if (req) + { + E_FREE(req->str1); + E_FREE(req->str2); + E_FREE(req); + } + } + } + break; + + default: break; - default: - break; } - break; + break; + case E_IPC_DOMAIN_THUMB: - e_thumb_client_data(e); - break; + e_thumb_client_data(e); + break; + case E_IPC_DOMAIN_FM: - e_fm2_client_data(e); - break; + e_fm2_client_data(e); + break; + case E_IPC_DOMAIN_INIT: - e_init_client_data(e); - break; + e_init_client_data(e); + break; + default: - break; + break; } return 1; } + #endif |