gnome 2.8 Changes for FAQ: 19. How do I mount my removable media
in Nautilus?
Franz Klammer
klammer at webonaut.com
Thu Oct 7 04:24:43 PDT 2004
gnome 2.8 hase some changes in handling of usermounting
removerable volumes and i think that should be added to the FAQ.
1. don't use mounting points that are symlinks
if /home is a symlink to /usr/home it is important that
in /etc/fstab is the real path entered e.g.:
/dev/acd0 /usr/home/username/mnt/cdrom ...
if someone mounting to /home/username/cdrom the directory/mountpoint
will be changed to root:wheel _and_ the original (unmounted)
icon is still to see in Place Computer (of course also the cd-rom icon)
and when klicking on it nautlius claims that the device is bussy.
2. there are naming conventions of the mounting points:
(relative to e.g.: /usr/home/username/mnt/)
CD-ROMS => cdrom
CD-RW => cdrw
Memory Sticks => memstick
and so on ...
without that nautilus didn't work correctly.
i had hours with trying and trubles until figured this out... :-(
attached the gnomevfs-function where i found all the names.
3. (maybe) OT question: when i insert my memory stick the access right set
for the device created by usbd (/dev/da0s1) don't allow access from a
normal user. currently i helped my with a dirty trick:
adding to /etc/devfs.conf:
perm da0s1 0666
and to /etc/usbd.conf:
device "MEGA"
devname "umass0"
attach "/bin/sleep 5; /etc/rc.d/devfs restart"
if there is a (which i'm sure there is) a good solution that
should also be added to the FAQ.
here to see how it looks like two screenshots of "Computer":
http://webonaut.com/temp/unmounted.png
http://webonaut.com/temp/mounted.png
franz.
-------------- next part --------------
static GnomeVFSDeviceType
get_device_type_from_device_and_mount (const char *device_path, const char *mount_path)
{
const char *name;
char *basename;
if (g_str_has_prefix (device_path, "/dev/loop")) {
return GNOME_VFS_DEVICE_TYPE_LOOPBACK;
} else if (g_str_has_prefix (device_path, "/dev/vn")) {
return GNOME_VFS_DEVICE_TYPE_LOOPBACK;
} else if (g_str_has_prefix (device_path, "/vol/dev/diskette/") ||
g_str_has_prefix (device_path, "/dev/fd") ||
g_str_has_prefix (device_path, "/dev/floppy")) {
return GNOME_VFS_DEVICE_TYPE_FLOPPY;
} else if (g_str_has_prefix (device_path, "/dev/cdrom")) {
return GNOME_VFS_DEVICE_TYPE_CDROM;
} else if (g_str_has_prefix (device_path, "/dev/acd")) {
return GNOME_VFS_DEVICE_TYPE_CDROM;
} else if (g_str_has_prefix (device_path, "/dev/cd")) {
return GNOME_VFS_DEVICE_TYPE_CDROM;
} else if (g_str_has_prefix (device_path, "/vol/")) {
name = mount_path + strlen ("/");
if (g_str_has_prefix (name, "cdrom")) {
return GNOME_VFS_DEVICE_TYPE_CDROM;
} else if (g_str_has_prefix (name, "floppy")) {
return GNOME_VFS_DEVICE_TYPE_FLOPPY;
} else if (g_str_has_prefix (device_path, "/vol/dev/diskette/")) {
return GNOME_VFS_DEVICE_TYPE_FLOPPY;
} else if (g_str_has_prefix (name, "rmdisk")) {
return GNOME_VFS_DEVICE_TYPE_ZIP;
} else if (g_str_has_prefix (name, "jaz")) {
return GNOME_VFS_DEVICE_TYPE_JAZ;
} else if (g_str_has_prefix (name, "camera")) {
return GNOME_VFS_DEVICE_TYPE_CAMERA;
} else if (g_str_has_prefix (name, "memstick")) {
return GNOME_VFS_DEVICE_TYPE_MEMORY_STICK;
}
} else {
basename = g_path_get_basename (mount_path);
if (g_str_has_prefix (basename, "cdrom") ||
g_str_has_prefix (basename, "cdwriter") ||
g_str_has_prefix (basename, "burn") ||
g_str_has_prefix (basename, "cdr") ||
g_str_has_prefix (basename, "cdrw") ||
g_str_has_prefix (basename, "dvdrom") ||
g_str_has_prefix (basename, "dvdram") ||
g_str_has_prefix (basename, "dvdr") ||
g_str_has_prefix (basename, "dvdrw") ||
g_str_has_prefix (basename, "cdrom_dvdrom") ||
g_str_has_prefix (basename, "cdrom_dvdram") ||
g_str_has_prefix (basename, "cdrom_dvdr") ||
g_str_has_prefix (basename, "cdrom_dvdrw") ||
g_str_has_prefix (basename, "cdr_dvdrom") ||
g_str_has_prefix (basename, "cdr_dvdram") ||
g_str_has_prefix (basename, "cdr_dvdr") ||
g_str_has_prefix (basename, "cdr_dvdrw") ||
g_str_has_prefix (basename, "cdrw_dvdrom") ||
g_str_has_prefix (basename, "cdrw_dvdram") ||
g_str_has_prefix (basename, "cdrw_dvdr") ||
g_str_has_prefix (basename, "cdrw_dvdrw")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_CDROM;
} else if (g_str_has_prefix (basename, "floppy")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_FLOPPY;
} else if (g_str_has_prefix (basename, "zip")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_ZIP;
} else if (g_str_has_prefix (basename, "jaz")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_JAZ;
} else if (g_str_has_prefix (basename, "camera")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_CAMERA;
} else if (g_str_has_prefix (basename, "memstick") ||
g_str_has_prefix (basename, "compact_flash") ||
g_str_has_prefix (basename, "memory_stick") ||
g_str_has_prefix (basename, "smart_media") ||
g_str_has_prefix (basename, "sd_mmc") ||
g_str_has_prefix (basename, "ram")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_MEMORY_STICK;
} else if (g_str_has_prefix (basename, "ipod")) {
g_free (basename);
return GNOME_VFS_DEVICE_TYPE_MUSIC_PLAYER;
}
g_free (basename);
}
return GNOME_VFS_DEVICE_TYPE_HARDDRIVE;
}
More information about the freebsd-gnome
mailing list