para_write: Return proper error code.
[paraslash.git] / blob.c
diff --git a/blob.c b/blob.c
index 38e5cb54df04ad3a0600ac893e108a71446eb6da..cbf2af49395f09b00aa322774ec79118d181daa4 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -1,11 +1,12 @@
 /*
- * Copyright (C) 2007-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2011 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
 
 /** \file blob.c Macros and functions for blob handling. */
 
+#include <regex.h>
 #include <fnmatch.h>
 #include <openssl/rc4.h>
 #include <osl.h>
@@ -63,6 +64,24 @@ static struct osl_column_description blob_cols[] = {
        }
 };
 
+/** Define an osl table description for a blob table. */
+#define DEFINE_BLOB_TABLE_DESC(table_name) \
+       struct osl_table_description table_name ## _table_desc = { \
+               .name = #table_name, \
+               .num_columns = NUM_BLOB_COLUMNS, \
+               .flags = OSL_LARGE_TABLE, \
+               .column_descriptions = blob_cols \
+       };
+
+/** Define a pointer to an osl blob table with a canonical name. */
+#define DEFINE_BLOB_TABLE_PTR(table_name) struct osl_table *table_name ## _table;
+
+
+/** Define a blob table. */
+#define INIT_BLOB_TABLE(table_name) \
+       DEFINE_BLOB_TABLE_DESC(table_name); \
+       DEFINE_BLOB_TABLE_PTR(table_name);
+
 /** \cond doxygen isn't smart enough to recognize these */
 INIT_BLOB_TABLE(lyrics);
 INIT_BLOB_TABLE(images);
@@ -580,7 +599,7 @@ static int blob_get_name_and_def_by_row(struct osl_table *table,
 
 /** Define the \p close function for this blob type. */
 #define DEFINE_BLOB_CLOSE(table_name) \
-       void table_name ## _close(void) \
+       static void table_name ## _close(void) \
        { \
                osl_close_table(table_name ## _table, OSL_MARK_CLEAN); \
                table_name ## _table = NULL; \
@@ -588,7 +607,7 @@ static int blob_get_name_and_def_by_row(struct osl_table *table,
 
 /** Define the \p create function for this blob type. */
 #define DEFINE_BLOB_CREATE(table_name) \
-       int table_name ## _create(const char *dir) \
+       static int table_name ## _create(const char *dir) \
        { \
                table_name ## _table_desc.dir = dir; \
                return osl_create_table(&table_name ## _table_desc); \
@@ -610,7 +629,7 @@ static int blob_open(struct osl_table **table,
 }
 
 #define DEFINE_BLOB_OPEN(table_name) \
-       int table_name ## _open(const char *dir) \
+       static int table_name ## _open(const char *dir) \
        { \
                return blob_open(&table_name ## _table, \
                        &table_name ## _table_desc, dir); \
@@ -621,7 +640,6 @@ static int blob_open(struct osl_table **table,
 #define DEFINE_BLOB_INIT(table_name) \
        void table_name ## _init(struct afs_table *t) \
        { \
-               t->name = table_name ## _table_desc.name; \
                t->open = table_name ## _open; \
                t->close = table_name ## _close; \
                t->create = table_name ## _create;\