return get_mount_entries("/etc/mtab", NULL);
}
+int is_user_mountable(struct mntent *me)
+{
+ return hasmntopt(me, "user")!=NULL;
+}
+
+char **get_fstab_devices(void)
+{
+ return get_mount_entries("/etc/fstab", &is_user_mountable);
+}
+
int is_in_array(char **names, char *devname)
{
int i;
return 0;
}
-int can_mount(Property *props)
+int can_mount(Property *props, char **allowed)
{
static char *removable_buses[] = { "usb", "firewire", 0 };
+ char *devname;
char *devpath;
int i;
+ devname = get_property_value(props, "DEVNAME");
+ if(is_in_array(allowed, devname))
+ return 1;
+
if(!match_property_value(props, "DEVTYPE", "partition"))
return 0;
Device *devices = NULL;
int n_devices = 0;
char **mounted = NULL;
+ char **fstab = NULL;
int i;
nodes = get_device_nodes("/dev/disk/by-id");
mounted = get_mounted_devices();
+ fstab = get_fstab_devices();
for(i=0; nodes[i]; ++i)
{
printf(" %s = %s\n", props[j].name, props[j].value);
}
- if(can_mount(props))
+ if(can_mount(props, fstab))
{
char *devname;
char *label;