xaccBackendGetMessage NULL fix
Matthew Vanecek
mevanecek@yahoo.com
17 Nov 2002 00:34:27 -0600
--=-d02pWcCKWXQEiRruU094
Content-Type: multipart/mixed; boundary="=-kfm3uMy0zH/9QQT2M3/l"
--=-kfm3uMy0zH/9QQT2M3/l
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
This patch corrects xaccBackendGetMessage() so that it can return a NULL
value, which is useful in certain circumstances. Also made corrections
to Account.c to handle the NULL, and to a couple of other places. I
documented where/what in Changelog.
Please commit to CVS if it's OK.
Thanks,
--=20
Matthew Vanecek
perl -e 'print $i=3Dpack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
***************************************************************************=
*****
For 93 million miles, there is nothing between the sun and my shadow except=
me.
I'm always getting in the way of something...
--=-kfm3uMy0zH/9QQT2M3/l
Content-Type: application/DEFANGED-190575; name="null_diff.DEFANGED-190575"; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="null_diff.DEFANGED-190575"
? intl/gettext.h
? intl/libgettext.h
Index: ChangeLog
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1156
diff -u -r1.1156 ChangeLog
--- ChangeLog 17 Nov 2002 03:03:19 -0000 1.1156
+++ ChangeLog 17 Nov 2002 06:20:04 -0000
@@ -1,3 +1,21 @@
+2002-11-17 Matthew Vanecek <mevanecek@yahoo.com>
+ * src/backend/postgres/putil.c: Added needed header files to the c
+ file.
+=09
+ * src/backend/postgres/PostgresBackend.c (pgend_session_begin): Added
+ xaccBackendSetMessage for an unknown mode or for a bad connection.
+
+ * src/engine/Backend.c (xaccBackendGetMessage): Allow function to
+ return null if Backend->error_msg is NULL.
+=09
+ * src/engine/Account.c (xaccAccountCommitEdit): Handle a NULL return
+ from xaccBackendGetMessage().
+
+ * src/engine/gnc-session.c (gnc_session_begin): Push the Backend
+ error message onto the session error message (instead of NULL), if
+ it exists. If it's just a warning message (denoted by having a
+ message, but ERR_BACKEND_NO_ERR is set), pop up a dialog.
+=09
2002-11-16 Joshua Sled <jsled@asynchronous.org>
=20
* src/gnome-utils/gnc-dense-cal.c (gnc_dense_cal_draw_to_buffer):
Index: src/backend/postgres/PostgresBackend.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/PostgresBackend.c,v
retrieving revision 1.36
diff -u -r1.36 PostgresBackend.c
--- src/backend/postgres/PostgresBackend.c 16 Nov 2002 23:17:00 -0000 1.36
+++ src/backend/postgres/PostgresBackend.c 17 Nov 2002 06:20:13 -0000
@@ -1842,6 +1842,8 @@
PWARN ("the following message should be shown in a gui");
PWARN ("unknown mode %s, will use multi-user mode",
start ? start : "(null)");
+ xaccBackendSetMessage("Unknown mode %s, defaulting to multi-u=
ser mode",
+ start ? start : "(null)");
be->session_mode =3D MODE_EVENT;
}=20
=20=20=20=20=20=20=20=20=20=20
@@ -1947,9 +1949,9 @@
/* check the connection status */
if (CONNECTION_BAD =3D=3D PQstatus(be->connection))
{
+ char * msg =3D PQerrorMessage(be->connection);
PWARN("Connection to database 'template1' failed:\n"
- "\t%s",=20
- PQerrorMessage(be->connection));
+ "\t%s", msg);
=20=20=20=20=20=20=20
PQfinish (be->connection);
be->connection =3D NULL;
@@ -1958,6 +1960,7 @@
* Alas, it does not, so we just bomb out.
*/
xaccBackendSetError (&be->be, ERR_BACKEND_CANT_CONNECT);
+ xaccBackendSetMessage(&be->be, msg);
return;
}
=20
Index: src/backend/postgres/putil.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/src/backend/postgres/putil.c,v
retrieving revision 1.1
diff -u -r1.1 putil.c
--- src/backend/postgres/putil.c 16 Nov 2002 23:17:01 -0000 1.1
+++ src/backend/postgres/putil.c 17 Nov 2002 06:20:14 -0000
@@ -31,6 +31,13 @@
*=20
*/
=20
+#include <glib.h>=20
+#include <libpq-fe.h>=20=20
+#include "Backend.h"
+#include "BackendP.h"
+#include "gnc-engine-util.h"=20
+#include "PostgresBackend.h"
+
static short module =3D MOD_BACKEND;
=20
#include "putil.h"
Index: src/engine/Account.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Account.c,v
retrieving revision 1.213
diff -u -r1.213 Account.c
--- src/engine/Account.c 16 Nov 2002 23:17:07 -0000 1.213
+++ src/engine/Account.c 17 Nov 2002 06:20:20 -0000
@@ -481,6 +481,8 @@
PERR (" backend asked engine to rollback, but this isn't"
" handled yet. Return code=3D%d", errcode);
err =3D xaccBackendGetMessage(be);
+ /* g_strdup here, because err needs to be g_freed if from Backend */
+ err =3D err ? err : g_strdup(_("Message not available"));
PWARN_GUI("Error occurred while saving Account:\n%d: %s",
xaccBackendGetError(be), err);
=20=09=20=20=20=20
Index: src/engine/Backend.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Backend.c,v
retrieving revision 1.24
diff -u -r1.24 Backend.c
--- src/engine/Backend.c 16 Nov 2002 23:17:08 -0000 1.24
+++ src/engine/Backend.c 17 Nov 2002 06:20:20 -0000
@@ -88,7 +88,7 @@
char * msg;
=20=20=20=20
if (!be) return g_strdup(_("ERR_BACKEND_NO_BACKEND"));
- if (!be->error_msg) return g_strdup(_("No error message"));
+ if (!be->error_msg) return NULL;
=20
/*=20
* Just return the contents of the error_msg and then set it to
Index: src/engine/gnc-session.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/cvsroot/gnucash/src/engine/gnc-session.c,v
retrieving revision 1.22
diff -u -r1.22 gnc-session.c
--- src/engine/gnc-session.c 16 Nov 2002 23:17:09 -0000 1.22
+++ src/engine/gnc-session.c 17 Nov 2002 06:20:22 -0000
@@ -421,11 +421,14 @@
if (session->backend && session->backend->session_begin)
{
int err;
+ char * msg;
+=20=20=20=20=20=20
(session->backend->session_begin)(session->backend, session,
gnc_session_get_url(session), ignore_loc=
k,
create_if_nonexistent);
PINFO("Done running session_begin on backend");
err =3D xaccBackendGetError(session->backend);
+ msg =3D xaccBackendGetMessage(session->backend);
if (err !=3D ERR_BACKEND_NO_ERR)
{
g_free(session->fullpath);
@@ -434,9 +437,13 @@
session->logpath =3D NULL;
g_free(session->book_id);
session->book_id =3D NULL;
- gnc_session_push_error (session, err, NULL);
+ gnc_session_push_error (session, err, msg);
LEAVE("backend error %d", err);
return;
+ }
+ if (msg !=3D NULL) {
+ PWARN_GUI(msg);
+ g_free(msg);
}
}
=20
--=-kfm3uMy0zH/9QQT2M3/l--
--=-d02pWcCKWXQEiRruU094
Content-Type: application/DEFANGED-190576; name="signature_asc.DEFANGED-190576"
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQA91zhzOMmiB1jXEBsRAp5aAKCioRgm5v/GG/PMGJrDvbFL47PZwgCgpbw9
HsvS3YHzMXJZmHu+UK0OXM8=
=n+MF
-----END PGP SIGNATURE-----
--=-d02pWcCKWXQEiRruU094--