correctly escape the file we're saving.
Tue Jan 21 00:44:03 2003 Jonathan Blandford <jrb@gnome.org> * gnome-theme-save.c (escape_string_and_dup): correctly escape the file we're saving.
This commit is contained in:
parent
ec6e109f66
commit
f68decde57
2 changed files with 59 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Tue Jan 21 00:44:03 2003 Jonathan Blandford <jrb@gnome.org>
|
||||||
|
|
||||||
|
* gnome-theme-save.c (escape_string_and_dup): correctly escape the
|
||||||
|
file we're saving.
|
||||||
|
|
||||||
Thu Jan 16 02:41:09 2003 Jonathan Blandford <jrb@gnome.org>
|
Thu Jan 16 02:41:09 2003 Jonathan Blandford <jrb@gnome.org>
|
||||||
|
|
||||||
* Release 2.1.7
|
* Release 2.1.7
|
||||||
|
|
|
@ -12,6 +12,53 @@ enum
|
||||||
INVALID_THEME_NAME,
|
INVALID_THEME_NAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* taken from gnome-desktop-item.c */
|
||||||
|
static char *
|
||||||
|
escape_string_and_dup (const char *s)
|
||||||
|
{
|
||||||
|
char *return_value, *p;
|
||||||
|
const char *q;
|
||||||
|
int len = 0;
|
||||||
|
|
||||||
|
if (s == NULL)
|
||||||
|
return g_strdup("");
|
||||||
|
|
||||||
|
q = s;
|
||||||
|
while (*q)
|
||||||
|
{
|
||||||
|
len++;
|
||||||
|
if (strchr ("\n\r\t\\", *q) != NULL)
|
||||||
|
len++;
|
||||||
|
q++;
|
||||||
|
}
|
||||||
|
return_value = p = (char *) g_malloc (len + 1);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
switch (*s)
|
||||||
|
{
|
||||||
|
case '\t':
|
||||||
|
*p++ = '\\';
|
||||||
|
*p++ = 't';
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
*p++ = '\\';
|
||||||
|
*p++ = 'n';
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
*p++ = '\\';
|
||||||
|
*p++ = 'r';
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
*p++ = '\\';
|
||||||
|
*p++ = '\\';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
*p++ = *s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (*s++);
|
||||||
|
return return_value;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
check_theme_name (const gchar *theme_name,
|
check_theme_name (const gchar *theme_name,
|
||||||
|
@ -126,6 +173,7 @@ save_dialog_response (GtkWidget *save_dialog,
|
||||||
{
|
{
|
||||||
GnomeThemeMetaInfo *meta_theme_info;
|
GnomeThemeMetaInfo *meta_theme_info;
|
||||||
char *theme_description = NULL;
|
char *theme_description = NULL;
|
||||||
|
char *theme_name = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
if (response_id == GTK_RESPONSE_OK)
|
if (response_id == GTK_RESPONSE_OK)
|
||||||
|
@ -134,21 +182,21 @@ save_dialog_response (GtkWidget *save_dialog,
|
||||||
GtkWidget *entry;
|
GtkWidget *entry;
|
||||||
GtkWidget *text_view;
|
GtkWidget *text_view;
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
const char *theme_name;
|
|
||||||
GtkTextIter start_iter;
|
GtkTextIter start_iter;
|
||||||
GtkTextIter end_iter;
|
GtkTextIter end_iter;
|
||||||
|
gchar *buffer_text;
|
||||||
|
|
||||||
dialog = gnome_theme_manager_get_theme_dialog ();
|
dialog = gnome_theme_manager_get_theme_dialog ();
|
||||||
entry = WID ("save_dialog_entry");
|
entry = WID ("save_dialog_entry");
|
||||||
theme_name = gtk_entry_get_text (GTK_ENTRY (entry));
|
theme_name = escape_string_and_dup (gtk_entry_get_text (GTK_ENTRY (entry)));
|
||||||
|
|
||||||
text_view = WID ("save_dialog_textview");
|
text_view = WID ("save_dialog_textview");
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
|
||||||
gtk_text_buffer_get_start_iter (buffer, &start_iter);
|
gtk_text_buffer_get_start_iter (buffer, &start_iter);
|
||||||
gtk_text_buffer_get_end_iter (buffer, &end_iter);
|
gtk_text_buffer_get_end_iter (buffer, &end_iter);
|
||||||
theme_description = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE);
|
buffer_text = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE);
|
||||||
|
theme_description = escape_string_and_dup (buffer_text);
|
||||||
|
g_free (buffer_text);
|
||||||
meta_theme_info = (GnomeThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info");
|
meta_theme_info = (GnomeThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info");
|
||||||
if (! save_theme_to_disk (meta_theme_info, theme_name, theme_description, &error))
|
if (! save_theme_to_disk (meta_theme_info, theme_name, theme_description, &error))
|
||||||
{
|
{
|
||||||
|
@ -159,6 +207,7 @@ save_dialog_response (GtkWidget *save_dialog,
|
||||||
out:
|
out:
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
gtk_widget_hide (save_dialog);
|
gtk_widget_hide (save_dialog);
|
||||||
|
g_free (theme_name);
|
||||||
g_free (theme_description);
|
g_free (theme_description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue