Fixed some mistakes from last commit.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@610 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
f3d72d6e33
commit
5a97fb2d0e
@ -1,6 +1,7 @@
|
|||||||
2006-07-23 Enrico Tröger <enrico.troeger@uvena.de>
|
2006-07-23 Enrico Tröger <enrico.troeger@uvena.de>
|
||||||
|
|
||||||
* src/build.c: Search terminal program in PATH (closes #1527203).
|
* src/build.c: Search terminal program in PATH (closes #1527203).
|
||||||
|
* src/documents.c: Fixed some mistakes from last commit.
|
||||||
|
|
||||||
|
|
||||||
2006-07-22 Nick Treleaven <nick.treleaven@btinternet.com>
|
2006-07-22 Nick Treleaven <nick.treleaven@btinternet.com>
|
||||||
|
@ -482,6 +482,7 @@ int document_open_file(gint idx, const gchar *filename, gint pos, gboolean reado
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
|
bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
|
||||||
|
enc = g_strdup(forced_enc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -501,8 +502,8 @@ int document_open_file(gint idx, const gchar *filename, gint pos, gboolean reado
|
|||||||
g_free(data);
|
g_free(data);
|
||||||
data = (void*)converted_text;
|
data = (void*)converted_text;
|
||||||
size = strlen(converted_text);
|
size = strlen(converted_text);
|
||||||
/// TODO should it not be UTF-* ?
|
|
||||||
bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
|
bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8");
|
||||||
|
enc = g_strdup(forced_enc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -532,7 +533,8 @@ int document_open_file(gint idx, const gchar *filename, gint pos, gboolean reado
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
// this if is important, else doesn't work because enc can be altered in the above block
|
||||||
|
if (enc == NULL)
|
||||||
{
|
{
|
||||||
if (g_utf8_validate(data, size, NULL))
|
if (g_utf8_validate(data, size, NULL))
|
||||||
{
|
{
|
||||||
@ -590,7 +592,7 @@ int document_open_file(gint idx, const gchar *filename, gint pos, gboolean reado
|
|||||||
doc_list[idx].mtime = st.st_mtime;
|
doc_list[idx].mtime = st.st_mtime;
|
||||||
doc_list[idx].changed = FALSE;
|
doc_list[idx].changed = FALSE;
|
||||||
doc_list[idx].file_name = g_strdup(utf8_filename);
|
doc_list[idx].file_name = g_strdup(utf8_filename);
|
||||||
doc_list[idx].encoding = g_strdup(enc);
|
doc_list[idx].encoding = enc;
|
||||||
doc_list[idx].unicode_bom = bom;
|
doc_list[idx].unicode_bom = bom;
|
||||||
|
|
||||||
sci_goto_pos(doc_list[idx].sci, pos, TRUE);
|
sci_goto_pos(doc_list[idx].sci, pos, TRUE);
|
||||||
@ -699,7 +701,7 @@ void document_save_file(gint idx)
|
|||||||
len = sci_get_length(doc_list[idx].sci) + 1;
|
len = sci_get_length(doc_list[idx].sci) + 1;
|
||||||
if (doc_list[idx].unicode_bom && utils_is_unicode_charset(doc_list[idx].encoding))
|
if (doc_list[idx].unicode_bom && utils_is_unicode_charset(doc_list[idx].encoding))
|
||||||
{
|
{
|
||||||
data = (gchar*) g_malloc(len + 4); // 3 chars for BOM, 1 for \0
|
data = (gchar*) g_malloc(len + 3); // 3 chars for BOM
|
||||||
data[0] = 0xef;
|
data[0] = 0xef;
|
||||||
data[1] = 0xbb;
|
data[1] = 0xbb;
|
||||||
data[2] = 0xbf;
|
data[2] = 0xbf;
|
||||||
@ -708,7 +710,7 @@ void document_save_file(gint idx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = (gchar*) g_malloc(len + 1);
|
data = (gchar*) g_malloc(len);
|
||||||
sci_get_text(doc_list[idx].sci, len, data);
|
sci_get_text(doc_list[idx].sci, len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -720,7 +722,7 @@ void document_save_file(gint idx)
|
|||||||
gsize conv_len;
|
gsize conv_len;
|
||||||
|
|
||||||
// try to convert it from UTF-8 to original encoding
|
// try to convert it from UTF-8 to original encoding
|
||||||
conv_file_contents = g_convert(data, len, doc_list[idx].encoding, "UTF-8",
|
conv_file_contents = g_convert(data, len-1, doc_list[idx].encoding, "UTF-8",
|
||||||
NULL, &conv_len, &conv_error);
|
NULL, &conv_len, &conv_error);
|
||||||
|
|
||||||
if (conv_error != NULL)
|
if (conv_error != NULL)
|
||||||
@ -741,12 +743,12 @@ void document_save_file(gint idx)
|
|||||||
len = conv_len;
|
len = conv_len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// len is too long and so 0x00 is written at the end which is not good w/o BOM
|
{
|
||||||
len--;
|
len = strlen(data);
|
||||||
|
}
|
||||||
locale_filename = g_locale_from_utf8(doc_list[idx].file_name, -1, NULL, NULL, NULL);
|
locale_filename = g_locale_from_utf8(doc_list[idx].file_name, -1, NULL, NULL, NULL);
|
||||||
fp = fopen(locale_filename, "w");
|
fp = fopen(locale_filename, "wb"); // this should fix the windows \n problem
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
{
|
{
|
||||||
msgwin_status_add(_("Error saving file (%s)."), strerror(errno));
|
msgwin_status_add(_("Error saving file (%s)."), strerror(errno));
|
||||||
@ -754,12 +756,6 @@ void document_save_file(gint idx)
|
|||||||
g_free(data);
|
g_free(data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GEANY_WIN32
|
|
||||||
// ugly hack: on windows '\n' (LF) is taken as CRLF so we must convert it prior to save the doc
|
|
||||||
if (sci_get_eol_mode(doc_list[idx].sci) == SC_EOL_CRLF) sci_convert_eols(doc_list[idx].sci, SC_EOL_CRLF);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bytes_written = fwrite(data, sizeof (gchar), len, fp);
|
bytes_written = fwrite(data, sizeof (gchar), len, fp);
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user