diff options
Diffstat (limited to 'time/gnotime/patches/patch-as')
-rw-r--r-- | time/gnotime/patches/patch-as | 314 |
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, ¶m_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; + } |