head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.138 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.136 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.134 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.132 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.130 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.128 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.126 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.124 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.122 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.120 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.118 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.116 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.114 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.112 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.110 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.108 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.106 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.104 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.102 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.100 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.98 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.96 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.94 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.90 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.70 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.92 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.88 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.86 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.84 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.82 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.80 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.78 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.76 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.74 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.72 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.68 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.66 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.64 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.62 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.60 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.58 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.56 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.54 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.52 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.50 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.48 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.46 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.44 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.42 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.40 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.38 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.36 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.34 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.32 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.30 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.28 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.26 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.24 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.22 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.20 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.18 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.16 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.14 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.12 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.10 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.8 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.6 pkgsrc-2009Q3-base:1.1 pkgsrc-2009Q2:1.1.0.4 pkgsrc-2009Q2-base:1.1 pkgsrc-2009Q1:1.1.0.2 pkgsrc-2009Q1-base:1.1; locks; strict; comment @# @; 1.1 date 2009.03.18.14.44.38; author jmcneill; state Exp; branches; next ; desc @@ 1.1 log @Forgot to cvs add this patch. @ text @$NetBSD$ --- server/gam_fs.c.orig 2008-11-12 15:45:28.000000000 -0500 +++ server/gam_fs.c @@@@ -10,6 +10,10 @@@@ #include "gam_error.h" #include "gam_fs.h" +#if defined(__NetBSD__) +#include +#endif + #define DEFAULT_POLL_TIMEOUT 0 typedef struct _gam_fs_properties { @@@@ -21,12 +25,16 @@@@ typedef struct _gam_fs_properties { typedef struct _gam_fs { char *path; char *fsname; + guint64 flags; } gam_fs; static gboolean initialized = FALSE; +#if defined(__NetBSD__) +static gboolean initializing = FALSE; +#endif static GList *filesystems = NULL; static GList *fs_props = NULL; -static struct stat mtab_sbuf; +static struct stat mtab_sbuf, hal_mtab_sbuf; static void gam_fs_free_filesystems (void) @@@@ -110,6 +118,7 @@@@ gam_fs_filesystem_sort_cb (gconstpointer return strlen(fsb->path) - strlen (fsa->path); } +#if defined(__linux__) static void gam_fs_scan_mtab (void) { @@@@ -165,10 +174,40 @@@@ gam_fs_scan_mtab (void) gam_fs_free_filesystems (); filesystems = g_list_sort (new_filesystems, gam_fs_filesystem_sort_cb); } +#endif + +#if defined(__NetBSD__) +static void +gam_fs_getmntinfo (void) +{ + struct statvfs *stat; + GList *new_filesystems = NULL; + gam_fs *fs = NULL; + int i, n; + + n = getmntinfo(&stat, MNT_NOWAIT); + if (n == -1) + return; + + for (i = 0; i < n; i++) + { + fs = g_new0 (gam_fs, 1); + fs->path = g_strdup (stat[i].f_mntonname); + fs->fsname = g_strdup (stat[i].f_fstypename); + fs->flags = stat[i].f_flag; + + new_filesystems = g_list_prepend (new_filesystems, fs); + } + + gam_fs_free_filesystems (); + filesystems = g_list_sort (new_filesystems, gam_fs_filesystem_sort_cb); +} +#endif void gam_fs_init (void) { +#if defined(__linux__) if (initialized == FALSE) { initialized = TRUE; @@@@ -199,6 +238,56 @@@@ gam_fs_init (void) mtab_sbuf = sbuf; } +#elif defined(__NetBSD__) + if (initialized == FALSE && initializing == FALSE) + { + GList *iterator = NULL; + GHashTable *fs_hash = NULL; + gam_fs *fs = NULL; + + initialized = initializing = TRUE; + + gam_fs_getmntinfo (); + + iterator = filesystems; + fs_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + + while (iterator) { + fs = iterator->data; + + if (!g_hash_table_lookup (fs_hash, fs->fsname)) { + if (fs->flags & MNT_LOCAL) + gam_fs_set (fs->fsname, GFS_MT_DEFAULT, 0); + else + gam_fs_set (fs->fsname, GFS_MT_POLL, 5); + + g_hash_table_insert (fs_hash, g_strdup (fs->fsname), GINT_TO_POINTER (1)); + } + + iterator = g_list_next (iterator); + } + + g_hash_table_destroy (fs_hash); + initializing = FALSE; + } else if (initializing == FALSE) { + struct stat sbuf; + gboolean need_update = FALSE; + + if (stat ("/etc/fstab", &sbuf) == 0) + if (sbuf.st_mtime != mtab_sbuf.st_mtime) { + mtab_sbuf = sbuf; + need_update = TRUE; + } + if (stat ("/media/.hal-mtab", &sbuf) == 0) + if (sbuf.st_mtime != hal_mtab_sbuf.st_mtime) { + hal_mtab_sbuf = sbuf; + need_update = TRUE; + } + + if (need_update == TRUE) + gam_fs_getmntinfo (); + } +#endif } gam_fs_mon_type @