OSDN Git Service

Restart discussion about binary file detection (TODO #1946860)
authorJochen Tucht <jtuc@users.sourceforge.net>
Wed, 19 May 2010 12:57:18 +0000 (12:57 +0000)
committerJochen Tucht <jtuc@users.sourceforge.net>
Wed, 19 May 2010 12:57:18 +0000 (12:57 +0000)
Src/FileTextEncoding.cpp
Src/FileTextEncoding.h
Src/codepage_detect.cpp

index 2b7235a..4742606 100644 (file)
@@ -30,6 +30,7 @@ void FileTextEncoding::Clear()
        m_unicoding = ucr::NONE;
        m_bom = false;
        m_guessed = false;
+       m_binary = false;
 }
 
 /**
index 15afaad..29c88b5 100644 (file)
@@ -20,6 +20,7 @@ struct FileTextEncoding
        ucr::UNICODESET m_unicoding; /**< Unicode encoding. */
        bool m_bom; /**< Unicode byte marker */
        bool m_guessed; /**< Whether encoding was guessed from content */
+       bool m_binary;
 
        FileTextEncoding();
        void Clear();
index 4d3757c..56bcdf0 100644 (file)
@@ -208,6 +208,7 @@ void GuessCodepageEncoding(LPCTSTR filepath, FileTextEncoding * encoding, BOOL b
        encoding->SetCodepage(getDefaultCodepage());
        encoding->m_bom = false;
        encoding->m_guessed = false;
+       encoding->m_binary = false;
        switch (fi.nByteOrder)
        {
        case 8 + 2 + 0:
@@ -226,8 +227,9 @@ void GuessCodepageEncoding(LPCTSTR filepath, FileTextEncoding * encoding, BOOL b
                if (fi.pImage && !CheckForInvalidUtf8((LPBYTE)fi.pImage, fi.cbImage))
                        encoding->SetUnicoding(ucr::UTF8);
                encoding->m_bom = false;
+               if (memchr(fi.pImage, 0, fi.cbImage))
+                       encoding->m_binary = true;
                break;
-
        }
        if (fi.nByteOrder == 1 && bGuessEncoding)
        {