fixing segv
[oweals/gnunet.git] / src / datacache / plugin_datacache_mysql.c
index 4559a9d39531e626c3a1833f15bf56cced961956..8241fb5f85af2d9ae1bccd02e0356c3b2bed71a9 100644 (file)
  *    </pre>
  *    and do the following. [You should replace $USER with the username
  *    that will be running the gnunetd process].
- *    <pre>
- *
+ * @verbatim
       CREATE DATABASE gnunet;
       GRANT select,insert,update,delete,create,alter,drop,create temporary tables
          ON gnunet.* TO $USER@localhost;
       SET PASSWORD FOR $USER@localhost=PASSWORD('$the_password_you_like');
       FLUSH PRIVILEGES;
- *
- *    </pre>
+   @endverbatim
  * 2) In the $HOME directory of $USER, create a ".my.cnf" file
  *    with the following lines
- *    <pre>
-
+ * @verbatim
       [client]
       user=$USER
       password=$the_password_you_like
-
- *    </pre>
+   @endverbatim
  *
  * Thats it -- now you can configure your datastores in GNUnet to
  * use MySQL. Note that .my.cnf file is a security risk unless its on
  *
  * 3) Still, perhaps you should briefly try if the DB connection
  *    works. First, login as $USER. Then use,
- *
- *    <pre>
- *    $ mysql -u $USER -p $the_password_you_like
- *    mysql> use gnunet;
- *    </pre>
+ * @verbatim
+      $ mysql -u $USER -p $the_password_you_like
+      mysql> use gnunet;
+   @endverbatim
  *
  *    If you get the message &quot;Database changed&quot; it probably works.
  *
  *     &quot;ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock&quot;
  *     so there may be some additional trouble depending on your mysql setup.]
  *
- * REPAIRING TABLES:
- * - Its probably healthy to check your tables for inconsistencies
- *   every now and then.
- * - If you get odd SEGVs on gnunetd startup, it might be that the mysql
- *   databases have been corrupted.
- * - The tables can be verified/fixed in two ways;
- *   1) by running mysqlcheck -A, or
- *   2) by executing (inside of mysql using the GNUnet database):
- *   mysql> SHOW TABLES;
- *   mysql> REPAIR TABLE gnXXX;
- *
- * Make sure to replace XXX with the actual names of all tables.
- *
  * PROBLEMS?
  *
  * If you have problems related to the mysql module, your best
@@ -191,6 +173,8 @@ struct Plugin
 
 /**
  * Obtain the location of ".my.cnf".
+ *
+ * @param cfg our configuration
  * @return NULL on error
  */
 static char *
@@ -251,6 +235,9 @@ get_my_cnf_path (const struct GNUNET_CONFIGURATION_Handle *cfg)
 
 /**
  * Free a prepared statement.
+ *
+ * @param plugin plugin context
+ * @param s prepared statement
  */
 static void
 prepared_statement_destroy (struct Plugin *plugin, 
@@ -467,6 +454,7 @@ prepare_statement (struct Plugin *plugin,
  * Bind the parameters for the given MySQL statement
  * and run it.
  *
+ * @param plugin plugin context
  * @param s statement to bind and run
  * @param ap arguments for the binding
  * @return GNUNET_SYSERR on error, GNUNET_OK on success
@@ -491,7 +479,7 @@ init_params (struct Plugin *plugin,
   memset (qbind, 0, sizeof (qbind));
   off = 0;
   ft = 0;
-  while ((pc > 0) && (-1 != (ft = va_arg (ap, enum enum_field_types))))
+  while ( (pc > 0) && (-1 != (int) (ft = va_arg (ap, enum enum_field_types))) )
     {
       qbind[off].buffer_type = ft;
       switch (ft)
@@ -522,7 +510,7 @@ init_params (struct Plugin *plugin,
       pc--;
       off++;
     }
-  if (!((pc == 0) && (ft != -1) && (va_arg (ap, int) == -1)))
+  if (! ( (pc == 0) && (-1 != (int) ft) && (va_arg (ap, int) == -1)) )
     {
       GNUNET_break (0);
       return GNUNET_SYSERR;
@@ -565,6 +553,8 @@ typedef int (*GNUNET_MysqlDataProcessor) (void *cls,
 /**
  * Run a prepared SELECT statement.
  *
+ * @param plugin plugin context
+ * @param s handle to SELECT statment
  * @param result_size number of elements in results array
  * @param results pointer to already initialized MYSQL_BIND
  *        array (of sufficient size) for passing results
@@ -649,6 +639,8 @@ prepared_statement_run_select (struct Plugin *plugin,
 /**
  * Run a prepared statement that does NOT produce results.
  *
+ * @param plugin plugin context
+ * @param s handle to SELECT statment
  * @param ... pairs and triplets of "MYSQL_TYPE_XXX" keys and their respective
  *        values (size + buffer-reference for pointers); terminated
  *        with "-1"
@@ -682,6 +674,12 @@ prepared_statement_run (struct Plugin *plugin,
 }
 
 
+/**
+ * Create temporary table and prepare statements.
+ *
+ * @param plugin plugin context
+ * @return GNUNET_OK on success
+ */
 static int
 itable (struct Plugin *plugin)
 {
@@ -723,10 +721,10 @@ itable (struct Plugin *plugin)
  * @param discard_time when to discard the value in any case
  * @return 0 on error, number of bytes used otherwise
  */
-static uint32_t 
+static size_t 
 mysql_plugin_put (void *cls,
                  const GNUNET_HashCode * key,
-                 uint32_t size,
+                 size_t size,
                  const char *data,
                  enum GNUNET_BLOCK_Type type,
                  struct GNUNET_TIME_Absolute discard_time)