summaryrefslogtreecommitdiff
path: root/time/gnotime/patches/patch-as
diff options
context:
space:
mode:
Diffstat (limited to 'time/gnotime/patches/patch-as')
-rw-r--r--time/gnotime/patches/patch-as314
1 files changed, 314 insertions, 0 deletions
diff --git a/time/gnotime/patches/patch-as b/time/gnotime/patches/patch-as
new file mode 100644
index 00000000000..f1fc6fafe4f
--- /dev/null
+++ b/time/gnotime/patches/patch-as
@@ -0,0 +1,314 @@
+$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;
+ }