$NetBSD$

--- nnpfs/bsd/nnpfs_dev-common.c.orig	2006-01-11 23:52:16.000000000 +0100
+++ nnpfs/bsd/nnpfs_dev-common.c
@@ -573,10 +573,16 @@ nnpfs_message_rpc(int fd, struct nnpfs_m
     oldsigmask = proc->p_sigmask;
     nnpfs_block_sigset (&proc->p_sigmask);
 #elif defined(HAVE_STRUCT_PROC_P_SIGCTX)
+#if __NetBSD_Version__ >= 399001400 
+    /* NetBSD 3.99.15 */
+    oldsigmask = proc->l_proc->p_sigctx.ps_sigmask;
+    nnpfs_block_sigset (&proc->l_proc->p_sigctx.ps_sigmask);
+#else
     /* NetBSD 1.6 */
     oldsigmask = proc->p_sigctx.ps_sigmask;
     nnpfs_block_sigset (&proc->p_sigctx.ps_sigmask);
 #endif
+#endif
 
     /*
      * if we are exiting we should not try to catch signals, since
@@ -591,6 +597,8 @@ nnpfs_message_rpc(int fd, struct nnpfs_m
     if (0)
 #elif defined(HAVE_FREEBSD_THREAD)
     if (proc->td_proc && !(proc->td_proc->p_flag & NNPFS_P_EXIT))
+#elif __NetBSD_Version__ >= 399001400 /* NetBSD 3.99.14 */
+    if (!(proc->l_proc->p_flag & NNPFS_P_EXIT))
 #else
     if (!(proc->p_flag & NNPFS_P_EXIT))
 #endif
@@ -621,8 +629,12 @@ nnpfs_message_rpc(int fd, struct nnpfs_m
 #elif HAVE_STRUCT_PROC_P_SIGMASK
     proc->p_sigmask = oldsigmask;
 #elif defined(HAVE_STRUCT_PROC_P_SIGCTX)
+#if defined(__NetBSD__) && __NetBSD_Version__ >= 399001400 /* 3.99.14 */
+    proc->l_proc->p_sigctx.ps_sigmask = oldsigmask;
+#else
     proc->p_sigctx.ps_sigmask = oldsigmask;
 #endif
+#endif
 
     /*
      * Caught signal, got reply message or device was closed.
