r17201 - gnucash/branches/gda-dev2 - 1) Add check for dbi/dbi.h to configure.in

Phil Longstaff plongstaff at cvs.gnucash.org
Sun Jun 8 08:59:05 EDT 2008


Author: plongstaff
Date: 2008-06-08 08:59:05 -0400 (Sun, 08 Jun 2008)
New Revision: 17201
Trac: http://svn.gnucash.org/trac/changeset/17201

Modified:
   gnucash/branches/gda-dev2/configure.in
   gnucash/branches/gda-dev2/src/backend/Makefile.am
   gnucash/branches/gda-dev2/src/backend/dbi/Makefile.am
   gnucash/branches/gda-dev2/src/backend/dbi/gnc-backend-dbi.c
   gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c
   gnucash/branches/gda-dev2/src/backend/sql/gnc-recurrence-sql.c
   gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-employee-sql.c
   gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-job-sql.c
   gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-owner-sql.c
Log:
1) Add check for dbi/dbi.h to configure.in
2) Fix more memory leaks



Modified: gnucash/branches/gda-dev2/configure.in
===================================================================
--- gnucash/branches/gda-dev2/configure.in	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/configure.in	2008-06-08 12:59:05 UTC (rev 17201)
@@ -623,6 +623,28 @@
 AC_SUBST(LIBGDA_CFLAGS)
 AC_SUBST(LIBGDA_LIBS)
 
+### ----------------------
+### LIBDBI
+AC_ARG_ENABLE(dbi,
+  [  --disable-dbi                build without the libdbi backend],
+  [case "${enableval}" in
+     yes) want_dbi=true ;;
+     no)  want_dbi=false ;;
+     *) want_dbi=true ;;
+   esac],[want_dbi=true])
+if test x${want_dbi} = xtrue
+then
+  AC_CHECK_HEADERS(dbi/dbi.h)
+  if test "x$ac_cv_header_dbi_dbi_h" != xno; then
+    LIBDBI_LIBS=-ldbi
+    DBI_DIR=dbi
+  else
+    AC_MSG_ERROR( Unable to find dbi/dbi.h )
+  fi
+fi
+AC_SUBST(LIBDBI_LIBS)
+AC_SUBST(DBI_DIR)
+
 ### --------------------------------------------------------------------------
 ### Variables
 ### Set up all the initial variable values...
@@ -673,94 +695,6 @@
 
 
 ### --------------------------------------------------------------------------
-### SQL
-# Check to see if the user wants to have Postgres support
-#
-# hack alert ... we should use 'pg_config --includedir' and
-# 'pg_config --libdir' to find paths; unfortunately pg_config itself
-# is hard to find :-(
-
-AC_ARG_ENABLE( sql,
-  [  --enable-sql                 compile with sql support],
-  [
-    PG_CONFIG=`which pg_config`
-
-    if test "x$PG_CONFIG" = "x" ; then
-        PG_CONFIG="/usr/lib/postgresql/bin/pg_config"
-    fi
-
-    if test "x$enableval" != "xno" ; then
-
-      PGSQL_CFLAGS=`${PG_CONFIG} --includedir`
-      if test "x$PGSQL_CFLAGS" != x; then
-	PGSQL_CFLAGS="-I${PGSQL_CFLAGS}"
-      fi
-
-      AS_SCRUB_INCLUDE(PGSQL_CFLAGS)
-# XXX Fixme: CPPFLAGS are saved but CFLAGS are altered later on and not restored.
-      saved_CPPFLAGS="${CPPFLAGS}"
-      saved_CFLAGS="${CFLAGS}"
-      CPPFLAGS="${CPPFLAGS} ${PGSQL_CFLAGS}"
-      AC_CHECK_HEADERS(pgsql/libpq-fe.h postgresql/libpq-fe.h libpq-fe.h)
-      if test "x$ac_cv_header_pgsql_libpq_fe_h$ac_cv_header_postgresql_libpq_fe_h$ac_cv_header_libpq_fe_h" = xnonono; then
-         AC_MSG_ERROR([Cannot find PostgreSQL headers; won't build sql backend]) 
-      else 
-        master_dirs="/usr/include /usr/local/include"
-        if test "x$ac_cv_header_pgsql_libpq_fe_h" != xno; then
-          for dir in $master_dirs; do
-              if test -f "$dir/pgsql/libpq-fe.h"; then
-                  CFLAGS="${CFLAGS} -I$dir/pgsql"
-                  break
-	      fi
-          done
-        elif test "x$ac_cv_header_postgresql_libpq_fe_h" != xno; then
-          for dir in $master_dirs; do
-              if test -f "$dir/postgresql/libpq-fe.h"; then
-                  CFLAGS="${CFLAGS} -I$dir/postgresql"
-                  break
-              fi
-          done
-	fi
-
-	AS_SCRUB_INCLUDE(CFLAGS)
-        
-        PGSQL_LIBS=`${PG_CONFIG} --libdir`
-        if test "x$PGSQL_LIBS" != x; then
-	  PGSQL_LIBS="-L${PGSQL_LIBS}"
-        fi
-
-        saved_LIBS="$LIBS"
- 	LIBS="${PGSQL_LIBS} -lpq $LIBS"
-        AC_MSG_CHECKING(for libpq)
-        AC_TRY_LINK(
-          [
-	    #include <libpq-fe.h>
-	  ],
-          [
-             PQconnectdb("asdf");
-          ],
-          [
-            AC_MSG_RESULT(yes)
-            SQL_DIR=postgres
-          ],
-          [
-            AC_MSG_ERROR([Cannot find PostgreSQL libraries; will not build sql backend]) 
-          ]
-        )
-        LIBS="$saved_LIBS"
-      fi
-      CPPFLAGS="$saved_CPPFLAGS"
-      CFLAGS="$saved_CFLAGS"
-    fi
-  ]
-)
-
-AC_SUBST(PGSQL_CFLAGS)
-AC_SUBST(PGSQL_LIBS)
-AC_SUBST(SQL_DIR)
-
-
-### --------------------------------------------------------------------------
 ### RPC has been removed in gnucash 1.9.0
 
 ### --------------------------------------------------------------------------
@@ -1595,12 +1529,12 @@
 output_qof_lib_dir=`eval eval eval echo $QOF_LIB_DIR`
 output_qof_xml_dir=`eval eval eval echo $QOF_XML_DIR`
 
+if test x${DBI_DIR} != x; then
+components="$components dbi"
+fi
 if test x${GDA_DIR} != x; then
 components="$components gda"
 fi
-if test x${SQL_DIR} != x; then
-components="$components sql"
-fi
 if test x${OFX_DIR} != x; then
 components="$components ofx"
 fi

Modified: gnucash/branches/gda-dev2/src/backend/Makefile.am
===================================================================
--- gnucash/branches/gda-dev2/src/backend/Makefile.am	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/backend/Makefile.am	2008-06-08 12:59:05 UTC (rev 17201)
@@ -1,3 +1,3 @@
 
-SUBDIRS = file ${SQL_DIR} ${GDA_DIR} sql dbi
-DIST_SUBDIRS = file postgres gda sql dbi
+SUBDIRS = file sql ${SQL_DIR} ${GDA_DIR} ${DBI_DIR}
+DIST_SUBDIRS = file sql ${SQL_DIR} ${GDA_DIR} ${DBI_DIR}

Modified: gnucash/branches/gda-dev2/src/backend/dbi/Makefile.am
===================================================================
--- gnucash/branches/gda-dev2/src/backend/dbi/Makefile.am	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/backend/dbi/Makefile.am	2008-06-08 12:59:05 UTC (rev 17201)
@@ -28,7 +28,7 @@
    ${GLIB_LIBS} ${GCONF_LIBS} \
    ${top_builddir}/src/backend/sql/libgncmod-backend-sql.la \
    ${top_builddir}/src/engine/libgncmod-engine.la \
-   -ldbi \
+   ${LIBDBI_LIBS} \
    ${QOF_LIBS}
 
 INCLUDES = -DG_LOG_DOMAIN=\"gnc.backend.dbi\"

Modified: gnucash/branches/gda-dev2/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/dbi/gnc-backend-dbi.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/backend/dbi/gnc-backend-dbi.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -367,7 +367,11 @@
 
 	if( dbi_row->gvalue_list != NULL ) {
 		for( node = dbi_row->gvalue_list; node != NULL; node = node->next ) {
-			g_free( node->data );
+			GValue* value = (GValue*)node->data;
+			if( G_VALUE_HOLDS_STRING(value) ) {
+				g_free( (gpointer)g_value_get_string( value ) );
+			}
+			g_free( value );
 		}
 		g_list_free( dbi_row->gvalue_list );
 	}
@@ -394,7 +398,7 @@
 			break;
 		case DBI_TYPE_STRING:
 			g_value_init( value, G_TYPE_STRING );
-			g_value_set_string( value, dbi_result_get_string( dbi_row->result, col_name ) );
+			g_value_take_string( value, dbi_result_get_string_copy( dbi_row->result, col_name ) );
 			break;
 		default:
 			PERR( "Unknown DBI_TYPE: %d\n", type );

Modified: gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/backend/sql/gnc-backend-util-sql.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -810,12 +810,13 @@
 			month = atoi( buf );
 			day = atoi( &s[6] );
 
-			date = g_date_new_dmy( day, month, year );
-			(*setter)( pObject, date );
-			g_date_free( date );
-
+			if( year != 0 || month != 0 || day != 0 ) {
+				date = g_date_new_dmy( day, month, year );
+				(*setter)( pObject, date );
+				g_date_free( date );
+			}
 		} else {
-			PWARN( "Unknown timespec type: %s", G_VALUE_TYPE_NAME( val ) );
+			PWARN( "Unknown date type: %s", G_VALUE_TYPE_NAME( val ) );
         }
     }
 }
@@ -1624,7 +1625,7 @@
 {
 	g_return_if_fail( be != NULL );
 
-	be->versions = g_hash_table_new( g_str_hash, g_str_equal );
+	be->versions = g_hash_table_new_full( g_str_hash, g_str_equal, g_free, NULL );
 
 	if( gnc_sql_connection_does_table_exist( be->conn, VERSION_TABLE_NAME ) ) {
 		GncSqlResult* result;
@@ -1642,7 +1643,7 @@
     			name = gnc_sql_row_get_value_at_col_name( row, TABLE_COL_NAME );
 				version = gnc_sql_row_get_value_at_col_name( row, VERSION_COL_NAME );
 				g_hash_table_insert( be->versions,
-									(gpointer)g_value_get_string( name ),
+									g_strdup( g_value_get_string( name ) ),
 									GINT_TO_POINTER(g_value_get_int( version )) );
 				row = gnc_sql_result_get_next_row( result );
 			}
@@ -1678,7 +1679,7 @@
 		PERR( "Error creating versions table: %s\n", error->message );
 	}
 	if( be->versions == NULL ) {
-		be->versions = g_hash_table_new( g_str_hash, g_str_equal );
+		be->versions = g_hash_table_new_full( g_str_hash, g_str_equal, g_free, NULL );
 	} else {
 		g_hash_table_remove_all( be->versions );
 	}
@@ -1729,7 +1730,7 @@
 		g_free( sql );
 	}
 
-	g_hash_table_insert( be->versions, (gpointer)table_name, GINT_TO_POINTER(version) );
+	g_hash_table_insert( be->versions, g_strdup( table_name ), GINT_TO_POINTER(version) );
 }
 
 /**

Modified: gnucash/branches/gda-dev2/src/backend/sql/gnc-recurrence-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/backend/sql/gnc-recurrence-sql.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/backend/sql/gnc-recurrence-sql.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -238,7 +238,6 @@
 	recurrence_info.pRecurrence = r;
 
     gnc_sql_load_object( be, row, TABLE_NAME, &recurrence_info, col_table );
-	g_free( row );
 }
 
 static GncSqlResult*
@@ -248,7 +247,6 @@
     gchar guid_buf[GUID_ENCODING_LENGTH+1];
     gchar* field_name;
     GncSqlStatement* stmt;
-    GValue value;
 	GError* error = NULL;
 	GncSqlResult* result;
 
@@ -256,14 +254,8 @@
 	g_return_val_if_fail( guid != NULL, NULL );
 
     guid_to_string_buff( guid, guid_buf );
-    memset( &value, 0, sizeof( value ) );
-    g_value_init( &value, G_TYPE_STRING );
-    g_value_set_string( &value, guid_buf );
-
 	buf = g_strdup_printf( "SELECT * FROM %s WHERE obj_guid='%s'", TABLE_NAME, guid_buf );
 	stmt = gnc_sql_connection_create_statement_from_sql( be->conn, buf );
-	g_free( buf );
-
     result = gnc_sql_execute_select_statement( be, stmt );
 	gnc_sql_statement_dispose( stmt );
 	return result;

Modified: gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-employee-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-employee-sql.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-employee-sql.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -68,7 +68,7 @@
 	{ "active",     CT_BOOLEAN,       0,                COL_NNUL,          NULL, QOF_PARAM_ACTIVE },
 	{ "currency",   CT_COMMODITYREF,  0,                COL_NNUL,          NULL, NULL,
 			(QofAccessFunc)gncEmployeeGetCurrency, (QofSetterFunc)gncEmployeeSetCurrency },
-	{ "ccard_guid", CT_ACCOUNTREF,    0,                COL_NNUL,          NULL, EMPLOYEE_CC },
+	{ "ccard_guid", CT_ACCOUNTREF,    0,                0,                 NULL, EMPLOYEE_CC },
 	{ "workday",    CT_NUMERIC,       0,                COL_NNUL,          NULL, EMPLOYEE_WORKDAY },
 	{ "rate",       CT_NUMERIC,       0,                COL_NNUL,          NULL, EMPLOYEE_RATE },
 	{ "addr",       CT_ADDRESS,       0,                0,                 NULL, EMPLOYEE_ADDR },

Modified: gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-job-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-job-sql.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-job-sql.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -58,8 +58,10 @@
 	{ "id",        CT_STRING,   MAX_ID_LEN,        COL_NNUL,          NULL, JOB_ID },
 	{ "name",      CT_STRING,   MAX_NAME_LEN,      COL_NNUL,          NULL, JOB_NAME },
 	{ "reference", CT_STRING,   MAX_REFERENCE_LEN, COL_NNUL,          NULL, JOB_REFERENCE },
-	{ "active",    CT_BOOLEAN,  0,                 COL_NNUL,          NULL, JOB_ACTIVE },
-	{ "owner",     CT_OWNERREF, 0,                 COL_NNUL,          NULL, JOB_OWNER },
+	{ "active",    CT_BOOLEAN,  0,                 COL_NNUL,          NULL, NULL,
+		(QofAccessFunc)gncJobGetActive, (QofSetterFunc)gncJobSetActive },
+	{ "owner",     CT_OWNERREF, 0,                 COL_NNUL,          NULL, NULL,
+		(QofAccessFunc)gncJobGetOwner, (QofSetterFunc)gncJobSetOwner },
 	{ NULL }
 };
 

Modified: gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-owner-sql.c
===================================================================
--- gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-owner-sql.c	2008-06-08 10:08:22 UTC (rev 17200)
+++ gnucash/branches/gda-dev2/src/business/business-core/sql/gnc-owner-sql.c	2008-06-08 12:59:05 UTC (rev 17201)
@@ -74,7 +74,6 @@
     val = gnc_sql_row_get_value_at_col_name( row, buf );
     g_free( buf );
 
-    val = gnc_sql_row_get_value_at_col_name( row, table_row->col_name );
     if( val != NULL ) {
         string_to_guid( g_value_get_string( val ), &guid );
     }



More information about the gnucash-changes mailing list