2007-12-06 [colin] 3.1.0cvs62
[claws.git] / src / common / utils.c
index f49f1f1ca16cc79107dece355c63fae71b3913a3..a93cb49dcd053b5d53ef184669dfa5773d7e30cd 100644 (file)
@@ -1041,7 +1041,7 @@ void subst_char(gchar *str, gchar orig, gchar subst)
        }
 }
 
-static void subst_chars(gchar *str, gchar *orig, gchar subst)
+void subst_chars(gchar *str, gchar *orig, gchar subst)
 {
        register gchar *p = str;
 
@@ -3023,26 +3023,7 @@ gint str_write_to_file(const gchar *str, const gchar *file)
        return 0;
 }
 
-gchar *file_read_to_str(const gchar *file)
-{
-       FILE *fp;
-       gchar *str;
-
-       g_return_val_if_fail(file != NULL, NULL);
-
-       if ((fp = g_fopen(file, "rb")) == NULL) {
-               FILE_OP_ERROR(file, "fopen");
-               return NULL;
-       }
-
-       str = file_read_stream_to_str(fp);
-
-       fclose(fp);
-
-       return str;
-}
-
-gchar *file_read_stream_to_str(FILE *fp)
+static gchar *file_read_stream_to_str_full(FILE *fp, gboolean recode)
 {
        GByteArray *array;
        guchar buf[BUFSIZ];
@@ -3070,7 +3051,7 @@ gchar *file_read_stream_to_str(FILE *fp)
        str = (gchar *)array->data;
        g_byte_array_free(array, FALSE);
 
-       if (!g_utf8_validate(str, -1, NULL)) {
+       if (recode && !g_utf8_validate(str, -1, NULL)) {
                const gchar *src_codeset, *dest_codeset;
                gchar *tmp = NULL;
                src_codeset = conv_get_locale_charset_str();
@@ -3083,6 +3064,42 @@ gchar *file_read_stream_to_str(FILE *fp)
        return str;
 }
 
+static gchar *file_read_to_str_full(const gchar *file, gboolean recode)
+{
+       FILE *fp;
+       gchar *str;
+
+       g_return_val_if_fail(file != NULL, NULL);
+
+       if ((fp = g_fopen(file, "rb")) == NULL) {
+               FILE_OP_ERROR(file, "fopen");
+               return NULL;
+       }
+
+       str = file_read_stream_to_str_full(fp, recode);
+
+       fclose(fp);
+
+       return str;
+}
+
+gchar *file_read_to_str(const gchar *file)
+{
+       return file_read_to_str_full(file, TRUE);
+}
+gchar *file_read_stream_to_str(FILE *fp)
+{
+       return file_read_stream_to_str_full(fp, TRUE);
+}
+
+gchar *file_read_to_str_no_recode(const gchar *file)
+{
+       return file_read_to_str_full(file, FALSE);
+}
+gchar *file_read_stream_to_str_no_recode(FILE *fp)
+{
+       return file_read_stream_to_str_full(fp, FALSE);
+}
 
 char *fgets_crlf(char *buf, int size, FILE *stream)
 {
@@ -4057,7 +4074,7 @@ static GHashTable *create_domain_tab(void)
            "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl",
            "cm", "cn", "co", "cr", "cu", "cv", "cx", "cy", "cz", "de",
            "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er",
-           "es", "et", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gd",
+           "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gd",
            "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq",
            "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr",
            "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir",