I subscribed the gborg site 2 days ago. The reason was that we are
openoffice users under linux and we have some problems that make
postgres unusable on openoffice/linux. The issue 17455 and 17500 on
openoffice.org points to the problem. I debug the latest version of the
driver and corrected some ( i think) bugs.
One problem was that openoffice send to the driver escape istructions in
uppercase and the driver was testing just lowercase.
Another problem was that on snprintf You cannot use the same buffer
as source and destination, because in this way the result is a null string.
Here are the modification I made on convert.c. I am not sure that on Windows
the strcasecmp system call exist. By the way:
2785d2784
< char tmpbuf[1024]; // temporary snprintf destination
2838c2837
< if (strcasecmp(key, "d") == 0)
---
> if (strcmp(key, "d") == 0)
2842,2843c2841,2842
< prtlen = snprintf(tmpbuf, sizeof(buf), "%s::date ", buf);
< CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
> prtlen = snprintf(buf, sizeof(buf), "%s::date ", buf);
> CVT_APPEND_DATA(qb, buf, prtlen);
2845c2844
< else if (strcasecmp(key, "t") == 0)
---
> else if (strcmp(key, "t") == 0)
2849,2850c2848,2849
< prtlen = snprintf(tmpbuf, sizeof(buf), "%s::time", buf);
< CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
> prtlen = snprintf(buf, sizeof(buf), "%s::time", buf);
> CVT_APPEND_DATA(qb, buf, prtlen);
2852c2851
< else if (strcasecmp(key, "ts") == 0)
---
> else if (strcmp(key, "ts") == 0)
2857c2856
< prtlen = snprintf(tmpbuf, sizeof(buf), "%s::datetime", buf);
---
> prtlen = snprintf(buf, sizeof(buf), "%s::datetime", buf);
2859,2860c2858,2859
< prtlen = snprintf(tmpbuf, sizeof(buf), "%s::timestamp", buf);
< CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
> prtlen = snprintf(buf, sizeof(buf), "%s::timestamp", buf);
> CVT_APPEND_DATA(qb, buf, prtlen);
2862c2861
< else if (strcasecmp(key, "oj") == 0) /* {oj syntax support for 7.1 *
servers */
---
> else if (strcmp(key, "oj") == 0) /* {oj syntax support for 7.1 * servers */
2867c2866
< else if (strcasecmp(key, "fn") == 0)
---
> else if (strcmp(key, "fn") == 0)