r21909 - gnucash/branches/2.4/src - Update xml file backend to recognize a newer version file on load attempt, not load, and alert user of need to upgrade Gnucash.
J. Alex Aycinena
alex.aycinena at code.gnucash.org
Sun Jan 29 00:56:54 EST 2012
Author: alex.aycinena
Date: 2012-01-29 00:56:54 -0500 (Sun, 29 Jan 2012)
New Revision: 21909
Trac: http://svn.gnucash.org/trac/changeset/21909
Modified:
gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.c
gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.h
gnucash/branches/2.4/src/backend/xml/io-example-account.c
gnucash/branches/2.4/src/backend/xml/io-example-account.h
gnucash/branches/2.4/src/backend/xml/io-gncxml-v1.c
gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.c
gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.h
gnucash/branches/2.4/src/backend/xml/sixtp.c
gnucash/branches/2.4/src/backend/xml/sixtp.h
gnucash/branches/2.4/src/backend/xml/test/test-date-converting.c
gnucash/branches/2.4/src/backend/xml/test/test-dom-converters1.c
gnucash/branches/2.4/src/backend/xml/test/test-kvp-frames.c
gnucash/branches/2.4/src/backend/xml/test/test-string-converters.c
gnucash/branches/2.4/src/backend/xml/test/test-xml-account.c
gnucash/branches/2.4/src/backend/xml/test/test-xml-commodity.c
gnucash/branches/2.4/src/backend/xml/test/test-xml-pricedb.c
gnucash/branches/2.4/src/gnome-utils/gnc-file.c
gnucash/branches/2.4/src/libqof/qof/qofbackend.h
gnucash/branches/2.4/src/libqof/qof/qofsession.c
Log:
Update xml file backend to recognize a newer version file on load attempt, not load, and alert user of need to upgrade Gnucash.
Modified: gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -99,15 +99,6 @@
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,
-} QofBookFileType;
-
static gboolean save_may_clobber_data (QofBackend *bend);
/* ================================================================= */
@@ -520,7 +511,10 @@
gnc_xml_be_determine_file_type(const char *path)
{
gboolean with_encoding;
- if (gnc_is_xml_data_file_v2(path, &with_encoding))
+ QofBookFileType v2type;
+
+ v2type = gnc_is_xml_data_file_v2(path, &with_encoding);
+ if (v2type == GNC_BOOK_XML2_FILE)
{
if (with_encoding)
{
@@ -531,8 +525,12 @@
return GNC_BOOK_XML2_FILE_NO_ENCODING;
}
}
- else if (gnc_is_xml_data_file(path))
+ else if (v2type == GNC_BOOK_POST_XML2_0_0_FILE)
{
+ return GNC_BOOK_POST_XML2_0_0_FILE;
+ }
+ else if (v2type == GNC_BOOK_XML1_FILE)
+ {
return GNC_BOOK_XML1_FILE;
}
return GNC_BOOK_NOT_OURS;
@@ -545,6 +543,7 @@
int rc;
FILE *t;
gchar *filename;
+ QofBookFileType xml_type;
gboolean result;
if (!uri)
@@ -578,16 +577,14 @@
result = TRUE;
goto det_exit;
}
- if (gnc_is_xml_data_file_v2(filename, NULL))
+ xml_type = gnc_is_xml_data_file_v2(filename, NULL);
+ if ((xml_type == GNC_BOOK_XML2_FILE) ||
+ (xml_type == GNC_BOOK_XML1_FILE) ||
+ (xml_type == GNC_BOOK_POST_XML2_0_0_FILE))
{
result = TRUE;
goto det_exit;
}
- else if (gnc_is_xml_data_file(filename))
- {
- result = TRUE;
- goto det_exit;
- }
PINFO (" %s is not a gnc XML file", filename);
result = FALSE;
@@ -1063,7 +1060,7 @@
switch (gnc_xml_be_determine_file_type(be->fullpath))
{
case GNC_BOOK_XML2_FILE:
- rc = qof_session_load_from_xml_file_v2 (be, book);
+ rc = qof_session_load_from_xml_file_v2 (be, book, GNC_BOOK_XML2_FILE);
if (FALSE == rc)
{
PWARN( "Syntax error in Xml File %s", be->fullpath );
@@ -1083,6 +1080,10 @@
error = ERR_FILEIO_PARSE_ERROR;
}
break;
+ case GNC_BOOK_POST_XML2_0_0_FILE:
+ error = ERR_BACKEND_TOO_NEW;
+ PWARN( "Version of Xml file %s is newer than what we can read", be->fullpath );
+ break;
default:
/* If file type wasn't known, check errno again to give the
user some more useful feedback for some particular error
Modified: gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.h
===================================================================
--- gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.h 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/gnc-backend-xml.h 2012-01-29 05:56:54 UTC (rev 21909)
@@ -43,6 +43,16 @@
XML_RETAIN_ALL
} XMLFileRetentionType;
+typedef enum
+{
+ GNC_BOOK_NOT_OURS,
+ GNC_BOOK_BIN_FILE,
+ GNC_BOOK_XML1_FILE,
+ GNC_BOOK_XML2_FILE,
+ GNC_BOOK_XML2_FILE_NO_ENCODING,
+ GNC_BOOK_POST_XML2_0_0_FILE
+} QofBookFileType;
+
struct FileBackend_struct
{
QofBackend be;
Modified: gnucash/branches/2.4/src/backend/xml/io-example-account.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/io-example-account.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/io-example-account.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -495,8 +495,9 @@
/***********************************************************************/
+/*
gboolean
gnc_is_example_account_xml(const gchar *name)
{
return gnc_is_our_xml_file(name, GNC_ACCOUNT_STRING, NULL);
-}
+} */
Modified: gnucash/branches/2.4/src/backend/xml/io-example-account.h
===================================================================
--- gnucash/branches/2.4/src/backend/xml/io-example-account.h 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/io-example-account.h 2012-01-29 05:56:54 UTC (rev 21909)
@@ -53,6 +53,6 @@
void gnc_free_example_account_list(GSList *list);
GSList* gnc_load_example_account_list(const char *dirname);
-gboolean gnc_is_example_account_xml(const gchar *name);
+/* gboolean gnc_is_example_account_xml(const gchar *name); */
#endif /* IO_EXAMPLE_ACCOUNT_H */
Modified: gnucash/branches/2.4/src/backend/xml/io-gncxml-v1.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/io-gncxml-v1.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/io-gncxml-v1.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -412,7 +412,9 @@
gboolean
gnc_is_xml_data_file(const gchar *filename)
{
- return gnc_is_our_xml_file(filename, "gnc", NULL);
+ if ((gnc_is_our_xml_file(filename, NULL)) == GNC_BOOK_XML1_FILE)
+ return TRUE;
+ return FALSE;
}
/* ================================================================== */
Modified: gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -95,6 +95,8 @@
};
#define GNC_V2_STRING "gnc-v2"
+/* non-static because they are used in sixtp.c */
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
extern const gchar *gnc_v2_book_version_string; /* see gnc-book-xml-v2 */
void
@@ -679,7 +681,8 @@
static gboolean
qof_session_load_from_xml_file_v2_full(
FileBackend *fbe, QofBook *book,
- sixtp_push_handler push_handler, gpointer push_user_data)
+ sixtp_push_handler push_handler, gpointer push_user_data,
+ QofBookFileType type)
{
Account *root;
QofBackend *be = &fbe->be;
@@ -689,6 +692,7 @@
sixtp *book_parser;
struct file_backend be_data;
gboolean retval;
+ char *v2type;
gd = gnc_sixtp_gdv2_new(book, FALSE, file_rw_feedback, be->percentage);
@@ -696,14 +700,20 @@
main_parser = sixtp_new();
book_parser = sixtp_new();
+ if (type == GNC_BOOK_XML2_FILE)
+ v2type = g_strdup(GNC_V2_STRING);
+
if (!sixtp_add_some_sub_parsers(
top_parser, TRUE,
- GNC_V2_STRING, main_parser,
+ v2type, main_parser,
NULL, NULL))
{
+ g_free(v2type);
goto bail;
}
+ g_free(v2type);
+
if (!sixtp_add_some_sub_parsers(
main_parser, TRUE,
COUNT_DATA_TAG, gnc_counter_sixtp_parser_create(),
@@ -819,9 +829,10 @@
}
gboolean
-qof_session_load_from_xml_file_v2(FileBackend *fbe, QofBook *book)
+qof_session_load_from_xml_file_v2(FileBackend *fbe, QofBook *book,
+ QofBookFileType type)
{
- return qof_session_load_from_xml_file_v2_full(fbe, book, NULL, NULL);
+ return qof_session_load_from_xml_file_v2_full(fbe, book, NULL, NULL, type);
}
/***********************************************************************/
@@ -1620,12 +1631,9 @@
return FALSE;
}
-gboolean
+QofBookFileType
gnc_is_xml_data_file_v2(const gchar *name, gboolean *with_encoding)
{
- if (gnc_is_our_xml_file(name, GNC_V2_STRING, with_encoding))
- return TRUE;
-
if (is_gzipped_file(name))
{
gzFile *file;
@@ -1647,19 +1655,18 @@
file = gzopen(name, "r");
#endif
if (file == NULL)
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
num_read = gzread(file, first_chunk, sizeof(first_chunk) - 1);
gzclose(file);
if (num_read < 1)
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
- return gnc_is_our_first_xml_chunk(first_chunk, GNC_V2_STRING,
- with_encoding);
+ return gnc_is_our_first_xml_chunk(first_chunk, with_encoding);
}
- return FALSE;
+ return (gnc_is_our_xml_file(name, with_encoding));
}
@@ -2095,7 +2102,7 @@
success = qof_session_load_from_xml_file_v2_full(
fbe, book, (sixtp_push_handler) parse_with_subst_push_handler,
- push_data);
+ push_data, GNC_BOOK_XML2_FILE);
if (success)
qof_book_kvp_changed(book);
Modified: gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.h
===================================================================
--- gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.h 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/io-gncxml-v2.h 2012-01-29 05:56:54 UTC (rev 21909)
@@ -128,7 +128,7 @@
void run_callback(sixtp_gdv2 *data, const char *type);
/** read in an account group from a file */
-gboolean qof_session_load_from_xml_file_v2(FileBackend *, QofBook *);
+gboolean qof_session_load_from_xml_file_v2(FileBackend *, QofBook *, QofBookFileType);
/* write all book info to a file */
gboolean gnc_book_write_to_xml_filehandle_v2(QofBook *book, FILE *fh);
@@ -142,7 +142,7 @@
/** The is_gncxml_file() routine checks to see if the first few
* chars of the file look like gnc-xml data.
*/
-gboolean gnc_is_xml_data_file_v2(const gchar *name, gboolean *with_encoding);
+QofBookFileType gnc_is_xml_data_file_v2(const gchar *name, gboolean *with_encoding);
/** Write a name-space declaration for the provided namespace data type
* within the GNC XML namespace at http://www.gnucash.org/XML.
Modified: gnucash/branches/2.4/src/backend/xml/sixtp.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/sixtp.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/sixtp.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -41,6 +41,8 @@
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "gnc.backend.file.sixtp"
+extern const gchar *gnc_v2_xml_version_string; /* see io-gncxml-v2.c */
+
/************************************************************************/
gboolean
is_child_result_from_node_named(sixtp_child_result *cr, const char *tag)
@@ -860,21 +862,19 @@
}
}
-gboolean
-gnc_is_our_xml_file(const char *filename, const char *first_tag,
- gboolean *with_encoding)
+QofBookFileType
+gnc_is_our_xml_file(const char *filename, gboolean *with_encoding)
{
FILE *f = NULL;
char first_chunk[256];
ssize_t num_read;
- g_return_val_if_fail(filename, FALSE);
- g_return_val_if_fail(first_tag, FALSE);
+ g_return_val_if_fail(filename, GNC_BOOK_NOT_OURS);
f = g_fopen(filename, "r");
if (f == NULL)
{
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
num_read = fread(first_chunk, sizeof(char), sizeof(first_chunk) - 1, f);
@@ -882,17 +882,16 @@
if (num_read == 0)
{
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
first_chunk[num_read] = '\0';
- return gnc_is_our_first_xml_chunk(first_chunk, first_tag, with_encoding);
+ return gnc_is_our_first_xml_chunk(first_chunk, with_encoding);
}
-gboolean
-gnc_is_our_first_xml_chunk(char *chunk, const char *first_tag,
- gboolean *with_encoding)
+QofBookFileType
+gnc_is_our_first_xml_chunk(char *chunk, gboolean *with_encoding)
{
char *cursor = NULL;
@@ -905,51 +904,58 @@
if (!eat_whitespace(&cursor))
{
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
if (strncmp(cursor, "<?xml", 5) == 0)
{
char *tag_compare;
- gboolean result;
if (!search_for('>', &cursor))
{
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
if (!eat_whitespace(&cursor))
{
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
- tag_compare = g_strdup_printf("<%s", first_tag);
+ tag_compare = g_strdup_printf("<%s\n", gnc_v2_xml_version_string);
- result = (strncmp(cursor, tag_compare, strlen(tag_compare)) == 0);
- g_free (tag_compare);
-
- if (result && with_encoding)
+ if (strncmp(cursor, tag_compare, strlen(tag_compare)) == 0)
{
- *cursor = '\0';
- cursor = chunk;
- while (search_for('e', &cursor))
+ if (with_encoding)
{
- if (strncmp(cursor, "ncoding=", 8) == 0)
+ *cursor = '\0';
+ cursor = chunk;
+ while (search_for('e', &cursor))
{
- *with_encoding = TRUE;
- break;
+ if (strncmp(cursor, "ncoding=", 8) == 0)
+ {
+ *with_encoding = TRUE;
+ break;
+ }
}
}
+ g_free (tag_compare);
+ return GNC_BOOK_XML2_FILE;
}
- return result;
+ g_free (tag_compare);
+
+ if (strncmp(cursor, "<gnc>\n", strlen("<gnc>\n")) == 0)
+ return GNC_BOOK_XML1_FILE;
+
+ /* If it doesn't match any of the above but has '<gnc-v...', it must */
+ /* be a later version */
+ if (strncmp(cursor, "<gnc-v", strlen("<gnc-v")) == 0)
+ return GNC_BOOK_POST_XML2_0_0_FILE;
+
+ return GNC_BOOK_NOT_OURS;
}
- else
- {
- return FALSE;
- }
- return FALSE;
+ return GNC_BOOK_NOT_OURS;
}
/************************* END OF FILE *********************************/
Modified: gnucash/branches/2.4/src/backend/xml/sixtp.h
===================================================================
--- gnucash/branches/2.4/src/backend/xml/sixtp.h 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/sixtp.h 2012-01-29 05:56:54 UTC (rev 21909)
@@ -31,6 +31,7 @@
#include "gnc-xml-helper.h"
#include "gnc-engine.h"
+#include "gnc-backend-xml.h"
typedef struct _sixtp_child_result sixtp_child_result;
@@ -208,11 +209,10 @@
gboolean sixtp_add_sub_parser(sixtp *parser, const gchar* tag,
sixtp *sub_parser);
-gboolean gnc_is_our_xml_file(const char *filename, const char *first_tag,
+QofBookFileType gnc_is_our_xml_file(const char *filename,
gboolean *with_encoding);
-gboolean gnc_is_our_first_xml_chunk(char *chunk, const char *first_tag,
- gboolean *with_encoding);
+QofBookFileType gnc_is_our_first_xml_chunk(char *chunk, gboolean *with_encoding);
#endif /* _SIXTP_H_ */
Modified: gnucash/branches/2.4/src/backend/xml/test/test-date-converting.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-date-converting.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-date-converting.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -10,6 +10,9 @@
#include "sixtp-utils.h"
#include "sixtp-dom-generators.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
int
main(int argc, char **argv)
{
Modified: gnucash/branches/2.4/src/backend/xml/test/test-dom-converters1.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-dom-converters1.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-dom-converters1.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -43,6 +43,9 @@
#include "gnc-commodity.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
static void
test_dom_tree_to_commodity_ref(void)
{
Modified: gnucash/branches/2.4/src/backend/xml/test/test-kvp-frames.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-kvp-frames.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-kvp-frames.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -11,6 +11,8 @@
#include "sixtp-dom-generators.h"
#include "sixtp-dom-parsers.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
static void
test_kvp_get_slot(int run,
Modified: gnucash/branches/2.4/src/backend/xml/test/test-string-converters.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-string-converters.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-string-converters.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -11,6 +11,9 @@
#include "test-engine-stuff.h"
#include "test-file-stuff.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
static void
test_binary()
{
Modified: gnucash/branches/2.4/src/backend/xml/test/test-xml-account.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-xml-account.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-xml-account.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -43,6 +43,9 @@
#include "Account.h"
#include "Scrub.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
static QofBook *sixbook;
static gchar*
Modified: gnucash/branches/2.4/src/backend/xml/test/test-xml-commodity.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-xml-commodity.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-xml-commodity.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -24,6 +24,9 @@
#include "Account.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
static QofBook *book;
static gchar*
Modified: gnucash/branches/2.4/src/backend/xml/test/test-xml-pricedb.c
===================================================================
--- gnucash/branches/2.4/src/backend/xml/test/test-xml-pricedb.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/backend/xml/test/test-xml-pricedb.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -42,6 +42,9 @@
#include "test-engine-stuff.h"
#include "test-file-stuff.h"
+#define GNC_V2_STRING "gnc-v2"
+const gchar *gnc_v2_xml_version_string = GNC_V2_STRING;
+
static QofSession *session;
struct pricedb_data_struct
Modified: gnucash/branches/2.4/src/gnome-utils/gnc-file.c
===================================================================
--- gnucash/branches/2.4/src/gnome-utils/gnc-file.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/gnome-utils/gnc-file.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -421,7 +421,8 @@
case ERR_SQL_DB_TOO_NEW:
fmt = _("This database is from a newer version of GnuCash. "
"This version can read it, but cannot safely save to it. "
- "It will be marked read-only until you do File>Save As.");
+ "It will be marked read-only until you do File>Save As, "
+ "but data may be lost in writing to the old version.");
gnc_warning_dialog (parent, "%s", fmt);
uh_oh = TRUE;
break;
@@ -458,6 +459,16 @@
gnc_error_dialog (parent, "%s", fmt);
break;
+ case ERR_FILEIO_FILE_UPGRADE:
+ fmt = _("This file is from an older version of GnuCash and will be "
+ "upgraded when saved by this version. You will not be able "
+ "to read the saved file from the older version of Gnucash "
+ "(it will report an \"error parsing the file\"). If you wish "
+ "to preserve the old version, exit without saving.");
+ gnc_warning_dialog (parent, "%s", fmt);
+ uh_oh = FALSE;
+ break;
+
default:
PERR("FIXME: Unhandled error %d", io_error);
fmt = _("An unknown I/O error (%d) occurred.");
Modified: gnucash/branches/2.4/src/libqof/qof/qofbackend.h
===================================================================
--- gnucash/branches/2.4/src/libqof/qof/qofbackend.h 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/libqof/qof/qofbackend.h 2012-01-29 05:56:54 UTC (rev 21909)
@@ -98,6 +98,8 @@
ERR_FILEIO_FILE_EACCES, /**< No read access permission for the given file */
ERR_FILEIO_RESERVED_WRITE, /**< User attempt to write to a directory reserved
for internal use by GnuCash */
+ ERR_FILEIO_FILE_UPGRADE, /**< file will be upgraded and not be able to be
+ read by prior versions - warn users*/
/* network errors */
ERR_NETIO_SHORT_READ = 2000, /**< not enough bytes received */
Modified: gnucash/branches/2.4/src/libqof/qof/qofsession.c
===================================================================
--- gnucash/branches/2.4/src/libqof/qof/qofsession.c 2012-01-29 01:12:30 UTC (rev 21908)
+++ gnucash/branches/2.4/src/libqof/qof/qofsession.c 2012-01-29 05:56:54 UTC (rev 21909)
@@ -1267,6 +1267,7 @@
if ((err != ERR_BACKEND_NO_ERR) &&
(err != ERR_FILEIO_FILE_TOO_OLD) &&
(err != ERR_FILEIO_NO_ENCODING) &&
+ (err != ERR_FILEIO_FILE_UPGRADE) &&
(err != ERR_SQL_DB_TOO_OLD) &&
(err != ERR_SQL_DB_TOO_NEW))
{
More information about the gnucash-changes
mailing list