enlightenment-module-places/src/e_mod_eeze.c

155 lines
4.2 KiB
C

#include "places_config.h"
#ifdef PLACES_HAVE_EEZE
#include <e.h>
#include "e_mod_places.h"
#include <Eeze.h>
#include <Eeze_Disk.h>
/* Local Function Prototypes */
/* Local Variables */
// Eina_Bool eeze_mount_mtab_scan (void)
// Eina_Bool eeze_mount_fstab_scan (void)
// Eina_Bool eeze_mount_tabs_watch (void)
// void eeze_mount_tabs_unwatch (void)
// Eina_Bool eeze_disk_mount (Eeze_Disk *disk)
// Eina_Bool eeze_disk_unmount (Eeze_Disk *disk)
// Eina_Bool eeze_disk_eject (Eeze_Disk *disk)
/* Implementation */
void _places_eeze_disk_print(Eeze_Disk *disk)
{
eeze_disk_scan(disk); // NEEDED ??
printf("PLACES: SysPath: %s\n", eeze_disk_syspath_get(disk));
printf("PLACES: devpath: %s\n", eeze_disk_devpath_get(disk));
printf("PLACES: mount_point: %s\n", eeze_disk_mount_point_get(disk));
printf("PLACES: mountopts: %ld\n", eeze_disk_mountopts_get(disk));
printf("PLACES: label: %s\n", eeze_disk_label_get(disk));
printf("PLACES: type: %d\n", eeze_disk_type_get(disk));
printf("PLACES: fstype: %s\n", eeze_disk_fstype_get(disk));
if (eeze_disk_devpath_get(disk)) // prevent eeze segfault :/
printf("PLACES: mounted: %d\n", eeze_disk_mounted_get(disk));
printf("PLACES: removable: %d\n", eeze_disk_removable_get(disk));
printf("PLACES: mount_wrapper: %s\n", eeze_disk_mount_wrapper_get(disk));
printf("PLACES: vendor: %s\n", eeze_disk_vendor_get(disk));
printf("PLACES: model: %s\n", eeze_disk_model_get(disk));
printf("PLACES: serial: %s\n", eeze_disk_serial_get(disk));
printf("PLACES: uuid: %s\n", eeze_disk_uuid_get(disk));
printf("PLACES: -----------------------------------------------\n");
}
Eina_Bool
places_eeze_init(void)
{
printf("PLACES: *****************************************\n");
printf("PLACES: eeze: init()\n");
// init eeze
if (!eeze_init())
{
printf("PLACES: Impossible to setup eeze.\n");
return EINA_FALSE;
}
// This will fail on compilation/runtime if Disk functions not available
eeze_disk_function();
// check eeze mount/umont/eject support
if (!eeze_disk_can_mount() ||
!eeze_disk_can_unmount() ||
!eeze_disk_can_eject())
{
printf("PLACES: Eeze don't have mount/umount/eject support.\n");
eeze_shutdown();
return EINA_FALSE;
}
if (!eeze_mount_tabs_watch())
{
printf("PLACES: Cannot setup watcher for fstab/mtab.\n");
eeze_shutdown();
return EINA_FALSE;
}
eeze_mount_fstab_scan();
eeze_mount_mtab_scan();
Eina_List *disks;
const char *syspath;
Eeze_Disk *disk;
disks = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
printf("PLACES: Found the following internal drive:\n");
EINA_LIST_FREE(disks, syspath)
{
disk = eeze_disk_new(syspath);
_places_eeze_disk_print(disk);
eina_stringshare_del(syspath);
eeze_disk_free(disk);
}
disks = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_MOUNTABLE, NULL);
printf("PLACES: Found the following mountable drive:\n");
EINA_LIST_FREE(disks, syspath)
{
disk = eeze_disk_new(syspath);
_places_eeze_disk_print(disk);
eeze_disk_free(disk);
eina_stringshare_del(syspath);
}
disks = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_CDROM, NULL);
printf("PLACES: Found the following cdrom drive:\n");
EINA_LIST_FREE(disks, syspath)
{
disk = eeze_disk_new(syspath);
_places_eeze_disk_print(disk);
eeze_disk_free(disk);
eina_stringshare_del(syspath);
}
disks = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_REMOVABLE, NULL);
printf("PLACES: Found the following removable drive:\n");
EINA_LIST_FREE(disks, syspath)
{
disk = eeze_disk_new(syspath);
_places_eeze_disk_print(disk);
eeze_disk_free(disk);
eina_stringshare_del(syspath);
}
printf("PLACES: Searching for your root:\n");
disk = eeze_disk_new_from_mount("/");
if (disk)
{
_places_eeze_disk_print(disk);
eeze_disk_free(disk);
}
return EINA_TRUE;
}
void
places_eeze_shutdown(void)
{
eeze_mount_tabs_unwatch();
eeze_shutdown();
}
/* Internals */
#endif