Revision: 610 Author: eht16 Date: 2006-07-23 06:14:23 -0700 (Sun, 23 Jul 2006) ViewCVS: http://svn.sourceforge.net/geany/?rev=610&view=rev
Log Message: ----------- Fixed some mistakes from last commit.
Modified Paths: -------------- trunk/ChangeLog trunk/src/document.c Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-07-23 08:34:51 UTC (rev 609) +++ trunk/ChangeLog 2006-07-23 13:14:23 UTC (rev 610) @@ -1,6 +1,7 @@ 2006-07-23 Enrico Tröger enrico.troeger@uvena.de
* 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
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2006-07-23 08:34:51 UTC (rev 609) +++ trunk/src/document.c 2006-07-23 13:14:23 UTC (rev 610) @@ -482,6 +482,7 @@ else { bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8"); + enc = g_strdup(forced_enc); } } else @@ -501,8 +502,8 @@ g_free(data); data = (void*)converted_text; size = strlen(converted_text); - /// TODO should it not be UTF-* ? bom = utils_strcmp(utils_scan_unicode_bom(data), "UTF-8"); + enc = g_strdup(forced_enc); } } } @@ -532,7 +533,8 @@ } } } - 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)) { @@ -590,7 +592,7 @@ doc_list[idx].mtime = st.st_mtime; doc_list[idx].changed = FALSE; 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;
sci_goto_pos(doc_list[idx].sci, pos, TRUE); @@ -699,7 +701,7 @@ len = sci_get_length(doc_list[idx].sci) + 1; 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[1] = 0xbb; data[2] = 0xbf; @@ -708,7 +710,7 @@ } else { - data = (gchar*) g_malloc(len + 1); + data = (gchar*) g_malloc(len); sci_get_text(doc_list[idx].sci, len, data); }
@@ -720,7 +722,7 @@ gsize conv_len;
// 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);
if (conv_error != NULL) @@ -741,12 +743,12 @@ len = conv_len; } } - - // len is too long and so 0x00 is written at the end which is not good w/o BOM - len--; - + else + { + len = strlen(data); + } 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) { msgwin_status_add(_("Error saving file (%s)."), strerror(errno)); @@ -754,12 +756,6 @@ g_free(data); 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); fclose (fp);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.