Friday, January 28, 2011

GWorkspace and BSDs

GWorkspace is now more portable: the desktop feature and its mounted volume display now should work reliably not only on Linux but also on most BSDs and derivatives. GWorkspace needs to check which volumes are mounted. Comparing it with a list configured in SystemPreferences the user can see the mounted devices on the desktop.

All started by a patch offered by Sebastian, where a FreeBSD feature was used on OpenBSD. The whole code was a maze which attempted to parse the "mount" output. I first fixed it and also found security holes which were rapidly amended.

The final solution however has been to remove the parsing code and use getmntinfo() where available and maintain only one fall-back mechanism, the parsing of /etc/mtab as to maintain Linux compatibility.

The question on how to support GNU/HURD remains open though. I'd love to have it working in a clean way. However, it lacks /etc/mtab and even the hackish solution to parse mount is not feasible since it returns valid content only for Linux.

Solaris support needs to be verified too.

Constructive input appreciated.