diff options
author | sobomax <sobomax@FreeBSD.org> | 2002-09-10 06:53:57 +0800 |
---|---|---|
committer | sobomax <sobomax@FreeBSD.org> | 2002-09-10 06:53:57 +0800 |
commit | b940597cc1873d5c7dafa33969348622082635ff (patch) | |
tree | c3d9625266127d16fba3011e58962dc4c98cecf9 /x11-fm | |
parent | a626581da9803b5651de60c5ebbc8a3b435c8ae0 (diff) | |
download | freebsd-ports-gnome-b940597cc1873d5c7dafa33969348622082635ff.tar.gz freebsd-ports-gnome-b940597cc1873d5c7dafa33969348622082635ff.tar.zst freebsd-ports-gnome-b940597cc1873d5c7dafa33969348622082635ff.zip |
Clean up some evilness in FreeBSD-specific volume monitor code. Particularly
this solves long standing problem with icons for each mounted filesystem
cluttering desktop.
Reported by: legion
Diffstat (limited to 'x11-fm')
-rw-r--r-- | x11-fm/nautilus2/Makefile | 1 | ||||
-rw-r--r-- | x11-fm/nautilus2/files/patch-libnautilus-private::nautilus-volume-monitor.c | 56 |
2 files changed, 28 insertions, 29 deletions
diff --git a/x11-fm/nautilus2/Makefile b/x11-fm/nautilus2/Makefile index 8d5532e0dea3..ac261077a6eb 100644 --- a/x11-fm/nautilus2/Makefile +++ b/x11-fm/nautilus2/Makefile @@ -7,6 +7,7 @@ PORTNAME= nautilus2 PORTVERSION= 2.0.6 +PORTREVISION= 1 CATEGORIES= x11-fm gnome MASTER_SITES= ${MASTER_SITE_GNOME} MASTER_SITE_SUBDIR= 2.0.1/sources/${PORTNAME:S/2$//} diff --git a/x11-fm/nautilus2/files/patch-libnautilus-private::nautilus-volume-monitor.c b/x11-fm/nautilus2/files/patch-libnautilus-private::nautilus-volume-monitor.c index 9dcc45e1748e..a2faedc8c4ea 100644 --- a/x11-fm/nautilus2/files/patch-libnautilus-private::nautilus-volume-monitor.c +++ b/x11-fm/nautilus2/files/patch-libnautilus-private::nautilus-volume-monitor.c @@ -1,5 +1,8 @@ ---- libnautilus-private/nautilus-volume-monitor.c.orig Thu Jul 11 13:11:51 2002 -+++ libnautilus-private/nautilus-volume-monitor.c Wed Jul 24 00:25:40 2002 + +$FreeBSD$ + +--- libnautilus-private/nautilus-volume-monitor.c.orig Wed Aug 28 16:37:20 2002 ++++ libnautilus-private/nautilus-volume-monitor.c Tue Sep 10 01:42:20 2002 @@ -59,6 +59,18 @@ #include <sys/types.h> #include <unistd.h> @@ -28,7 +31,7 @@ #define setmntent(f,m) fopen(f,m) #endif -@@ -503,6 +515,11 @@ +@@ -501,6 +513,11 @@ return TRUE; } #endif @@ -40,7 +43,7 @@ #ifdef SOLARIS_MNT if (eel_str_has_prefix (ent->mnt_special, "/vol/")) { -@@ -524,10 +541,15 @@ +@@ -522,10 +539,15 @@ static GList * get_removable_volumes (NautilusVolumeMonitor *monitor) { @@ -59,7 +62,7 @@ char * fs_opt; #ifdef HAVE_SYS_MNTTAB_H MountTableEntry ent_storage; -@@ -535,26 +557,27 @@ +@@ -533,26 +555,27 @@ #ifdef HAVE_GETMNTINFO int count, index; #endif @@ -92,13 +95,13 @@ return NULL; } -@@ -589,9 +612,21 @@ +@@ -587,9 +610,21 @@ (monitor, volume, ent->mnt_type, volumes); } } +#elif defined (HAVE_SETFSENT) + while ((fsent = getfsent ()) != NULL) { -+ if (strstr (fsent->fs_mntops, "noauto") == 0) { ++ if (strstr (fsent->fs_mntops, "noauto") != NULL) { + volume = create_volume (fsent->fs_spec, fsent->fs_file); + volumes = finish_creating_volume_and_prepend + (monitor, volume, fsent->fs_vfstype, volumes); @@ -115,7 +118,7 @@ #ifdef HAVE_CDDA volume = create_volume (CD_AUDIO_PATH, CD_AUDIO_PATH); -@@ -621,7 +656,7 @@ +@@ -619,7 +654,7 @@ return result; } @@ -124,7 +127,7 @@ static gboolean volume_is_removable (const NautilusVolume *volume) -@@ -945,23 +980,33 @@ +@@ -963,23 +998,34 @@ @@ -137,20 +140,21 @@ - FILE *fh; GList *volumes; +#ifndef HAVE_SETFSENT -+ FILE *fh; MountTableEntry ent; ++ FILE *fh; +#else -+ int fh; -+ struct fstab *ent; ++ MountTableEntry *ent; ++ int fh, index; +#endif NautilusVolume *volume; volumes = NULL; - fh = setmntent (MOUNT_TABLE_PATH, "r"); +#ifndef HAVE_SETFSENT + fh = setmntent (MOUNT_TABLE_PATH, "r"); if (fh == NULL) { +#else ++ fh = getmntinfo (&ent, MNT_WAIT); + if (fh == 0) { +#endif return NULL; @@ -160,30 +164,24 @@ while (! getmntent(fh, &ent)) { volume = create_volume (ent.mnt_special, ent.mnt_mountp); volume->is_removable = has_removable_mntent_options (&ent); -@@ -970,6 +1015,22 @@ +@@ -988,6 +1034,16 @@ } fclose (fh); +#else -+ while ((ent = getfsent ()) != NULL) { -+ if (strcmp(ent->fs_vfstype, "swap") == 0) -+ continue; -+ volume = create_volume (ent->fs_spec, ent->fs_file); -+ if (strstr (ent->fs_mntops, "noauto") == 0) -+ volume->is_removable = TRUE; -+ else -+ volume->is_removable = FALSE; -+ volumes = finish_creating_volume_and_prepend -+ (monitor, volume, ent->fs_vfstype, volumes); -+ } -+ -+ endfsent(); ++ /* getmentinfo returns a pointer to static data. Do not free. */ ++ for (index = 0; index < fh; index++) { ++ volume = create_volume (ent[index].f_mntfromname, ++ ent[index].f_mntonname); ++ volume->is_removable = has_removable_mntent_options (ent + index); ++ volumes = finish_creating_volume_and_prepend ++ (monitor, volume, ent[index].f_fstypename, volumes); ++ } +#endif -+ return volumes; } -@@ -1747,7 +1808,7 @@ +@@ -1765,7 +1821,7 @@ for (node = volume_list; node != NULL; node = node->next) { volume = node->data; |