summaryrefslogtreecommitdiff
path: root/sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c')
-rw-r--r--sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c87
1 files changed, 79 insertions, 8 deletions
diff --git a/sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c b/sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c
index e33d84fd3192..481e82858656 100644
--- a/sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c
+++ b/sysutils/gnome-mount/files/patch-src_gnome-mount-properties-view.c
@@ -1,10 +1,81 @@
---- src/gnome-mount-properties-view.c.orig Sun Dec 3 02:24:16 2006
-+++ src/gnome-mount-properties-view.c Sun Dec 3 02:25:20 2006
-@@ -30,6 +30,7 @@
- #include <glib/gi18n.h>
- #include <gtk/gtk.h>
- #include <glade/glade.h>
-+#include <libgnomevfs/gnome-vfs-utils.h>
- #include <time.h>
+--- src/gnome-mount-properties-view.c.orig Mon Aug 14 00:17:22 2006
++++ src/gnome-mount-properties-view.c Sun Dec 3 02:38:08 2006
+@@ -34,6 +34,7 @@
#include <sys/time.h>
#include <string.h>
+ #include <gconf/gconf-client.h>
++#include <libgnomevfs/gnome-vfs-utils.h>
+
+ #ifdef __FreeBSD__
+ #include <fstab.h>
+@@ -59,6 +60,35 @@ struct _GnomeMountPropertiesViewClass {
+ GtkVBoxClass base_class;
+ };
+
++#ifdef __FreeBSD__
++static struct opt {
++ int o_opt;
++ const char *o_name;
++} optnames[] = {
++ { MNT_ASYNC, "asynchronous" },
++ { MNT_EXPORTED, "NFS exported" },
++ { MNT_LOCAL, "local" },
++ { MNT_NOATIME, "noatime" },
++ { MNT_NOEXEC, "noexec" },
++ { MNT_NOSUID, "nosuid" },
++ { MNT_NOSYMFOLLOW, "nosymfollow" },
++ { MNT_QUOTA, "with quotas" },
++ { MNT_RDONLY, "read-only" },
++ { MNT_SYNCHRONOUS, "synchronous" },
++ { MNT_UNION, "union" },
++ { MNT_NOCLUSTERR, "noclusterr" },
++ { MNT_NOCLUSTERW, "noclusterw" },
++ { MNT_SUIDDIR, "suiddir" },
++ { MNT_SOFTDEP, "soft-updates" },
++ { MNT_MULTILABEL, "multilabel" },
++ { MNT_ACLS, "acls" },
++#ifdef MNT_GJOURNAL
++ { MNT_GJOURNAL, "gjournal" },
++#endif
++ { 0, NULL }
++};
++#endif
++
+ G_DEFINE_TYPE (GnomeMountPropertiesView, gm_properties_view, GTK_TYPE_VBOX)
+
+ static void
+@@ -445,13 +475,29 @@ static gboolean
+ mtab_next (gpointer handle, char **device_file, char **mount_options, char **mount_fstype)
+ {
+ #ifdef __FreeBSD__
+-#error FIXME TODO XXX fix this up for FreeBSD. Thanks.
+ struct mtab_handle *mtab = handle;
+
+- if (mtab->iter < mtab->n_mounts)
+- return mtab->mounts[mtab->iter++].f_mntfromname;
+- else
+- return NULL;
++ if (mtab->iter < mtab->n_mounts) {
++ struct opt *o;
++ int flags;
++ GString *optstr;
++
++ optstr = g_string_new("");
++ flags = mtab->mounts[mtab->iter].f_flags & MNT_VISFLAGMASK;
++
++ for (o = optnames; flags && o->o_opt; o++) {
++ if (flags & o->o_opt) {
++ g_string_append_printf(optstr, ", %s", o->o_name);
++ flags &= ~o->o_opt;
++ }
++ }
++ *device_file = mtab->mounts[mtab->iter].f_mntfromname;
++ *mount_options = g_string_free(optstr, FALSE);
++ *mount_fstype = mtab->mounts[mtab->iter++].f_fstypename;
++ return TRUE;
++ } else {
++ return FALSE;
++ }
+ #else
+ struct mntent *mnt;
+