$NetBSD: patch-as,v 1.1 2005/03/16 12:48:49 rillig Exp $

gcc-2.95.3 does not like code intermixed with declarations.

--- lib/qof/qofsql.c.orig	Sun May 23 22:58:28 2004
+++ lib/qof/qofsql.c	Wed Mar 16 10:21:03 2005
@@ -134,8 +134,7 @@ dequote_string (char *str)
 	    ('\"' == str[0]))
 	{
 		str ++;
-		size_t len = strlen(str);
-		str[len-1] = 0;
+		str[strlen(str)-1] = 0;
 	}
 	return str;
 }
@@ -145,7 +144,14 @@ handle_single_condition (QofSqlQuery *qu
 {
 	char tmpbuff[128];
 	GSList *param_list;
+	QofQuery *qq;
 	QofQueryPredData *pred_data = NULL;
+	sql_field_item *sparam, *svalue;
+	char *qparam_name, *qvalue_name;
+	char *table_name;
+	char *param_name;
+	QofType param_type;
+	QofQueryCompare qop;
 	
 	if (NULL == cond)
 	{
@@ -161,14 +167,14 @@ handle_single_condition (QofSqlQuery *qu
 		PWARN("missing left paramter");
 		return NULL;
 	}
-	sql_field_item * sparam = cond->d.pair.left->item;
+	sparam = cond->d.pair.left->item;
 	if (SQL_name != sparam->type)
 	{
 		PWARN("we support only paramter names at this time (parsed %d)",
           sparam->type);
 		return NULL;
 	}
-	char * qparam_name = sparam->d.name->data;
+	qparam_name = sparam->d.name->data;
 	if (NULL == qparam_name)
 	{
 		PWARN ("missing paramter name");
@@ -183,13 +189,13 @@ handle_single_condition (QofSqlQuery *qu
 		PWARN ("missing right paramter");
 		return NULL;
 	}
-	sql_field_item * svalue = cond->d.pair.right->item;
+	svalue = cond->d.pair.right->item;
 	if (SQL_name != svalue->type)
 	{
 		PWARN("we support only simple values (parsed as %d)", svalue->type);
 		return NULL;
 	}
-	char * qvalue_name = svalue->d.name->data;
+	qvalue_name = svalue->d.name->data;
 	if (NULL == qvalue_name)
 	{
 		PWARN("missing value");
@@ -202,16 +208,18 @@ handle_single_condition (QofSqlQuery *qu
 	 * If it is, look up the value. */
 	if (0 == strncasecmp (qvalue_name, "kvp://", 6))
 	{
+		KvpValue *kv;
+		KvpValueType kvt;
 		if (NULL == query->kvp_join)
 		{
 			PWARN ("missing kvp frame");
 			return NULL;
 		}
-		KvpValue *kv = kvp_frame_get_value (query->kvp_join, qvalue_name+5);
+		kv = kvp_frame_get_value (query->kvp_join, qvalue_name+5);
 		/* If there's no value, its not an error; 
 		 * we just don't do this predicate */
 		if (!kv) return NULL;  
-		KvpValueType kvt = kvp_value_get_type (kv);
+		kvt = kvp_value_get_type (kv);
 
 		tmpbuff[0] = 0x0;
 		qvalue_name = tmpbuff;
@@ -251,7 +259,6 @@ handle_single_condition (QofSqlQuery *qu
 	param_list = qof_query_build_param_list (qparam_name, NULL);
 
 	/* Get the where-term comparison operator */
-	QofQueryCompare qop;
 	switch (cond->op)
 	{
 		case SQL_eq:    qop = QOF_COMPARE_EQUAL; break;
@@ -270,8 +277,6 @@ handle_single_condition (QofSqlQuery *qu
 	/* OK, need to know the type of the thing being matched 
 	 * in order to build the correct predicate.  Get the type 
 	 * from the object parameters. */
-	char *table_name;
-	char *param_name;
 	get_table_and_param (qparam_name, &table_name, &param_name);
 	if (NULL == table_name)
 	{
@@ -290,7 +295,7 @@ handle_single_condition (QofSqlQuery *qu
 		return NULL;
 	}
 
-	QofType param_type = qof_class_get_parameter_type (table_name, param_name);
+	param_type = qof_class_get_parameter_type (table_name, param_name);
 	if (!param_type) 
 	{
 		PWARN ("The parameter \'%s\' on object \'%s\' is not known", 
@@ -334,19 +339,20 @@ handle_single_condition (QofSqlQuery *qu
 	}
 	else if (!strcmp (param_type, QOF_TYPE_DATE))
 	{
+		time_t exact;
+		int rc;
+		Timespec ts;
 		// XXX FIXME: this doesn't handle time strings, only date strings
 		// XXX should also see if we need to do a day-compare or time-compare.
 		/* work around highly bogus locale setting */
 		qof_date_format_set(QOF_DATE_FORMAT_US);
 
-		time_t exact;
-		int rc = qof_scan_date_secs (qvalue_name, &exact);
+		qof_scan_date_secs (qvalue_name, &exact);
 		if (0 == rc) 
 		{
 			PWARN ("unable to parse date: %s", qvalue_name);
 			return NULL;
 		}
-		Timespec ts;
 		ts.tv_sec = exact;
 		ts.tv_nsec = 0;
 		pred_data = qof_query_date_predicate (qop, QOF_DATE_MATCH_DAY, ts);
@@ -367,6 +373,8 @@ handle_single_condition (QofSqlQuery *qu
 	else if (!strcmp (param_type, QOF_TYPE_GUID))
 	{
 		GUID guid;
+		QofGuidMatch gm;
+		GList *guid_list;
 		gboolean rc = string_to_guid (qvalue_name, &guid);
 		if (0 == rc)
 		{
@@ -377,9 +385,9 @@ handle_single_condition (QofSqlQuery *qu
 		// XXX less, than greater than don't make sense,
 		// should check for those bad conditions
 
-		QofGuidMatch gm = QOF_GUID_MATCH_ANY;
+		gm = QOF_GUID_MATCH_ANY;
 		if (QOF_COMPARE_NEQ == qop) gm = QOF_GUID_MATCH_NONE;
-		GList *guid_list = g_list_append (NULL, &guid);
+		guid_list = g_list_append (NULL, &guid);
 		pred_data = qof_query_guid_predicate (gm, guid_list);
 
 		g_list_free (guid_list);
@@ -389,12 +397,14 @@ handle_single_condition (QofSqlQuery *qu
 		/* We are expecting an encoded value that looks like
 		 * /some/path/string:value
 		 */
-		char *sep = strchr (qvalue_name, ':');
+		char *path, *str, *p, *sep;
+		KvpValue *kval;
+		int len;
+		sep = strchr (qvalue_name, ':');
 		if (!sep) return NULL;
 		*sep = 0;
-		char * path = qvalue_name;
-		char * str = sep +1;
-		char * p;
+		path = qvalue_name;
+		str = sep +1;
 		/* If str has only digits, we know its a plain number.
 		 * If its numbers and a decimal point, assume a float
 		 * If its numbers and a slash, assume numeric
@@ -402,8 +412,8 @@ handle_single_condition (QofSqlQuery *qu
 		 * If it looks like an iso date ... 
 		 * else assume its a string.
 		 */
-		KvpValue *kval = NULL;
-		int len = strlen (str);
+		kval = NULL;
+		len = strlen (str);
 		if ((32 == len) && (32 == strspn (str, "0123456789abcdef")))
 		{
 			GUID guid;
@@ -455,7 +465,7 @@ handle_single_condition (QofSqlQuery *qu
 		return NULL;
 	}
 
-	QofQuery *qq = qof_query_create();
+	qq = qof_query_create();
 	qof_query_add_term (qq, param_list, pred_data, QOF_QUERY_FIRST_TERM);
 	return qq;
 }
@@ -471,9 +481,10 @@ handle_where (QofSqlQuery *query, sql_wh
 		{
 			QofQuery *qleft = handle_where (query, swear->d.pair.left);
 			QofQuery *qright = handle_where (query, swear->d.pair.right);
+			QofQueryOp qop;
+			QofQuery *qq;
 			if (NULL == qleft) return qright;
 			if (NULL == qright) return qleft;
-			QofQueryOp qop;
 			switch (swear->d.pair.op)
 			{
 				case SQL_and: qop = QOF_QUERY_AND; break;
@@ -484,7 +495,7 @@ handle_where (QofSqlQuery *query, sql_wh
 					qof_query_destroy (qright);
 					return NULL;
 			}
-			QofQuery * qq = qof_query_merge (qleft, qright, qop);
+			qq = qof_query_merge (qleft, qright, qop);
 			qof_query_destroy (qleft);
 			qof_query_destroy (qright);
 			return qq;
@@ -511,12 +522,12 @@ handle_where (QofSqlQuery *query, sql_wh
 static void 
 handle_sort_order (QofSqlQuery *query, GList *sorder_list)
 {
-	if (!sorder_list) return;
-
 	GSList *qsp[3];
 	gboolean direction[3];
 	int i;
 
+	if (!sorder_list) return;
+
 	for (i=0; i<3; i++)
 	{
 		qsp[i] = NULL;
@@ -524,14 +535,15 @@ handle_sort_order (QofSqlQuery *query, G
 
 		if (sorder_list)
 		{
+			char * qparam_name = NULL;
+			GList *n;
 			sql_order_field *sorder = sorder_list->data;
 
 			/* Set the sort direction */
 			if (SQL_asc == sorder->order_type) direction[i] = TRUE;
 
 			/* Find the paramter name */
-			char * qparam_name = NULL;
-			GList *n = sorder->name;
+			n = sorder->name;
 			if (n)
 			{
 				qparam_name = n->data;
@@ -559,6 +571,10 @@ handle_sort_order (QofSqlQuery *query, G
 void 
 qof_sql_query_parse (QofSqlQuery *query, const char *str)
 {
+	GList *tables;
+	sql_select_statement *sss;
+	sql_where *swear;
+
 	if (!query) return;
 
 	/* Delete old query, if any */
@@ -590,14 +606,14 @@ qof_sql_query_parse (QofSqlQuery *query,
 	 * user wrote "SELECT * FROM tableA, tableB WHERE ..."
 	 * then we don't have a single unique table-name.
 	 */
-	GList *tables = sql_statement_get_tables (query->parse_result);
+	tables = sql_statement_get_tables (query->parse_result);
 	if (1 == g_list_length (tables))
 	{
 		query->single_global_tablename = tables->data;
 	}
 
-	sql_select_statement *sss = query->parse_result->statement;
-	sql_where * swear = sss->where;
+	sss = query->parse_result->statement;
+	swear = sss->where;
 	if (swear)
 	{
 		/* Walk over the where terms, turn them into QOF predicates */
@@ -625,7 +641,7 @@ qof_sql_query_parse (QofSqlQuery *query,
 GList * 
 qof_sql_query_run (QofSqlQuery *query, const char *str)
 {
-	GList *node;
+	GList *node, *results;
 
 	if (!query) return NULL;
 
@@ -635,7 +651,7 @@ qof_sql_query_run (QofSqlQuery *query, c
 	qof_query_set_book (query->qof_query, query->book);
 
 	// qof_query_print (query->qof_query);
-	GList *results = qof_query_run (query->qof_query);
+	results = qof_query_run (query->qof_query);
 
 	return results;
 }
@@ -643,7 +659,7 @@ qof_sql_query_run (QofSqlQuery *query, c
 GList * 
 qof_sql_query_rerun (QofSqlQuery *query)
 {
-	GList *node;
+	GList *node, *results;
 
 	if (!query) return NULL;
 
@@ -652,7 +668,7 @@ qof_sql_query_rerun (QofSqlQuery *query)
 	qof_query_set_book (query->qof_query, query->book);
 
 	// qof_query_print (query->qof_query);
-	GList *results = qof_query_run (query->qof_query);
+	results = qof_query_run (query->qof_query);
 
 	return results;
 }
