$NetBSD: patch-ab,v 1.1 2008/11/22 15:20:51 jmcneill Exp $
--- tools/hal-storage-shared.c.orig 2008-05-07 19:24:24.000000000 -0400
+++ tools/hal-storage-shared.c
@@ -42,6 +42,10 @@
#include <fcntl.h>
#include <sys/mnttab.h>
#include <sys/vfstab.h>
+#elif __NetBSD__
+#include <fstab.h>
+#include <sys/param.h>
+#include <sys/mount.h>
#else
#include <mntent.h>
#endif
@@ -60,13 +64,20 @@ struct mtab_handle
int n_mounts;
int iter;
};
+#elif __NetBSD__
+struct mtab_handle
+{
+ struct statvfs *mounts;
+ int n_mounts;
+ int iter;
+};
#endif
gboolean
mtab_open (gpointer *handle)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
struct mtab_handle *mtab;
mtab = g_new0 (struct mtab_handle, 1);
@@ -90,7 +101,7 @@ mtab_open (gpointer *handle)
char *
mtab_next (gpointer handle, char **mount_point)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
struct mtab_handle *mtab = handle;
if (mtab->iter < mtab->n_mounts) {
@@ -131,7 +142,7 @@ mtab_next (gpointer handle, char **mount
void
mtab_close (gpointer handle)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
g_free (handle);
#else
fclose (handle);
@@ -143,7 +154,7 @@ mtab_close (gpointer handle)
gboolean
fstab_open (gpointer *handle)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
return setfsent () == 1;
#elif sun
*handle = fopen (VFSTAB, "r");
@@ -157,7 +168,7 @@ fstab_open (gpointer *handle)
char *
fstab_next (gpointer handle, char **mount_point)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
struct fstab *fstab;
fstab = getfsent ();
@@ -188,7 +199,7 @@ fstab_next (gpointer handle, char **moun
void
fstab_close (gpointer handle)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__NetBSD__)
endfsent ();
#else
fclose (handle);
@@ -197,6 +208,8 @@ fstab_close (gpointer handle)
#ifdef __FreeBSD__
#define UMOUNT "/sbin/umount"
+#elif __NetBSD__
+#define UMOUNT "/sbin/umount"
#elif sun
#define UMOUNT "/sbin/umount"
#else
@@ -467,7 +480,7 @@ line_found:
/* construct arguments to /bin/umount */
na = 0;
args[na++] = UMOUNT;
-#ifndef __FreeBSD__
+#if !defined(__FreeBSD__) && !defined(__NetBSD__)
if (option_lazy)
args[na++] = "-l";
#endif
@@ -632,6 +645,11 @@ try_open_excl_again:
args[na++] = "close";
else
args[na++] = "eject";
+#elif __NetBSD__
+ args[na++] = "-f";
+ if (closetray)
+ args[na++] = "-l";
+ args[na++] = (char *) device;
#else
if (closetray) {
args[na++] = "-t";