gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7821 - GNUnet/src/libs/mysql


From: gnunet
Subject: [GNUnet-SVN] r7821 - GNUnet/src/libs/mysql
Date: Sun, 2 Nov 2008 15:45:18 -0700 (MST)

Author: grothoff
Date: 2008-11-02 15:45:18 -0700 (Sun, 02 Nov 2008)
New Revision: 7821

Modified:
   GNUnet/src/libs/mysql/lmysql.c
Log:
df

Modified: GNUnet/src/libs/mysql/lmysql.c
===================================================================
--- GNUnet/src/libs/mysql/lmysql.c      2008-11-02 21:34:35 UTC (rev 7820)
+++ GNUnet/src/libs/mysql/lmysql.c      2008-11-02 22:45:18 UTC (rev 7821)
@@ -347,7 +347,6 @@
   mysql_thread_init (); 
   while (dbh->statements != NULL)
     GNUNET_MYSQL_prepared_statement_destroy(dbh->statements);
-  GNUNET_free (dbh->cnffile);
   if (dbs != dbh)
     {
       prev = dbs;
@@ -401,7 +400,57 @@
   return GNUNET_OK;
 }
 
+
 /**
+ * Run the given MySQL SELECT statement.  The statement
+ * must have only a single result (one column, one row).
+ *
+ * @return result on success, NULL on error
+ */
+char *
+GNUNET_MYSQL_run_statement_select(struct GNUNET_MysqlDatabaseHandle * dbh,
+                                 const char * statement)
+{
+  MYSQL_RES *sql_res;
+  MYSQL_ROW sql_row;
+  char * ret;
+
+  GNUNET_mutex_lock(lock);
+  mysql_thread_init (); 
+  if ( (! dbh->valid) &&
+       (GNUNET_OK != iopen(dbh)) )
+    {
+      mysql_thread_end ();
+      GNUNET_mutex_unlock(lock);
+      return NULL;
+    }
+  mysql_query (dbh->dbf, statement);
+  if ((mysql_error (dbh->dbf)[0]) ||
+      (!(sql_res = mysql_use_result (dbh->dbf))) ||
+      (!(sql_row = mysql_fetch_row (sql_res))))
+    {
+      LOG_MYSQL (GNUNET_GE_ERROR | GNUNET_GE_ADMIN | GNUNET_GE_BULK,
+                "mysql_query", dbh);
+      mysql_thread_end ();
+      GNUNET_mutex_unlock(lock);
+      return NULL;
+    }
+  if ( (mysql_num_fields (sql_res) != 1) || 
+       (sql_row[0] == NULL) )
+    {
+      GNUNET_GE_BREAK (dbh->ectx, 0);
+      if (sql_res != NULL)
+        mysql_free_result (sql_res);
+      mysql_thread_end ();
+      GNUNET_mutex_unlock(lock);
+      return NULL;
+    }
+  ret = GNUNET_strdup(sql_row[0]);
+  mysql_free_result (sql_res);
+  return ret;
+}
+
+/**
  * Create a prepared statement.
  *
  * @return NULL on error
@@ -530,12 +579,12 @@
       switch (ft)
         {
        case MYSQL_TYPE_LONGLONG:
-         qbind[off].is_unsigned = 1;
          qbind[off].buffer = va_arg(ap, unsigned long long*);
+         qbind[off].is_unsigned = va_arg(ap, int);
          break;
        case MYSQL_TYPE_LONG:
-         qbind[off].is_unsigned = 1;
          qbind[off].buffer = va_arg(ap, unsigned int*);
+         qbind[off].is_unsigned = va_arg(ap, int);
          break;
        case MYSQL_TYPE_BLOB:
          qbind[off].buffer = va_arg(ap, void*);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]