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--