Make it possible to supply parameters to puffs_init() later (but
before puffs_mount()).
This commit is contained in:
parent
97b1a7252f
commit
0f699dcf1d
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue