src/dbfs/link.c
branchnew-evsql
changeset 49 bb2ff0d2d343
parent 48 8b019d191353
child 50 881de320e483
--- 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) {