--- a/src/dbfs/link.c Sat Nov 29 01:12:00 2008 +0200
+++ b/src/dbfs/link.c Sat Nov 29 01:30:43 2008 +0200
@@ -13,26 +13,34 @@
void dbfs_entry_res (struct evsql_result *res, void *arg) {
struct fuse_req *req = arg;
struct fuse_entry_param e; ZINIT(e);
- int err = 0;
+ err_t err = 0;
uint32_t ino;
-
- // check the results
- if ((err = _dbfs_check_res(res, 1, 5)))
- SERROR(err = (err == 1 ? ENOENT : EIO));
-
- // get the data
- if (0
- || evsql_result_uint32(res, 0, 0, &ino, 0 ) // inodes.ino
- )
- EERROR(err = EIO, "invalid db data");
-
+ struct dbfs_stat_values stat_values;
+
+ // result info
+ static struct evsql_result_info result_info = {
+ 0, {
+ { EVSQL_FMT_BINARY, EVSQL_TYPE_UINT32 }, // inodes.ino
+ DBFS_STAT_RESULT_INFO,
+ { 0, 0 }
+ }
+ };
+
+ // begin
+ if ((err = evsql_result_begin(&result_info, res)))
+ EERROR(err, "query failed");
+
+ // get the one row of data
+ if ((err = evsql_result_next(res, &ino, DBFS_STAT_RESULT_VALUES(&stat_values))) <= 0)
+ EERROR(err = (err ? err : ENOENT), "evsql_result_next");
+
INFO("\t[dbfs.lookup] -> ino=%u", ino);
// stat attrs
- if ((err = _dbfs_stat_info(&e.attr, res, 0, 1)))
+ if ((err = _dbfs_stat_info(&e.attr, &stat_values)))
goto error;
-
+
// other attrs
e.ino = e.attr.st_ino = ino;
e.attr_timeout = CACHE_TIMEOUT;
@@ -46,8 +54,8 @@
if (err && (err = -fuse_reply_err(req, err)))
EWARNING(err, "fuse_reply_err");
- // free
- evsql_result_free(res);
+ // done
+ evsql_result_end(res);
}
void dbfs_lookup (struct fuse_req *req, fuse_ino_t parent, const char *name) {