terom@24: terom@24: /* terom@24: * A simple PostgreSQL-based filesystem. terom@24: */ terom@24: terom@26: #include terom@24: #include terom@24: #include terom@26: #include terom@24: terom@24: #include terom@24: terom@28: #include "dbfs.h" terom@24: #include "evfuse.h" terom@24: #include "evsql.h" terom@24: #include "lib/log.h" terom@24: #include "lib/signals.h" terom@24: #include "lib/misc.h" terom@24: terom@31: #define CONNINFO_DEFAULT "dbname=dbfs port=5433" terom@24: terom@24: int main (int argc, char **argv) { terom@28: struct event_base *ev_base = NULL; terom@28: struct signals *signals = NULL; terom@28: struct dbfs *ctx = NULL; terom@28: const char *db_conninfo; terom@24: struct fuse_args fuse_args = FUSE_ARGS_INIT(argc, argv); terom@24: terom@24: // parse args, XXX: fuse_args terom@28: db_conninfo = CONNINFO_DEFAULT; terom@24: terom@24: // init libevent terom@28: if ((ev_base = event_base_new()) == NULL) terom@24: ERROR("event_base_new"); terom@24: terom@24: // setup signals terom@28: if ((signals = signals_default(ev_base)) == NULL) terom@24: ERROR("signals_default"); terom@24: terom@28: // setup dbfs terom@30: if ((ctx = dbfs_new(ev_base, &fuse_args, db_conninfo)) == NULL) terom@30: ERROR("dbfs_new"); terom@24: terom@24: // run libevent terom@24: INFO("running libevent loop"); terom@24: terom@28: if (event_base_dispatch(ev_base)) terom@24: PERROR("event_base_dispatch"); terom@24: terom@24: // clean shutdown terom@24: terom@24: error : terom@28: if (ctx) terom@30: dbfs_free(ctx); terom@28: terom@28: if (signals) terom@28: signals_free(signals); terom@24: terom@28: if (ev_base) terom@28: event_base_free(ev_base); terom@24: terom@24: fuse_opt_free_args(&fuse_args); terom@24: } terom@24: