Merge 'misc-backend' -r 14160:14184 into trunk.

This includes the now semi-functional postgres backend.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14198 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Chris Shoemaker 2006-05-26 00:10:35 +00:00
parent a98cfaf58d
commit 97062a3b81
39 changed files with 306 additions and 229 deletions

113
ChangeLog
View File

@ -15,12 +15,125 @@
* configure.in: Deactivate --enable-sql because PostgreSQL backend * configure.in: Deactivate --enable-sql because PostgreSQL backend
is still broken and we can't fix it before 2.0.0; bug#332251. is still broken and we can't fix it before 2.0.0; bug#332251.
r14181 | chris | 2006-05-24 18:57:43 -0400 (Wed, 24 May 2006) | 3 lines
M /gnucash/branches/misc-backend/lib/libqof/qof/guid.c
The postgres backend depends on the value of the null guid, so revert it
to its 1.8 value.
r14180 | chris | 2006-05-24 18:54:03 -0400 (Wed, 24 May 2006) | 2 lines r14180 | chris | 2006-05-24 18:54:03 -0400 (Wed, 24 May 2006) | 2 lines
M /gnucash/trunk/lib/libqof/qof/gnc-date.c M /gnucash/trunk/lib/libqof/qof/gnc-date.c
Consistently pad date formats with zeros instead of spaces. Consistently pad date formats with zeros instead of spaces.
r14170 | chris | 2006-05-23 23:55:35 -0400 (Tue, 23 May 2006) | 2 lines
M /gnucash/branches/misc-backend/src/backend/postgres/Makefile.am
M /gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c
M /gnucash/branches/misc-backend/src/engine/Account.c
M /gnucash/branches/misc-backend/src/engine/gnc-commodity.h
Trivial comments/cleanups.
r14169 | chris | 2006-05-23 23:53:52 -0400 (Tue, 23 May 2006) | 2 lines
M /gnucash/branches/misc-backend/src/gnome-utils/gnc-html-graph-gog.c
Clarify unused parameters.
r14168 | chris | 2006-05-23 23:48:00 -0400 (Tue, 23 May 2006) | 3 lines
M /gnucash/branches/misc-backend/src/gnome-utils/gnc-file.c
There's no need to rerun the book-saved callbacks in gnc_file_save_as()
because they've already been run in gnc_file_save()
r14167 | chris | 2006-05-23 23:44:50 -0400 (Tue, 23 May 2006) | 6 lines
M /gnucash/branches/misc-backend/src/gnome-utils/gnc-file.c
M /gnucash/branches/misc-backend/src/gnome-utils/gnc-main-window.c
Use the session URL instead of file path for
1) determining if we have something open
2) determining if we're saving exactly what we have open
3) updating the title bar
r14166 | chris | 2006-05-23 23:34:18 -0400 (Tue, 23 May 2006) | 2 lines
M /gnucash/branches/misc-backend/lib/libqof/backend/file/Makefile.am
M /gnucash/branches/misc-backend/lib/libqof/backend/file/qof-backend-qsf.h
M /gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c
M /gnucash/branches/misc-backend/lib/libqof/qof/qof.h
M /gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c
Move the QSF backend from custom init to GModule init.
r14165 | chris | 2006-05-23 23:21:09 -0400 (Tue, 23 May 2006) | 18 lines
M /gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c
M /gnucash/branches/misc-backend/lib/libqof/qof/qofbackend-p.h
M /gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.c
M /gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.h
M /gnucash/branches/misc-backend/lib/libqof/qof/qofsession-p.h
M /gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c
M /gnucash/branches/misc-backend/lib/libqof/qof/qofsession.h
M /gnucash/branches/misc-backend/lib/libqof/qof/qofutil.c
M /gnucash/branches/misc-backend/lib/libqof/qof/qofutil.h
M /gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.c
M /gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.h
M /gnucash/branches/misc-backend/src/backend/file/test/test-load-backend.c
M /gnucash/branches/misc-backend/src/backend/file/test/test-load-xml2.c
M /gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c
M /gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.h
M /gnucash/branches/misc-backend/src/backend/postgres/test/test-db.c
M /gnucash/branches/misc-backend/src/backend/postgres/test/test-load-backend.c
M /gnucash/branches/misc-backend/src/backend/postgres/test/test-period.c
M /gnucash/branches/misc-backend/src/engine/Period.c
M /gnucash/branches/misc-backend/src/engine/Transaction.c
M /gnucash/branches/misc-backend/src/engine/gnc-engine.c
M /gnucash/branches/misc-backend/src/engine/gnc-engine.h
M /gnucash/branches/misc-backend/src/engine/gnc-pricedb.c
M /gnucash/branches/misc-backend/src/engine/gnc-session-scm.c
M /gnucash/branches/misc-backend/src/engine/gnc-session-scm.h
M /gnucash/branches/misc-backend/src/engine/gw-engine-spec.scm
Decrease coupling between backends and engine:
- do not include the (supposedly) private qofbackend-p.h in qofutil.h,
instead, include it explictly in only the places that need it.
- since backends are GModules, use the GModule module init hook, instead
of rolling our own and using a different function for each backend
- loop over a list of backends for the engine to try to load
- include the postgres backend in that list of backends
- move qof_session_export() from gnc-engine.c to qofsession.c
- publicize qof_backend_set_error() and qof_backend_get_error()
- privatize QofBookFileType to gnc-backend-file.c
Incidental:
- Plug a string leak in qofsession.c
- drop the unused gnc_session_scm_export code
- Drop unimplemented prototype gncBackendInit_file()
- Formatting cleanups.
r14164 | chris | 2006-05-23 23:18:14 -0400 (Tue, 23 May 2006) | 2 lines
M /gnucash/branches/misc-backend/lib/libqof/qof/qofbook.c
Recognize unequal books as unequal.
r14163 | chris | 2006-05-23 23:16:19 -0400 (Tue, 23 May 2006) | 2 lines
M /gnucash/branches/misc-backend/src/engine/Makefile.am
Make sure GNC_LIBDIR is updated when the installation dir changes.
r14161 | chris | 2006-05-23 21:40:39 -0400 (Tue, 23 May 2006) | 2 lines
A /gnucash/branches/misc-backend (from /gnucash/trunk:14160)
Branched from trunk at r14160, hoping postgres will work again someday...
r14159 | chris | 2006-05-23 21:25:30 -0400 (Tue, 23 May 2006) | 4 lines r14159 | chris | 2006-05-23 21:25:30 -0400 (Tue, 23 May 2006) | 4 lines
M /gnucash/trunk/lib/guile-www/cgi.scm M /gnucash/trunk/lib/guile-www/cgi.scm

View File

@ -14,6 +14,7 @@ libgncqof_backend_qsf_la_SOURCES = \
qsf-xml-map.c \ qsf-xml-map.c \
qsf-xml.c qsf-xml.c
libgncqof_backend_qsf_la_LDFLAGS = -module
libgncqof_backend_qsf_la_LIBADD = \ libgncqof_backend_qsf_la_LIBADD = \
${QOF_LIBS} \ ${QOF_LIBS} \
${GLIB_LIBS} \ ${GLIB_LIBS} \

View File

@ -139,6 +139,7 @@ Check the QofBackendError - don't assume the file is OK.
#ifndef _QOF_BACKEND_QSF_H #ifndef _QOF_BACKEND_QSF_H
#define _QOF_BACKEND_QSF_H #define _QOF_BACKEND_QSF_H
#include <gmodule.h>
#include "qoflog.h" #include "qoflog.h"
#include "qofbackend.h" #include "qofbackend.h"
@ -162,7 +163,8 @@ default values for the QofBackendOption KvpFrame.
Calls gettext because QofBackendOption Calls gettext because QofBackendOption
strings are translatable. strings are translatable.
*/ */
void qsf_provider_init(void); G_MODULE_EXPORT const gchar *
g_module_check_init(GModule *module);
/** \name Supported backend configurations /** \name Supported backend configurations
@{ @{

View File

@ -24,6 +24,7 @@
#include "config.h" #include "config.h"
#include <glib.h> #include <glib.h>
#include "qof.h" #include "qof.h"
#include "qofbackend-p.h"
#include "qof-backend-qsf.h" #include "qof-backend-qsf.h"
#include <libxml/xmlmemory.h> #include <libxml/xmlmemory.h>
#include <libxml/tree.h> #include <libxml/tree.h>
@ -1269,17 +1270,11 @@ qsf_provider_free (QofBackendProvider *prov)
g_free (prov); g_free (prov);
} }
void G_MODULE_EXPORT const gchar *
qsf_provider_init(void) g_module_check_init(GModule *module)
{ {
QofBackendProvider *prov; QofBackendProvider *prov;
/* #ifdef ENABLE_NLS
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif*/
prov = g_new0 (QofBackendProvider, 1); prov = g_new0 (QofBackendProvider, 1);
prov->provider_name = "QSF Backend Version 0.2"; prov->provider_name = "QSF Backend Version 0.2";
prov->access_method = "file"; prov->access_method = "file";
@ -1288,4 +1283,5 @@ qsf_provider_init(void)
prov->check_data_type = qsf_determine_file_type; prov->check_data_type = qsf_determine_file_type;
prov->provider_free = qsf_provider_free; prov->provider_free = qsf_provider_free;
qof_backend_register_provider (prov); qof_backend_register_provider (prov);
return NULL;
} }

View File

@ -122,14 +122,11 @@ guid_null(void)
static int null_inited = 0; static int null_inited = 0;
static GUID null_guid; static GUID null_guid;
if (!null_inited) if (!null_inited) {
{
int i; int i;
char *tmp = "NULLGUID.EMPTY.";
/* 16th space for '\O' */
for (i = 0; i < GUID_DATA_SIZE; i++) for (i = 0; i < GUID_DATA_SIZE; i++)
null_guid.data[i] = tmp[i]; null_guid.data[i] = '\0';
null_inited = 1; null_inited = 1;
} }

View File

@ -106,8 +106,6 @@
/** allow easy logging of QSF debug messages */ /** allow easy logging of QSF debug messages */
#define QOF_MOD_QSF "gncqof-backend-qsf" #define QOF_MOD_QSF "gncqof-backend-qsf"
/** allow easy loading of the QSF backend */ /** allow easy loading of the QSF backend */
#define QSF_BACKEND_LIB "libgncqof-backend-qsf" #define QSF_BACKEND_LIB "gncqof-backend-qsf"
/** allow easy loading of the QSF backend */
#define QSF_MODULE_INIT "qsf_provider_init"
#endif /* QOF_H_ */ #endif /* QOF_H_ */

View File

@ -182,7 +182,7 @@
* pointer to the second book, where the results of the query * pointer to the second book, where the results of the query
* should go. * should go.
* *
* Cann the book commit() to complete the book partitioning. * Call the book commit() to complete the book partitioning.
* *
* After the begin(), there will be a call to run_query(), followed * After the begin(), there will be a call to run_query(), followed
* probably by a string of object calls, and completed by commit(). * probably by a string of object calls, and completed by commit().
@ -367,15 +367,6 @@ struct QofBackend_s
*/ */
void qof_backend_register_provider (QofBackendProvider *); void qof_backend_register_provider (QofBackendProvider *);
/** The qof_backend_set_error() routine pushes an error code onto the error
* stack. (FIXME: the stack is 1 deep in current implementation).
*/
void qof_backend_set_error (QofBackend *be, QofBackendError err);
/** The qof_backend_get_error() routine pops an error code off the error stack.
*/
QofBackendError qof_backend_get_error (QofBackend *be);
/** The qof_backend_set_message() assigns a string to the backend error message. /** The qof_backend_set_message() assigns a string to the backend error message.
*/ */
void qof_backend_set_message(QofBackend *be, const char *format, ...); void qof_backend_set_message(QofBackend *be, const char *format, ...);

View File

@ -384,30 +384,19 @@ qof_backend_commit_exists(QofBackend *be)
} }
gboolean gboolean
qof_load_backend_library (const char *directory, qof_load_backend_library (const char *directory, const char* module_name)
const char* filename, const char* init_fcn)
{ {
gchar *fullpath; gchar *fullpath;
typedef void (* backend_init) (void);
GModule *backend; GModule *backend;
backend_init gmod_init;
gpointer g;
g_return_val_if_fail(g_module_supported(), FALSE); g_return_val_if_fail(g_module_supported(), FALSE);
fullpath = g_module_build_path(directory, filename); fullpath = g_module_build_path(directory, module_name);
backend = g_module_open(fullpath, G_MODULE_BIND_LAZY); backend = g_module_open(fullpath, G_MODULE_BIND_LAZY);
if (!backend) { if (!backend) {
g_message ("%s: %s\n", PACKAGE, g_module_error ()); g_message ("%s: %s\n", PACKAGE, g_module_error ());
return FALSE; return FALSE;
} }
g = &gmod_init;
if (!g_module_symbol (backend, init_fcn, g))
{
g_message ("%s: %s\n", PACKAGE, g_module_error ());
return FALSE;
}
g_module_make_resident(backend); g_module_make_resident(backend);
gmod_init();
return TRUE; return TRUE;
} }

View File

@ -177,6 +177,15 @@ void qof_backend_run_commit(QofBackend *be, QofInstance *inst);
gboolean qof_backend_commit_exists(QofBackend *be); gboolean qof_backend_commit_exists(QofBackend *be);
//@} //@}
/** The qof_backend_set_error() routine pushes an error code onto the error
* stack. (FIXME: the stack is 1 deep in current implementation).
*/
void qof_backend_set_error (QofBackend *be, QofBackendError err);
/** The qof_backend_get_error() routine pops an error code off the error stack.
*/
QofBackendError qof_backend_get_error (QofBackend *be);
/** @name Backend Configuration using KVP /** @name Backend Configuration using KVP
The backend uses qof_backend_get_config to pass back a KvpFrame of QofBackendOption The backend uses qof_backend_get_config to pass back a KvpFrame of QofBackendOption
@ -254,16 +263,14 @@ KvpFrame* qof_backend_get_config(QofBackend *be);
/** \brief Load a QOF-compatible backend shared library. /** \brief Load a QOF-compatible backend shared library.
\param directory Can be NULL if filename is a complete path. \param directory Can be NULL if filename is a complete path.
\param filename Name of the .la file that describes the \param module_name Name of the .la file that describes the
shared library. This provides platform independence, shared library. This provides platform independence,
courtesy of libtool. courtesy of libtool.
\param init_fcn The QofBackendProvider init function.
\return FALSE in case or error, otherwise TRUE. \return FALSE in case or error, otherwise TRUE.
*/ */
gboolean gboolean
qof_load_backend_library (const gchar *directory, qof_load_backend_library(const gchar *directory, const gchar* module_name);
const gchar* filename, const gchar* init_fcn);
/** \brief Retrieve the backend used by this book */ /** \brief Retrieve the backend used by this book */
QofBackend* qof_book_get_backend (QofBook *book); QofBackend* qof_book_get_backend (QofBook *book);

View File

@ -139,7 +139,7 @@ qof_book_equal (QofBook *book_1, QofBook *book_2)
{ {
if (book_1 == book_2) return TRUE; if (book_1 == book_2) return TRUE;
if (!book_1 || !book_2) return FALSE; if (!book_1 || !book_2) return FALSE;
return TRUE; return FALSE;
} }
/* ====================================================================== */ /* ====================================================================== */

View File

@ -70,7 +70,4 @@ QofBackend * qof_session_get_backend (QofSession *session);
void qof_session_push_error (QofSession *session, QofBackendError err, void qof_session_push_error (QofSession *session, QofBackendError err,
const char *message); const char *message);
QofBackend* gncBackendInit_file(const char *book_id, void *data);
#endif #endif

View File

@ -843,7 +843,6 @@ struct backend_providers
{ {
const char *libdir; const char *libdir;
const char *filename; const char *filename;
const char *init_fcn;
}; };
/* All available QOF backends need to be described here /* All available QOF backends need to be described here
@ -851,11 +850,11 @@ and the last entry must be three NULL's.
Remember: Use the libdir from the current build environment Remember: Use the libdir from the current build environment
and use JUST the module name without .so - .so is not portable! */ and use JUST the module name without .so - .so is not portable! */
struct backend_providers backend_list[] = { struct backend_providers backend_list[] = {
{ QOF_LIB_DIR, QSF_BACKEND_LIB, QSF_MODULE_INIT }, { QOF_LIB_DIR, QSF_BACKEND_LIB },
#ifdef HAVE_DWI #ifdef HAVE_DWI
{ QOF_LIB_DIR, "libqof_backend_dwi", "dwiend_provider_init" }, { QOF_LIB_DIR, "libqof_backend_dwi"},
#endif #endif
{ NULL, NULL, NULL } { NULL, NULL }
}; };
static void static void
@ -876,11 +875,10 @@ qof_session_load_backend(QofSession * session, char * access_method)
{ {
for (num = 0; backend_list[num].filename != NULL; num++) { for (num = 0; backend_list[num].filename != NULL; num++) {
if(!qof_load_backend_library(backend_list[num].libdir, if(!qof_load_backend_library(backend_list[num].libdir,
backend_list[num].filename, backend_list[num].init_fcn)) backend_list[num].filename))
{ {
PWARN (" failed to load %s from %s using %s", PWARN (" failed to load %s from %s",
backend_list[num].filename, backend_list[num].libdir, backend_list[num].filename, backend_list[num].libdir);
backend_list[num].init_fcn);
} }
} }
} }
@ -894,13 +892,14 @@ qof_session_load_backend(QofSession * session, char * access_method)
/* More than one backend could provide this /* More than one backend could provide this
access method, check file type compatibility. */ access method, check file type compatibility. */
type_check = (gboolean (*)(const char*)) prov->check_data_type; type_check = (gboolean (*)(const char*)) prov->check_data_type;
if (type_check) {
prov_type = (type_check)(session->book_id); prov_type = (type_check)(session->book_id);
if(!prov_type) if (!prov_type) {
{
PINFO(" %s not usable", prov->provider_name); PINFO(" %s not usable", prov->provider_name);
p = p->next; p = p->next;
continue; continue;
} }
}
PINFO (" selected %s", prov->provider_name); PINFO (" selected %s", prov->provider_name);
if (NULL == prov->backend_new) if (NULL == prov->backend_new)
{ {
@ -985,12 +984,12 @@ qof_session_begin (QofSession *session, const char * book_id,
return; return;
} }
/* Store the session URL */
session->book_id = g_strdup (book_id);
/* destroy the old backend */ /* destroy the old backend */
qof_session_destroy_backend(session); qof_session_destroy_backend(session);
/* Store the session URL */
session->book_id = g_strdup (book_id);
/* Look for something of the form of "file:/", "http://" or /* Look for something of the form of "file:/", "http://" or
* "postgres://". Everything before the colon is the access * "postgres://". Everything before the colon is the access
* method. Load the first backend found for that access method. * method. Load the first backend found for that access method.
@ -1000,7 +999,7 @@ qof_session_begin (QofSession *session, const char * book_id,
{ {
access_method = g_strdup (book_id); access_method = g_strdup (book_id);
p = strchr (access_method, ':'); p = strchr (access_method, ':');
*p = 0; *p = '\0';
qof_session_load_backend(session, access_method); qof_session_load_backend(session, access_method);
g_free (access_method); g_free (access_method);
} }
@ -1013,6 +1012,8 @@ qof_session_begin (QofSession *session, const char * book_id,
/* No backend was found. That's bad. */ /* No backend was found. That's bad. */
if (NULL == session->backend) if (NULL == session->backend)
{ {
g_free(session->book_id);
session->book_id = NULL;
qof_session_push_error (session, ERR_BACKEND_BAD_URL, NULL); qof_session_push_error (session, ERR_BACKEND_BAD_URL, NULL);
LEAVE (" BAD: no backend: sess=%p book-id=%s", LEAVE (" BAD: no backend: sess=%p book-id=%s",
session, book_id ? book_id : "(null)"); session, book_id ? book_id : "(null)");
@ -1207,7 +1208,7 @@ qof_session_save (QofSession *session,
{ {
for (num = 0; backend_list[num].filename != NULL; num++) { for (num = 0; backend_list[num].filename != NULL; num++) {
qof_load_backend_library(backend_list[num].libdir, qof_load_backend_library(backend_list[num].libdir,
backend_list[num].filename, backend_list[num].init_fcn); backend_list[num].filename);
} }
} }
p = g_slist_copy(provider_list); p = g_slist_copy(provider_list);
@ -1418,4 +1419,45 @@ qof_session_process_events (QofSession *session)
return session->backend->process_events (session->backend); return session->backend->process_events (session->backend);
} }
/* XXX This exports the list of accounts to a file. It does not
* export any transactions. It's a place-holder until full
* book-closing is implemented.
*/
gboolean
qof_session_export (QofSession *tmp_session,
QofSession *real_session,
QofPercentageFunc percentage_func)
{
QofBook *book, *book2;
QofBackend *be;
if ((!tmp_session) || (!real_session)) return FALSE;
book = qof_session_get_book (real_session);
ENTER ("tmp_session=%p real_session=%p book=%p book_id=%s",
tmp_session, real_session, book,
qof_session_get_url(tmp_session)
? qof_session_get_url(tmp_session) : "(null)");
/* There must be a backend or else. (It should always be the file
* backend too.)
*/
book2 = qof_session_get_book(tmp_session);
be = qof_book_get_backend(book2);
if (!be)
return FALSE;
be->percentage = percentage_func;
if (be->export) {
int err;
(be->export)(be, book);
err = qof_backend_get_error(be);
if (ERR_BACKEND_NO_ERR != err) { return FALSE; }
}
return TRUE;
}
/* =================== END OF FILE ====================================== */ /* =================== END OF FILE ====================================== */

View File

@ -431,5 +431,9 @@ void qof_session_add_close_hook (GFunc fn, gpointer data);
* @param session A pointer to the session being closed. */ * @param session A pointer to the session being closed. */
void qof_session_call_close_hooks (QofSession *session); void qof_session_call_close_hooks (QofSession *session);
gboolean qof_session_export (QofSession *tmp_session,
QofSession *real_session,
QofPercentageFunc percentage_func);
#endif /* QOF_SESSION_H */ #endif /* QOF_SESSION_H */
/** @} */ /** @} */

View File

@ -32,6 +32,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "qof.h" #include "qof.h"
#include "qofbackend-p.h"
static QofLogModule log_module = QOF_MOD_UTIL; static QofLogModule log_module = QOF_MOD_UTIL;

View File

@ -36,7 +36,8 @@
#include "qof.h" #include "qof.h"
#include "qoflog.h" #include "qoflog.h"
#include "qofutil.h" #include "qofutil.h"
#include "qofbackend-p.h" #include "qofbackend.h"
#include "qofclass.h"
#include "qofbook.h" #include "qofbook.h"
#include "qofinstance.h" #include "qofinstance.h"

View File

@ -66,6 +66,18 @@
static QofLogModule log_module = GNC_MOD_BACKEND; static QofLogModule log_module = GNC_MOD_BACKEND;
typedef enum
{
GNC_BOOK_NOT_OURS,
GNC_BOOK_BIN_FILE,
GNC_BOOK_XML1_FILE,
GNC_BOOK_XML2_FILE,
GNC_BOOK_XML2_FILE_NO_ENCODING,
QSF_GNC_OBJECT,
QSF_OBJECT,
QSF_MAP,
} QofBookFileType;
/* ================================================================= */ /* ================================================================= */
static gboolean static gboolean
@ -1024,8 +1036,8 @@ gnc_provider_free (QofBackendProvider *prov)
g_free (prov); g_free (prov);
} }
void G_MODULE_EXPORT const gchar *
gnc_provider_init(void) g_module_check_init(GModule *module)
{ {
QofBackendProvider *prov; QofBackendProvider *prov;
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
@ -1042,6 +1054,7 @@ gnc_provider_init(void)
prov->provider_free = gnc_provider_free; prov->provider_free = gnc_provider_free;
prov->check_data_type = gnc_determine_file_type; prov->check_data_type = gnc_determine_file_type;
qof_backend_register_provider (prov); qof_backend_register_provider (prov);
return NULL;
} }
/* ========================== END OF FILE ===================== */ /* ========================== END OF FILE ===================== */

View File

@ -32,7 +32,9 @@
#define GNC_BACKEND_FILE_H_ #define GNC_BACKEND_FILE_H_
#include "qof.h" #include "qof.h"
#include <gmodule.h>
#include "qofbackend-p.h"
struct FileBackend_struct struct FileBackend_struct
{ {
QofBackend be; QofBackend be;
@ -51,20 +53,9 @@ struct FileBackend_struct
typedef struct FileBackend_struct FileBackend; typedef struct FileBackend_struct FileBackend;
typedef enum
{
GNC_BOOK_NOT_OURS,
GNC_BOOK_BIN_FILE,
GNC_BOOK_XML1_FILE,
GNC_BOOK_XML2_FILE,
GNC_BOOK_XML2_FILE_NO_ENCODING,
QSF_GNC_OBJECT,
QSF_OBJECT,
QSF_MAP,
} QofBookFileType;
QofBackend * libgncmod_backend_file_LTX_gnc_backend_new(void); QofBackend * libgncmod_backend_file_LTX_gnc_backend_new(void);
void gnc_provider_init(void); G_MODULE_EXPORT const gchar *
g_module_check_init(GModule *module);
#endif /* GNC_BACKEND_FILE_H_ */ #endif /* GNC_BACKEND_FILE_H_ */

View File

@ -29,15 +29,14 @@
#include "cashobjects.h" #include "cashobjects.h"
#include "test-stuff.h" #include "test-stuff.h"
#define GNC_LIB_NAME "libgnc-backend-file.la" #define GNC_LIB_NAME "gnc-backend-file"
#define GNC_LIB_INIT "gnc_provider_init"
int main (int argc, char ** argv) int main (int argc, char ** argv)
{ {
qof_init(); qof_init();
cashobjects_register(); cashobjects_register();
do_test( do_test(
qof_load_backend_library ("../", GNC_LIB_NAME, GNC_LIB_INIT), qof_load_backend_library ("../", GNC_LIB_NAME),
" loading gnc-backend-file GModule failed"); " loading gnc-backend-file GModule failed");
print_test_results(); print_test_results();
qof_close(); qof_close();

View File

@ -47,8 +47,7 @@
#include "test-engine-stuff.h" #include "test-engine-stuff.h"
#include "test-file-stuff.h" #include "test-file-stuff.h"
#define GNC_LIB_NAME "libgnc-backend-file.la" #define GNC_LIB_NAME "gnc-backend-file"
#define GNC_LIB_INIT "gnc_provider_init"
static void static void
remove_files_pattern(const char *begining, const char *ending) remove_files_pattern(const char *begining, const char *ending)
@ -112,8 +111,7 @@ main (int argc, char ** argv)
g_type_init(); g_type_init();
qof_init(); qof_init();
cashobjects_register(); cashobjects_register();
do_test( do_test(qof_load_backend_library ("../", GNC_LIB_NAME),
qof_load_backend_library ("../", GNC_LIB_NAME, GNC_LIB_INIT),
" loading gnc-backend-file GModule failed"); " loading gnc-backend-file GModule failed");
if (!location) if (!location)

View File

@ -2,8 +2,17 @@ SUBDIRS = . test
lib_LTLIBRARIES = libgnc-backend-postgres.la lib_LTLIBRARIES = libgnc-backend-postgres.la
libgnc_backend_postgres_la_LDFLAGS = -module AM_CFLAGS = \
-I.. -I../.. \
-I../../engine \
-I${srcdir}/../.. \
-I${top_srcdir}/src/backend \
-I${top_srcdir}/src/engine \
${PGSQL_CFLAGS} \
${QOF_CFLAGS} \
${GLIB_CFLAGS}
libgnc_backend_postgres_la_LDFLAGS = -module
libgnc_backend_postgres_la_LIBADD = ${PGSQL_LIBS} -lpq \ libgnc_backend_postgres_la_LIBADD = ${PGSQL_LIBS} -lpq \
${top_builddir}/src/engine/libgncmod-engine.la \ ${top_builddir}/src/engine/libgncmod-engine.la \
${QOF_LIBS} \ ${QOF_LIBS} \
@ -91,14 +100,6 @@ M4_SRC = \
SUFFIXES = .sql SUFFIXES = .sql
AM_CFLAGS = \
-I.. -I${srcdir}/.. \
-I../.. -I${srcdir}/../.. \
-I../../engine -I${srcdir}/../../engine \
${PGSQL_CFLAGS} \
${QOF_CFLAGS} \
${GLIB_CFLAGS}
$(M4_SRC): table.m4 $(M4_SRC): table.m4
%-autogen.c: %-objects.m4 table.m4 %-autogen.c: %-objects.m4 table.m4

View File

@ -253,7 +253,7 @@ pgend_set_book (PGBackend *be, QofBook *book)
/* This routine finds the commodity by parsing a string /* This routine finds the commodity by parsing a string
* of the form NAMESPACE::MNEMONIC * of the form NAMESPACE::MNEMONIC
*/ */
/* FIXME: replace w/ gnc_commodity_table_lookup_unique */
gnc_commodity * gnc_commodity *
gnc_string_to_commodity (const char *str, QofBook *book) gnc_string_to_commodity (const char *str, QofBook *book)
{ {
@ -264,7 +264,7 @@ gnc_string_to_commodity (const char *str, QofBook *book)
comtab = gnc_book_get_commodity_table (book); comtab = gnc_book_get_commodity_table (book);
space = g_strdup(str); space = g_strdup(str);
name = strchr (space, ':'); name = strchr (space, ':'); /* BUG */
if (!name) if (!name)
{ {
@ -2542,7 +2542,8 @@ pg_provider_free (QofBackendProvider *prov)
g_free (prov); g_free (prov);
} }
void pgend_provider_init(void) G_MODULE_EXPORT const gchar *
g_module_check_init(GModule *module)
{ {
QofBackendProvider *prov; QofBackendProvider *prov;
@ -2554,6 +2555,7 @@ void pgend_provider_init(void)
prov->provider_free = pg_provider_free; prov->provider_free = pg_provider_free;
prov->check_data_type = NULL; prov->check_data_type = NULL;
qof_backend_register_provider (prov); qof_backend_register_provider (prov);
return NULL;
} }
/* ======================== END OF FILE ======================== */ /* ======================== END OF FILE ======================== */

View File

@ -34,6 +34,7 @@
#ifndef POSTGRES_BACKEND_H #ifndef POSTGRES_BACKEND_H
#define POSTGRES_BACKEND_H #define POSTGRES_BACKEND_H
#include <gmodule.h>
#include <libpq-fe.h> #include <libpq-fe.h>
#include "Group.h" #include "Group.h"
@ -57,6 +58,7 @@ typedef enum {
#define MAX_VERSION_AGE 10 #define MAX_VERSION_AGE 10
#include "qofbackend-p.h"
struct _pgend { struct _pgend {
QofBackend be; QofBackend be;
@ -132,6 +134,7 @@ QofBook * pgendGetBook(PGBackend *pbe);
void pgendDisable (PGBackend *be); void pgendDisable (PGBackend *be);
void pgendEnable (PGBackend *be); void pgendEnable (PGBackend *be);
void pgend_provider_init(void); G_MODULE_EXPORT const gchar *
g_module_check_init(GModule *module);
#endif /* POSTGRES_BACKEND_H */ #endif /* POSTGRES_BACKEND_H */

View File

@ -32,8 +32,7 @@
#include "test-stuff.h" #include "test-stuff.h"
#include "test-engine-stuff.h" #include "test-engine-stuff.h"
#define PG_LIB_NAME "libgnc-backend-postgres.la" #define PG_LIB_NAME "gnc-backend-postgres"
#define PG_LIB_INIT "pgend_provider_init"
static QofLogModule log_module = GNC_MOD_TEST; static QofLogModule log_module = GNC_MOD_TEST;
@ -1095,8 +1094,7 @@ main (int argc, char **argv)
DbInfo *dbinfo; DbInfo *dbinfo;
qof_init(); qof_init();
do_test( do_test(qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME),
qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME, PG_LIB_INIT),
" loading gnc-backend-postgres GModule failed"); " loading gnc-backend-postgres GModule failed");
dbinfo = g_new0(DbInfo, 1); dbinfo = g_new0(DbInfo, 1);

View File

@ -29,8 +29,7 @@
#include "cashobjects.h" #include "cashobjects.h"
#include "test-stuff.h" #include "test-stuff.h"
#define PG_LIB_NAME "libgnc-backend-postgres.la" #define PG_LIB_NAME "gnc-backend-postgres"
#define PG_LIB_INIT "pgend_provider_init"
int main (int argc, char ** argv) int main (int argc, char ** argv)
{ {
@ -38,8 +37,7 @@ int main (int argc, char ** argv)
cashobjects_register(); cashobjects_register();
/* the test needs to run locally in case make install /* the test needs to run locally in case make install
* has not yet been run. Use GNC_LIBDIR usually. */ * has not yet been run. Use GNC_LIBDIR usually. */
do_test( do_test(qof_load_backend_library ("../", PG_LIB_NAME),
qof_load_backend_library ("../", PG_LIB_NAME, PG_LIB_INIT),
" loading gnc-backend-postgres GModule failed"); " loading gnc-backend-postgres GModule failed");
print_test_results(); print_test_results();
qof_close(); qof_close();

View File

@ -35,7 +35,6 @@
#include "Transaction.h" #include "Transaction.h"
#define PG_LIB_NAME "libgnc-backend-postgres.la" #define PG_LIB_NAME "libgnc-backend-postgres.la"
#define PG_LIB_INIT "pgend_provider_init"
static void static void
run_test (void) run_test (void)
@ -52,8 +51,7 @@ run_test (void)
Timespec tsfirst, tslast, tsmiddle; Timespec tsfirst, tslast, tsmiddle;
char * test_url; char * test_url;
do_test( qof_load_backend_library (QOF_LIB_DIR, do_test(qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME),
PG_LIB_NAME, PG_LIB_INIT),
" loading gnc-backend-postgres GModule failed"); " loading gnc-backend-postgres GModule failed");
session = get_random_session (); session = get_random_session ();

View File

@ -348,7 +348,7 @@ void
xaccAccountCommitEdit (Account *acc) xaccAccountCommitEdit (Account *acc)
{ {
g_return_if_fail(acc); g_return_if_fail(acc);
if(!qof_commit_edit(&acc->inst)) { return;} if (!qof_commit_edit(&acc->inst)) return;
/* If marked for deletion, get rid of subaccounts first, /* If marked for deletion, get rid of subaccounts first,
* and then the splits ... */ * and then the splits ... */

View File

@ -209,7 +209,7 @@ BUILT_SOURCES = \
CLEANFILES = gnucash g-wrapped .scm-links gncla-dir.h CLEANFILES = gnucash g-wrapped .scm-links gncla-dir.h
DISTCLEANFILES = ${SCM_FILE_LINKS} gw-engine.html gw-kvp.html DISTCLEANFILES = ${SCM_FILE_LINKS} gw-engine.html gw-kvp.html
gncla-dir.h: gncla-dir.h.in gncla-dir.h: gncla-dir.h.in ${top_builddir}/config.status
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's:@-libdir-@:${libdir}:g' -e 's:@-libdir-@:${libdir}:g'

View File

@ -801,23 +801,27 @@ add_closing_balances (AccountGroup *closed_grp,
static void static void
period_begin_edit (QofBook *src_book, QofBook *dest_book) period_begin_edit (QofBook *src_book, QofBook *dest_book)
{ {
/*
QofBackend *be; QofBackend *be;
be = qof_book_get_backend(src_book); be = qof_book_get_backend(src_book);
if (be && be->begin) if (be && be->begin)
{ {
// (*be->begin)(be, GNC_ID_PERIOD, dest_book); // (*be->begin)(be, GNC_ID_PERIOD, dest_book);
} }
*/
} }
static void static void
period_commit_edit (QofBook *src_book, QofBook *dest_book) period_commit_edit (QofBook *src_book, QofBook *dest_book)
{ {
/*
QofBackend *be; QofBackend *be;
be = qof_book_get_backend(src_book); be = qof_book_get_backend(src_book);
if (be && be->commit) if (be && be->commit)
{ {
// (*be->commit)(be, GNC_ID_PERIOD, dest_book); // (*be->commit)(be, GNC_ID_PERIOD, dest_book);
} }
*/
} }
/* ================================================================ */ /* ================================================================ */

View File

@ -48,6 +48,7 @@
#include "gnc-lot.h" #include "gnc-lot.h"
#include "gnc-event.h" #include "gnc-event.h"
#include "qofbackend-p.h"
/* Notes about xaccTransBeginEdit(), xaccTransCommitEdit(), and /* Notes about xaccTransBeginEdit(), xaccTransCommitEdit(), and
* xaccTransRollback(): * xaccTransRollback():

View File

@ -34,7 +34,7 @@
handling and identification system (GUID's, Entities, etc.) handling and identification system (GUID's, Entities, etc.)
that the other parts of GnuCash use. The API really should be that the other parts of GnuCash use. The API really should be
ported over. This would allow us to get rid of the ported over. This would allow us to get rid of the
commodity table reoutines defined below. commodity table routines defined below.
@{ */ @{ */
/** @file gnc-commodity.h /** @file gnc-commodity.h

View File

@ -1,5 +1,5 @@
/******************************************************************** /********************************************************************
* gnc-engine.c -- top-level initialization for Gnucash Engine * * gnc-engine.c -- top-level initialization for GnuCash Engine *
* Copyright 2000 Bill Gribble <grib@billgribble.com> * * Copyright 2000 Bill Gribble <grib@billgribble.com> *
* * * *
* This program is free software; you can redistribute it and/or * * This program is free software; you can redistribute it and/or *
@ -39,15 +39,14 @@
#include "gnc-pricedb-p.h" #include "gnc-pricedb-p.h"
/** gnc file backend library name */ /** gnc file backend library name */
#define GNC_LIB_NAME "libgnc-backend-file" #define GNC_LIB_NAME "gnc-backend-file"
/** init_fcn for gnc file backend library. */
#define GNC_LIB_INIT "gnc_provider_init"
/* gnc-backend-file location */ /* gnc-backend-file location */
#include "gncla-dir.h" #include "gncla-dir.h"
static GList * engine_init_hooks = NULL; static GList * engine_init_hooks = NULL;
static int engine_is_initialized = 0; static int engine_is_initialized = 0;
static QofLogModule log_module = GNC_MOD_ENGINE; //static QofLogModule log_module = GNC_MOD_ENGINE;
/* GnuCash version functions */ /* GnuCash version functions */
unsigned int unsigned int
@ -76,6 +75,10 @@ gnucash_micro_version (void)
void void
gnc_engine_init(int argc, char ** argv) gnc_engine_init(int argc, char ** argv)
{ {
static gchar *names[] = {
GNC_LIB_NAME, QSF_BACKEND_LIB, "gnc-backend-postgres",
NULL};
gchar **np;
gnc_engine_init_hook_t hook; gnc_engine_init_hook_t hook;
GList * cur; GList * cur;
@ -83,8 +86,7 @@ gnc_engine_init(int argc, char ** argv)
/* initialize logging to our file. */ /* initialize logging to our file. */
qof_log_init_filename("/tmp/gnucash.trace"); qof_log_init_filename("/tmp/gnucash.trace");
/* Only set the core log_modules here /* Only set the core log_modules here the rest can be set locally. */
the rest can be set locally. */
qof_log_set_level(GNC_MOD_ENGINE, QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_ENGINE, QOF_LOG_WARNING);
qof_log_set_level(GNC_MOD_IO, QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_IO, QOF_LOG_WARNING);
qof_log_set_level(GNC_MOD_GUI, QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_GUI, QOF_LOG_WARNING);
@ -96,12 +98,11 @@ gnc_engine_init(int argc, char ** argv)
/* Now register our core types */ /* Now register our core types */
cashobjects_register(); cashobjects_register();
g_return_if_fail((qof_load_backend_library for (np = names; *np; np++) {
(QOF_LIB_DIR, QSF_BACKEND_LIB, QSF_MODULE_INIT))); if (qof_load_backend_library(GNC_LIBDIR, *np))
g_return_if_fail((qof_load_backend_library
(GNC_LIBDIR, GNC_LIB_NAME, GNC_LIB_INIT)));
engine_is_initialized = 1; engine_is_initialized = 1;
}
/* call any engine hooks */ /* call any engine hooks */
for (cur = engine_init_hooks; cur; cur = cur->next) for (cur = engine_init_hooks; cur; cur = cur->next)
{ {
@ -138,9 +139,6 @@ gnc_engine_add_init_hook(gnc_engine_init_hook_t h) {
gboolean gboolean
gnc_engine_is_initialized (void) gnc_engine_is_initialized (void)
{ {
/* if (engine_is_initialized == 1) return TRUE;
return FALSE;
*/
return (engine_is_initialized == 1) ? TRUE : FALSE; return (engine_is_initialized == 1) ? TRUE : FALSE;
} }
@ -176,46 +174,3 @@ void gnc_log_default(void)
qof_log_set_level(GNC_MOD_BUDGET, QOF_LOG_WARNING); qof_log_set_level(GNC_MOD_BUDGET, QOF_LOG_WARNING);
} }
/* ====================================================================== */
/* XXX This exports the list of accounts to a file. It does not export
* any transactions. Its a place-holder until full book-closing is implemented.
*/
gboolean
qof_session_export (QofSession *tmp_session,
QofSession *real_session,
QofPercentageFunc percentage_func)
{
QofBook *book, *book2;
QofBackend *be;
int err;
if ((!tmp_session) || (!real_session)) return FALSE;
book = qof_session_get_book (real_session);
ENTER ("tmp_session=%p real_session=%p book=%p book_id=%s",
tmp_session, real_session, book,
qof_session_get_url(tmp_session)
? qof_session_get_url(tmp_session) : "(null)");
/* There must be a backend or else. (It should always be the file
* backend too.)
*/
book2 = qof_session_get_book(tmp_session);
be = qof_book_get_backend(book2);
if (!be)
return FALSE;
be->percentage = percentage_func;
if (be->export)
{
(be->export)(be, book);
err = qof_backend_get_error(be);
if (ERR_BACKEND_NO_ERR != err) { return FALSE; }
}
return TRUE;
}

View File

@ -250,11 +250,5 @@ void gnc_log_default(void);
* it will be called during the evaluation of gnc_engine_init */ * it will be called during the evaluation of gnc_engine_init */
void gnc_engine_add_init_hook(gnc_engine_init_hook_t hook); void gnc_engine_add_init_hook(gnc_engine_init_hook_t hook);
gboolean
qof_session_export (QofSession *tmp_session,
QofSession *real_session,
QofPercentageFunc percentage_func);
#endif #endif
/** @} */ /** @} */

View File

@ -27,6 +27,7 @@
#include <glib.h> #include <glib.h>
#include <string.h> #include <string.h>
#include "gnc-pricedb-p.h" #include "gnc-pricedb-p.h"
#include "qofbackend-p.h"
/* This static indicates the debugging module that this .o belongs to. */ /* This static indicates the debugging module that this .o belongs to. */
static QofLogModule log_module = GNC_MOD_PRICE; static QofLogModule log_module = GNC_MOD_PRICE;

View File

@ -69,13 +69,6 @@ gnc_session_scm_save (QofSession *session)
qof_session_save (session, gnc_session_scm_gui_cb_helper); qof_session_save (session, gnc_session_scm_gui_cb_helper);
} }
gboolean
gnc_session_scm_export (QofSession *tmp_session, QofSession *real_session)
{
return qof_session_export(tmp_session, real_session,
gnc_session_scm_gui_cb_helper);
}
/* /*
* Set the callback that will be used for any calls to the session * Set the callback that will be used for any calls to the session
* load/save functions from the scheme side of the code. * load/save functions from the scheme side of the code.

View File

@ -43,8 +43,6 @@
#include "gnc-engine.h" #include "gnc-engine.h"
void gnc_session_scm_load (QofSession *session); void gnc_session_scm_load (QofSession *session);
gboolean gnc_session_scm_export (QofSession *tmp_session,
QofSession *real_session);
void gnc_session_scm_save (QofSession *session); void gnc_session_scm_save (QofSession *session);
void gnc_session_scm_set_callback (SCM percentage_cb); void gnc_session_scm_set_callback (SCM percentage_cb);

View File

@ -1441,14 +1441,6 @@ prior to time t.")
'((<gnc:Session*> session)) '((<gnc:Session*> session))
"Save the data in the session.") "Save the data in the session.")
(gw:wrap-function
ws
'gnc:session-export
'<gw:bool>
"gnc_session_scm_export"
'((<gnc:Session*> tmp_session) (<gnc:Session*> real_session))
"Export the accounts in the session.")
(gw:wrap-function (gw:wrap-function
ws ws
'gnc:session-set-callback 'gnc:session-set-callback

View File

@ -960,7 +960,7 @@ gnc_file_save (void)
/* If we don't have a filename/path to save to get one. */ /* If we don't have a filename/path to save to get one. */
session = gnc_get_current_session (); session = gnc_get_current_session ();
if (!qof_session_get_file_path (session)) if (!qof_session_get_url(session))
{ {
gnc_file_save_as (); gnc_file_save_as ();
return; return;
@ -977,10 +977,10 @@ gnc_file_save (void)
/* Make sure everything's OK - disk could be full, file could have /* Make sure everything's OK - disk could be full, file could have
become read-only etc. */ become read-only etc. */
newfile = qof_session_get_file_path (session);
io_err = qof_session_get_error (session); io_err = qof_session_get_error (session);
if (ERR_BACKEND_NO_ERR != io_err) if (ERR_BACKEND_NO_ERR != io_err)
{ {
newfile = qof_session_get_url(session);
show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE); show_session_error (io_err, newfile, GNC_FILE_DIALOG_SAVE);
if (been_here_before) return; if (been_here_before) return;
@ -1035,7 +1035,7 @@ gnc_file_save_as (void)
} }
session = gnc_get_current_session (); session = gnc_get_current_session ();
oldfile = qof_session_get_file_path (session); oldfile = qof_session_get_url(session);
if (oldfile && (strcmp(oldfile, newfile) == 0)) if (oldfile && (strcmp(oldfile, newfile) == 0))
{ {
g_free (newfile); g_free (newfile);
@ -1045,7 +1045,7 @@ gnc_file_save_as (void)
/* -- this session code is NOT identical in FileOpen and FileSaveAs -- */ /* -- this session code is NOT identical in FileOpen and FileSaveAs -- */
xaccLogSetBaseName(newfile); xaccLogSetBaseName(newfile); //FIXME: This is premature.
save_in_progress++; save_in_progress++;
new_session = qof_session_new (); new_session = qof_session_new ();
qof_session_begin (new_session, newfile, FALSE, FALSE); qof_session_begin (new_session, newfile, FALSE, FALSE);
@ -1124,7 +1124,6 @@ gnc_file_save_as (void)
save_in_progress--; save_in_progress--;
g_free (newfile); g_free (newfile);
gnc_hook_run(HOOK_BOOK_SAVED, new_session);
LEAVE (" "); LEAVE (" ");
} }
@ -1136,7 +1135,7 @@ gnc_file_quit (void)
gnc_set_busy_cursor (NULL, TRUE); gnc_set_busy_cursor (NULL, TRUE);
session = gnc_get_current_session (); session = gnc_get_current_session ();
/* disable events; otherwise the mass deletetion of accounts and /* disable events; otherwise the mass deletion of accounts and
* transactions during shutdown would cause massive redraws */ * transactions during shutdown would cause massive redraws */
qof_event_suspend (); qof_event_suspend ();

View File

@ -306,7 +306,7 @@ gtkhtml_pre_3_10_1_bug_workaround(GtkHTMLEmbedded *eb)
* legend_urls_[123]: ? * legend_urls_[123]: ?
*/ */
static gboolean static gboolean
handle_piechart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d) handle_piechart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer unused)
{ {
GogObject *graph, *chart; GogObject *graph, *chart;
GogPlot *plot; GogPlot *plot;
@ -375,7 +375,7 @@ handle_piechart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d)
* stacked:boolean * stacked:boolean
**/ **/
static gboolean static gboolean
handle_barchart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d) handle_barchart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer unused)
{ {
GogObject *graph, *chart; GogObject *graph, *chart;
GogPlot *plot; GogPlot *plot;
@ -499,7 +499,7 @@ handle_barchart(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d)
} }
static gboolean static gboolean
handle_scatter(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d) handle_scatter(gnc_html * html, GtkHTMLEmbedded * eb, gpointer unused)
{ {
GogObject *graph, *chart; GogObject *graph, *chart;
GogPlot *plot; GogPlot *plot;
@ -550,7 +550,7 @@ handle_scatter(gnc_html * html, GtkHTMLEmbedded * eb, gpointer d)
} }
static void static void
draw_print_cb (GtkHTMLEmbedded *eb, GnomePrintContext *context, gpointer d) draw_print_cb(GtkHTMLEmbedded *eb, GnomePrintContext *context, gpointer unused)
{ {
GogGraph *graph = GOG_GRAPH (g_object_get_data (G_OBJECT (eb), "graph")); GogGraph *graph = GOG_GRAPH (g_object_get_data (G_OBJECT (eb), "graph"));

View File

@ -906,7 +906,7 @@ gnc_main_window_prompt_for_save (GtkWidget *window)
session = gnc_get_current_session(); session = gnc_get_current_session();
book = qof_session_get_book(session); book = qof_session_get_book(session);
filename = qof_session_get_file_path(session); filename = qof_session_get_url(session);
if (filename == NULL) if (filename == NULL)
filename = _("<unknown>"); filename = _("<unknown>");
if ((tmp = strrchr(filename, '/')) != NULL) if ((tmp = strrchr(filename, '/')) != NULL)