mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
parent
feb2eac9e4
commit
365237aec4
@ -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
|
static void
|
||||||
on_child_exit (GPid pid, gint status, gpointer data)
|
on_child_exit (GPid pid, gint status, gpointer data)
|
||||||
{
|
{
|
||||||
|
@ -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_debit_string(GNCAccountType account_type);
|
||||||
char * gnc_get_credit_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. */
|
/** An opaque process structure returned by gnc_spawn_process_async. */
|
||||||
typedef struct _Process Process;
|
typedef struct _Process Process;
|
||||||
|
|
||||||
|
@ -255,3 +255,31 @@ gnc_scm_call_1_to_vector(SCM func, SCM arg)
|
|||||||
|
|
||||||
return SCM_UNDEFINED;
|
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;
|
||||||
|
}
|
||||||
|
@ -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_list gnc_scm_call_1_to_list
|
||||||
#define gnc_guile_call1_to_vector gnc_scm_call_1_to_vector
|
#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
|
#endif
|
||||||
|
@ -64,7 +64,6 @@
|
|||||||
#include "gnc-ui-util.h"
|
#include "gnc-ui-util.h"
|
||||||
#include "gnc-ui.h"
|
#include "gnc-ui.h"
|
||||||
#include "gnc-window.h"
|
#include "gnc-window.h"
|
||||||
#include "guile-util.h"
|
|
||||||
#include "option-util.h"
|
#include "option-util.h"
|
||||||
#include "window-report.h"
|
#include "window-report.h"
|
||||||
#include "swig-runtime.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;
|
SCM get_embedded_list, embedded, item, tmp_report;
|
||||||
gint count, id;
|
gint count, id;
|
||||||
gchar *text, *key_name;
|
gchar *text, *key_name;
|
||||||
char * str;
|
|
||||||
|
|
||||||
g_return_if_fail (GNC_IS_PLUGIN_PAGE_REPORT(plugin_page));
|
g_return_if_fail (GNC_IS_PLUGIN_PAGE_REPORT(plugin_page));
|
||||||
g_return_if_fail (key_file != NULL);
|
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);
|
key_name = g_strdup_printf(SCHEME_OPTIONS_N, id);
|
||||||
str = gnc_scm_to_locale_string (scm_text);
|
text = gnc_scm_strip_comments(scm_text);
|
||||||
text = gnc_guile_strip_comments(str);
|
|
||||||
g_key_file_set_string(key_file, group_name, key_name, text);
|
g_key_file_set_string(key_file, group_name, key_name, text);
|
||||||
g_free(text);
|
g_free(text);
|
||||||
g_free (str);
|
|
||||||
g_free(key_name);
|
g_free(key_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -786,11 +782,9 @@ gnc_plugin_page_report_save_page (GncPluginPage *plugin_page,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
str = gnc_scm_to_locale_string (scm_text);
|
text = gnc_scm_strip_comments(scm_text);
|
||||||
text = gnc_guile_strip_comments(str);
|
|
||||||
g_key_file_set_string(key_file, group_name, SCHEME_OPTIONS, text);
|
g_key_file_set_string(key_file, group_name, SCHEME_OPTIONS, text);
|
||||||
g_free(text);
|
g_free(text);
|
||||||
g_free (str);
|
|
||||||
LEAVE(" ");
|
LEAVE(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user