mirror of
https://github.com/Gnucash/gnucash.git
synced 2026-07-29 15:53:45 -05:00
Check that files can be opened before
trying to work out their type. Use new QofBackendError value git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13235 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -432,6 +432,7 @@ qsf_file_type(QofBackend *be, QofBook *book)
|
||||
{
|
||||
QSFBackend *qsf_be;
|
||||
qsf_param *params;
|
||||
FILE *f;
|
||||
char *path;
|
||||
gboolean result;
|
||||
|
||||
@@ -444,6 +445,9 @@ qsf_file_type(QofBackend *be, QofBook *book)
|
||||
params = qsf_be->params;
|
||||
params->book = book;
|
||||
path = g_strdup(qsf_be->fullpath);
|
||||
f = fopen(path, "r");
|
||||
if(!f) { qof_backend_set_error(be, ERR_FILEIO_READ_ERROR); }
|
||||
fclose(f);
|
||||
params->filepath = g_strdup(path);
|
||||
qof_backend_get_error(be);
|
||||
result = is_our_qsf_object_be(params);
|
||||
@@ -768,9 +772,13 @@ qsf_entity_foreach(QofEntity *ent, gpointer data)
|
||||
if(0 == safe_strcmp(qof_param->param_type, QOF_TYPE_COLLECT))
|
||||
{
|
||||
qsf_coll = qof_param->param_getfcn(ent, qof_param);
|
||||
params->qof_param = qof_param;
|
||||
params->output_node = object_node;
|
||||
qof_collection_foreach(qsf_coll, qsf_from_coll_cb, params);
|
||||
if(qsf_coll) {
|
||||
params->qof_param = qof_param;
|
||||
params->output_node = object_node;
|
||||
qof_collection_foreach(qsf_coll, qsf_from_coll_cb, params);
|
||||
}
|
||||
param_list = g_slist_next(param_list);
|
||||
continue;
|
||||
}
|
||||
if(0 == safe_strcmp(qof_param->param_type, QOF_TYPE_CHOICE))
|
||||
{
|
||||
@@ -810,6 +818,7 @@ qsf_entity_foreach(QofEntity *ent, gpointer data)
|
||||
node = xmlAddChild(object_node, xmlNewNode(ns, BAD_CAST qof_param->param_type));
|
||||
string_buffer = g_strdup(qof_book_merge_param_as_string(qof_param, ent));
|
||||
xmlNodeAddContent(node, BAD_CAST string_buffer);
|
||||
g_free(string_buffer);
|
||||
xmlNewProp(node, BAD_CAST QSF_OBJECT_TYPE, BAD_CAST qof_param->param_name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user