diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-04-24 16:59:37 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-04-24 16:59:37 -0400 |
commit | af98c179294802187245d3c56d1738318a96a0db (patch) | |
tree | 370aa7edc190e99029a47dda1d99c088bec47ae3 | |
parent | 48152a4a764ece743d6f51b75601bc34cc9ad832 (diff) | |
download | dbfs-af98c179294802187245d3c56d1738318a96a0db.tar.gz |
dbfs: implement hooks init, destroy.
convert {init,exit}db() to be these hooks.
-rw-r--r-- | dbfs-backend.c | 12 | ||||
-rw-r--r-- | dbfs.c | 8 | ||||
-rw-r--r-- | dbfs.h | 4 |
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); @@ -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; } @@ -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__ */ |