66{
67 if (path.empty())
68 return;
69
70 m_imp_file_str = path;
71 char *raw_contents;
72 size_t raw_length;
73 GError *error = nullptr;
74
75 if (!g_file_get_contents(path.c_str(), &raw_contents, &raw_length, &error))
76 {
77 std::string msg {error->message};
78 g_error_free (error);
79 throw std::ifstream::failure {msg};
80 }
81
82 m_raw_contents = raw_contents;
83 g_free(raw_contents);
84
85
86 const char *guessed_enc = NULL;
87 guessed_enc = go_guess_encoding (m_raw_contents.c_str(),
88 m_raw_contents.length(),
89 m_enc_str.empty() ? "UTF-8" : m_enc_str.c_str(),
90 NULL);
91 if (guessed_enc)
92 this->encoding(guessed_enc);
93 else
94 m_enc_str.clear();
95
96}