aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-04-24 16:59:37 -0400
committerJeff Garzik <jeff@garzik.org>2006-04-24 16:59:37 -0400
commitaf98c179294802187245d3c56d1738318a96a0db (patch)
tree370aa7edc190e99029a47dda1d99c088bec47ae3
parent48152a4a764ece743d6f51b75601bc34cc9ad832 (diff)
downloaddbfs-af98c179294802187245d3c56d1738318a96a0db.tar.gz
dbfs: implement hooks init, destroy.
convert {init,exit}db() to be these hooks.
-rw-r--r--dbfs-backend.c12
-rw-r--r--dbfs.c8
-rw-r--r--dbfs.h4
3 files changed, 10 insertions, 14 deletions
diff --git a/dbfs-backend.c b/dbfs-backend.c
index 34a477f..736cbeb 100644
--- a/dbfs-backend.c
+++ b/dbfs-backend.c
@@ -29,7 +29,7 @@ struct dbfs_unlink_info {
static DB_ENV *db_env;
static DB *db_meta;
-int init_db(void)
+void dbfs_init(void *userdata)
{
const char *db_home, *db_password;
int rc;
@@ -42,7 +42,7 @@ int init_db(void)
db_home = getenv("DB_HOME");
if (!db_home) {
fprintf(stderr, "DB_HOME not set\n");
- return 1;
+ exit(1);
}
db_password = getenv("DB_PASSWORD");
@@ -54,7 +54,7 @@ int init_db(void)
rc = db_env_create(&db_env, 0);
if (rc) {
fprintf(stderr, "db_env_create failed: %d\n", rc);
- return 1;
+ exit(1);
}
db_env->set_errfile(db_env, stderr);
@@ -106,16 +106,16 @@ int init_db(void)
goto err_out_meta;
}
- return 0;
+ return;
err_out_meta:
db_meta->close(db_meta, 0);
err_out:
db_env->close(db_env, 0);
- return 1;
+ exit(1);
}
-void exit_db(void)
+void dbfs_exit(void *userdata)
{
db_meta->close(db_meta, 0);
db_env->close(db_env, 0);
diff --git a/dbfs.c b/dbfs.c
index 97dc59d..111ddb3 100644
--- a/dbfs.c
+++ b/dbfs.c
@@ -233,8 +233,8 @@ static void hello_ll_read(fuse_req_t req, fuse_ino_t ino, size_t size,
#endif
static struct fuse_lowlevel_ops dbfs_ops = {
- .init = NULL,
- .destroy = NULL,
+ .init = dbfs_init,
+ .destroy = dbfs_exit,
.lookup = dbfs_op_lookup,
.forget = NULL,
.getattr = dbfs_op_getattr,
@@ -273,8 +273,6 @@ int main(int argc, char *argv[])
int err = -1;
int fd;
- init_db();
-
if (fuse_parse_cmdline(&args, &mountpoint, NULL, NULL) != -1 &&
(fd = fuse_mount(mountpoint, &args)) != -1) {
struct fuse_session *se;
@@ -297,7 +295,5 @@ int main(int argc, char *argv[])
fuse_unmount(mountpoint);
fuse_opt_free_args(&args);
- exit_db();
-
return err ? 1 : 0;
}
diff --git a/dbfs.h b/dbfs.h
index 58edd50..8f5bde1 100644
--- a/dbfs.h
+++ b/dbfs.h
@@ -71,7 +71,7 @@ extern int dbfs_dir_foreach(void *dir, dbfs_dir_actor_t func, void *userdata);
extern int dbfs_lookup(guint64 parent, const char *name, guint64 *ino);
extern int dbfs_unlink(guint64 parent, const char *name, unsigned long flags);
extern void dbfs_inode_free(struct dbfs_inode *ino);
-extern int init_db(void);
-extern void exit_db(void);
+extern void dbfs_init(void *userdata);
+extern void dbfs_exit(void *userdata);
#endif /* __DBFS_H__ */