Move gnc_guile_strip_comments to core-utils and normalize its name to

gnc_scm_strip_comments

Also make it a true convenience functions by doing the conversion from
an scm string to a c string internally. This saves the caller a manual
conversion step.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@22687 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Geert Janssens 2012-12-22 18:21:03 +00:00
parent feb2eac9e4
commit 365237aec4
5 changed files with 39 additions and 43 deletions

View File

@ -949,32 +949,6 @@ gnc_get_credit_string(GNCAccountType account_type)
}
/* Clean up a scheme options string for use in a key/value file.
* This function removes all full line comments, removes all blank
* lines, and removes all leading/trailing white space. */
gchar *gnc_guile_strip_comments (const gchar *raw_text)
{
gchar *text, **splits;
gint i, j;
splits = g_strsplit(raw_text, "\n", -1);
for (i = j = 0; splits[i]; i++)
{
if ((splits[i][0] == ';') || (splits[i][0] == '\0'))
{
g_free(splits[i]);
continue;
}
splits[j++] = g_strstrip(splits[i]);
}
splits[j] = NULL;
text = g_strjoinv(" ", splits);
g_strfreev(splits);
return text;
}
static void
on_child_exit (GPid pid, gint status, gpointer data)
{

View File

@ -83,15 +83,6 @@ int gnc_trans_scm_get_num_splits(SCM trans_scm);
char * gnc_get_debit_string(GNCAccountType account_type);
char * gnc_get_credit_string(GNCAccountType account_type);
/** Clean up a scheme options string for use in a key/value file.
* This function removes all full line comments, removes all blank
* lines, and removes all leading/trailing white space.
*
* @note: This function does not correctly handle comments that occur
* at the end of a line. Fortunately there aren't any such
* comments. */
gchar *gnc_guile_strip_comments (const gchar *text);
/** An opaque process structure returned by gnc_spawn_process_async. */
typedef struct _Process Process;

View File

@ -255,3 +255,31 @@ gnc_scm_call_1_to_vector(SCM func, SCM arg)
return SCM_UNDEFINED;
}
/* Clean up a scheme options string for use in a key/value file.
* This function removes all full line comments, removes all blank
* lines, and removes all leading/trailing white space. */
gchar *gnc_scm_strip_comments (SCM scm_text)
{
gchar *raw_text, *text, **splits;
gint i, j;
raw_text = gnc_scm_to_locale_string (scm_text);
splits = g_strsplit(raw_text, "\n", -1);
for (i = j = 0; splits[i]; i++)
{
if ((splits[i][0] == ';') || (splits[i][0] == '\0'))
{
g_free(splits[i]);
continue;
}
splits[j++] = g_strstrip(splits[i]);
}
splits[j] = NULL;
text = g_strjoinv(" ", splits);
g_free (raw_text);
g_strfreev(splits);
return text;
}

View File

@ -55,4 +55,13 @@ SCM gnc_scm_call_1_to_vector(SCM func, SCM arg);
#define gnc_guile_call1_to_list gnc_scm_call_1_to_list
#define gnc_guile_call1_to_vector gnc_scm_call_1_to_vector
/** Clean up a scheme options string for use in a key/value file.
* This function removes all full line comments, removes all blank
* lines, and removes all leading/trailing white space.
*
* @note: This function does not correctly handle comments that occur
* at the end of a line. Fortunately there aren't any such
* comments. */
gchar *gnc_scm_strip_comments (SCM scm_text);
#endif

View File

@ -64,7 +64,6 @@
#include "gnc-ui-util.h"
#include "gnc-ui.h"
#include "gnc-window.h"
#include "guile-util.h"
#include "option-util.h"
#include "window-report.h"
#include "swig-runtime.h"
@ -732,7 +731,6 @@ gnc_plugin_page_report_save_page (GncPluginPage *plugin_page,
SCM get_embedded_list, embedded, item, tmp_report;
gint count, id;
gchar *text, *key_name;
char * str;
g_return_if_fail (GNC_IS_PLUGIN_PAGE_REPORT(plugin_page));
g_return_if_fail (key_file != NULL);
@ -771,11 +769,9 @@ gnc_plugin_page_report_save_page (GncPluginPage *plugin_page,
}
key_name = g_strdup_printf(SCHEME_OPTIONS_N, id);
str = gnc_scm_to_locale_string (scm_text);
text = gnc_guile_strip_comments(str);
text = gnc_scm_strip_comments(scm_text);
g_key_file_set_string(key_file, group_name, key_name, text);
g_free(text);
g_free (str);
g_free(key_name);
}
@ -786,11 +782,9 @@ gnc_plugin_page_report_save_page (GncPluginPage *plugin_page,
return;
}
str = gnc_scm_to_locale_string (scm_text);
text = gnc_guile_strip_comments(str);
text = gnc_scm_strip_comments(scm_text);
g_key_file_set_string(key_file, group_name, SCHEME_OPTIONS, text);
g_free(text);
g_free (str);
LEAVE(" ");
}