SCM gfec_eval_file(const char *file, gfec_error_handler error_handler) { gchar *contents = NULL; GError *save_error = NULL; SCM result; if (!g_file_get_contents (file, &contents, NULL, &save_error)) { gchar *full_msg = g_strdup_printf ("Couldn't read contents of %s.\nReason: %s", file, save_error->message); error_handler(full_msg); g_error_free (save_error); g_free(full_msg); return SCM_UNDEFINED; } result = gfec_eval_string (contents, error_handler); g_free (contents); if (!result) { gchar *full_msg = g_strdup_printf ("Couldn't read contents of %s", file); error_handler(full_msg); g_free(full_msg); } return result; }
gboolean gnc_run_report (gint report_id, char ** data) { const gchar *free_data; SCM scm_text; gchar *str; g_return_val_if_fail (data != NULL, FALSE); *data = NULL; str = g_strdup_printf("(gnc:report-run %d)", report_id); scm_text = gfec_eval_string(str, error_handler); g_free(str); if (scm_text == SCM_UNDEFINED || !scm_is_string (scm_text)) return FALSE; free_data = scm_to_locale_string (scm_text); *data = g_strdup (free_data); return TRUE; }