Module Name: src
Committed By: pooka
Date: Sun Oct 18 19:09:20 UTC 2009
Modified Files:
src/lib/libpuffs: puffs.c puffs.h
Log Message:
Make it possible to supply parameters to puffs_init() later (but
before puffs_mount()).
To generate a diff of this commit:
cvs rdiff -u -r1.99 -r1.100 src/lib/libpuffs/puffs.c
cvs rdiff -u -r1.111 -r1.112 src/lib/libpuffs/puffs.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libpuffs/puffs.c
diff -u src/lib/libpuffs/puffs.c:1.99 src/lib/libpuffs/puffs.c:1.100
--- src/lib/libpuffs/puffs.c:1.99 Sat Oct 17 23:19:52 2009
+++ src/lib/libpuffs/puffs.c Sun Oct 18 19:09:20 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs.c,v 1.99 2009/10/17 23:19:52 pooka Exp $ */
+/* $NetBSD: puffs.c,v 1.100 2009/10/18 19:09:20 pooka Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#if !defined(lint)
-__RCSID("$NetBSD: puffs.c,v 1.99 2009/10/17 23:19:52 pooka Exp $");
+__RCSID("$NetBSD: puffs.c,v 1.100 2009/10/18 19:09:20 pooka Exp $");
#endif /* !lint */
#include <sys/param.h>
@@ -276,6 +276,18 @@
pu->pu_privdata = privdata;
}
+void
+puffs_setmntinfo(struct puffs_usermount *pu,
+ const char *mntfromname, const char *puffsname)
+{
+ struct puffs_kargs *pargs = pu->pu_kargp;
+
+ (void)strlcpy(pargs->pa_mntfromname, mntfromname,
+ sizeof(pargs->pa_mntfromname));
+ (void)strlcpy(pargs->pa_typename, puffsname,
+ sizeof(pargs->pa_typename));
+}
+
size_t
puffs_getmaxreqlen(struct puffs_usermount *pu)
{
@@ -596,6 +608,13 @@
struct puffs_kargs *pargs;
int sverrno;
+ if (puffsname == PUFFS_DEFER)
+ puffsname = "n/a";
+ if (mntfromname == PUFFS_DEFER)
+ mntfromname = "n/a";
+ if (priv == PUFFS_DEFER)
+ priv = NULL;
+
pu = malloc(sizeof(struct puffs_usermount));
if (pu == NULL)
goto failfree;
@@ -609,10 +628,7 @@
pargs->pa_vers = PUFFSDEVELVERS | PUFFSVERSION;
pargs->pa_flags = PUFFS_FLAG_KERN(pflags);
fillvnopmask(pops, pargs->pa_vnopmask);
- (void)strlcpy(pargs->pa_typename, puffsname,
- sizeof(pargs->pa_typename));
- (void)strlcpy(pargs->pa_mntfromname, mntfromname,
- sizeof(pargs->pa_mntfromname));
+ puffs_setmntinfo(pu, mntfromname, puffsname);
puffs_zerostatvfs(&pargs->pa_svfsb);
pargs->pa_root_cookie = NULL;
Index: src/lib/libpuffs/puffs.h
diff -u src/lib/libpuffs/puffs.h:1.111 src/lib/libpuffs/puffs.h:1.112
--- src/lib/libpuffs/puffs.h:1.111 Sat Oct 17 23:19:52 2009
+++ src/lib/libpuffs/puffs.h Sun Oct 18 19:09:20 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: puffs.h,v 1.111 2009/10/17 23:19:52 pooka Exp $ */
+/* $NetBSD: puffs.h,v 1.112 2009/10/18 19:09:20 pooka Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
@@ -418,6 +418,7 @@
__BEGIN_DECLS
+#define PUFFS_DEFER ((void *)-1)
struct puffs_usermount *_puffs_init(int, struct puffs_ops *, const char *,
const char *, void *, uint32_t);
int puffs_mount(struct puffs_usermount *, const char *, int, void*);
@@ -446,6 +447,8 @@
void puffs_setmaxreqlen(struct puffs_usermount *, size_t);
size_t puffs_getmaxreqlen(struct puffs_usermount *);
void puffs_setfhsize(struct puffs_usermount *, size_t, int);
+void puffs_setmntinfo(struct puffs_usermount *,
+ const char *, const char *);
void puffs_setncookiehash(struct puffs_usermount *, int);