Make it possible to supply parameters to puffs_init() later (but

before puffs_mount()).
This commit is contained in:
pooka 2009-10-18 19:09:20 +00:00
parent 97b1a7252f
commit 0f699dcf1d
2 changed files with 26 additions and 7 deletions

View File

@ -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 @@ puffs_setspecific(struct puffs_usermount *pu, void *privdata)
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 @@ _puffs_init(int dummy, struct puffs_ops *pops, const char *mntfromname,
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 @@ _puffs_init(int dummy, struct puffs_ops *pops, const char *mntfromname,
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;

View File

@ -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 @@ typedef void (*puffs_framev_cb)(struct puffs_usermount *,
__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_setspecific(struct puffs_usermount *, void *);
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);