src/dbfs/dbfs.h
branchnew-evsql
changeset 49 bb2ff0d2d343
parent 48 8b019d191353
--- a/src/dbfs/dbfs.h	Sat Nov 29 01:12:00 2008 +0200
+++ b/src/dbfs/dbfs.h	Sat Nov 29 01:30:43 2008 +0200
@@ -27,9 +27,6 @@
 // XXX: not sure how this should work
 #define CACHE_TIMEOUT 1.0
 
-// columns used for stat_info
-#define DBFS_STAT_COLS " inodes.type, inodes.mode, dbfs_size(inodes.type, inodes.data, inodes.link_path), (SELECT COUNT(*) FROM inodes i LEFT JOIN file_tree ft ON (i.ino = ft.ino) WHERE i.ino = inodes.ino) AS nlink"
-
 /*
  * Convert the CHAR(4) inodes.type from SQL into a mode_t.
  *
@@ -56,6 +53,30 @@
 err_t dbfs_check_result (struct evsql_result *res, size_t rows, size_t cols);
 
 /*
+ * Stat fields
+ */
+
+// columns used for stat_info
+#define DBFS_STAT_COLS " inodes.type, inodes.mode, dbfs_size(inodes.type, inodes.data, inodes.link_path), (SELECT COUNT(*) FROM inodes i LEFT JOIN file_tree ft ON (i.ino = ft.ino) WHERE i.ino = inodes.ino) AS nlink"
+
+
+#define DBFS_STAT_RESULT_INFO \
+    {   EVSQL_FMT_BINARY,   EVSQL_TYPE_STRING   },  \
+    {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT16   },  \
+    {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT32   },  \
+    {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT64   }
+
+struct dbfs_stat_values {
+    const char *type;
+    uint16_t mode;
+    uint32_t size;
+    uint64_t nlink;
+};
+
+#define DBFS_STAT_RESULT_VALUES(ptr) \
+    &(ptr)->type, &(ptr)->mode, &(ptr)->size, &(ptr)->nlink
+
+/*
  * Fill a `struct state` with info retrieved from a SQL query.
  *
  * The result must contain four columns, starting at the given offset:
@@ -63,7 +84,7 @@
  *
  * Note that this does not fill the st_ino field
  */
-int _dbfs_stat_info (struct stat *st, struct evsql_result *res, size_t row, size_t col_offset);
+int _dbfs_stat_info (struct stat *st, struct dbfs_stat_values *values);
 
 /** interrupt.c 
  *