[haiku-commits] haiku: hrev46407 - src/kits/storage/mime src/servers/registrar src/servers/registrar/mime headers/private/storage/mime

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 22 Nov 2013 12:24:38 +0100 (CET)

hrev46407 adds 3 changesets to branch 'master'
old head: eb539d59e7d26369ad2cbb9b3780cfdbc78a8a37
new head: 2b76973fa2401f7a5edf68e6470f3d3210cbcff3
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=2b76973+%5Eeb539d5

----------------------------------------------------------------------------

85835e4: registrar: Move more classes to libstorage_kit_mime.a
  
  Move MimeSnifferAddon, MimeSnifferAddonManager, and TextSnifferAddon to
  libstorage_kit_mime.a, so we can reuse them.

6140f89: TextSnifferAddon: Use MIME DB directly
  
  A DatabaseLocation is passed to the constructor and used to verify that
  the sniffed MIME type is installed instead of BMimeType::IsInstalled().
  This makes the add-on independent of the default MIME DB.

2b76973: mimeset: Use TextSnifferAddon when using a custom MIME DB
  
  That addresses the problem that packaged text files aren't correctly
  identified (ticket #9972). All concerned packages have to be rebuilt,
  of course.

                                    [ Ingo Weinhold <ingo_weinhold@xxxxxx> ]

----------------------------------------------------------------------------

16 files changed, 140 insertions(+), 64 deletions(-)
build/jam/BuildSetup                             |  1 +
.../os/add-ons/registrar/MimeSnifferAddon.h      |  1 +
.../storage/mime/MimeSnifferAddonManager.h       |  1 +
.../private/storage/mime/TextSnifferAddon.h      |  1 +
.../storage}/mime/MimeSnifferAddonManager.h      | 14 +++---
headers/private/storage/mime/TextSnifferAddon.h  | 44 ++++++++++++++++++
src/bin/mimeset.cpp                              | 17 ++++++-
src/build/libbe/storage/Jamfile                  |  3 ++
src/kits/storage/mime/Jamfile                    |  3 ++
.../storage}/mime/MimeSnifferAddon.cpp           |  8 ++--
.../storage}/mime/MimeSnifferAddonManager.cpp    | 26 +++++++----
.../storage/mime}/TextSnifferAddon.cpp           | 47 ++++++++++++++------
.../registrar => kits/storage/mime}/names.h      |  0
src/servers/registrar/Jamfile                    |  3 --
src/servers/registrar/MIMEManager.cpp            | 11 +++--
src/servers/registrar/TextSnifferAddon.h         | 24 ----------

############################################################################

Commit:      85835e41862b98714845fd143a4df5b2c7369dd9
URL:         http://cgit.haiku-os.org/haiku/commit/?id=85835e4
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Nov 22 10:14:19 2013 UTC

registrar: Move more classes to libstorage_kit_mime.a

Move MimeSnifferAddon, MimeSnifferAddonManager, and TextSnifferAddon to
libstorage_kit_mime.a, so we can reuse them.

----------------------------------------------------------------------------

diff --git a/src/servers/registrar/mime/MimeSnifferAddonManager.h 
b/headers/private/storage/mime/MimeSnifferAddonManager.h
similarity index 79%
rename from src/servers/registrar/mime/MimeSnifferAddonManager.h
rename to headers/private/storage/mime/MimeSnifferAddonManager.h
index ccf016e..de06251 100644
--- a/src/servers/registrar/mime/MimeSnifferAddonManager.h
+++ b/headers/private/storage/mime/MimeSnifferAddonManager.h
@@ -1,13 +1,15 @@
 /*
- * Copyright 2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>.
- * All rights reserved. Distributed under the terms of the MIT License.
+ * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@xxxxxx.
+ * Distributed under the terms of the MIT License.
  */
-#ifndef MIME_SNIFFER_ADDON_MANAGER_H
-#define MIME_SNIFFER_ADDON_MANAGER_H
+#ifndef _MINE_MIME_SNIFFER_ADDON_MANAGER_H
+#define _MINE_MIME_SNIFFER_ADDON_MANAGER_H
+
 
 #include <List.h>
 #include <Locker.h>
 
+
 #include <mime/MimeSniffer.h>
 
 
@@ -15,6 +17,7 @@ class BFile;
 class BMimeSnifferAddon;
 class BMimeType;
 
+
 namespace BPrivate {
 namespace Storage {
 namespace Mime {
@@ -59,7 +62,6 @@ private:
 }      // namespace Storage
 }      // namespace BPrivate
 
-using BPrivate::Storage::Mime::MimeSnifferAddonManager;
 
-#endif // MIME_SNIFFER_ADDON_MANAGER_H
+#endif // _MINE_MIME_SNIFFER_ADDON_MANAGER_H
 
diff --git a/src/servers/registrar/TextSnifferAddon.h 
b/headers/private/storage/mime/TextSnifferAddon.h
similarity index 53%
rename from src/servers/registrar/TextSnifferAddon.h
rename to headers/private/storage/mime/TextSnifferAddon.h
index 300f808..4a0adb8 100644
--- a/src/servers/registrar/TextSnifferAddon.h
+++ b/headers/private/storage/mime/TextSnifferAddon.h
@@ -1,12 +1,19 @@
 /*
- * Copyright 2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>.
- * All rights reserved. Distributed under the terms of the MIT License.
+ * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@xxxxxx.
+ * Distributed under the terms of the MIT License.
  */
-#ifndef TEXT_SNIFFER_ADDON_H
-#define TEXT_SNIFFER_ADDON_H
+#ifndef _MIME_TEXT_SNIFFER_ADDON_H
+#define _MIME_TEXT_SNIFFER_ADDON_H
+
 
 #include <MimeSnifferAddon.h>
 
+
+namespace BPrivate {
+namespace Storage {
+namespace Mime {
+
+
 class TextSnifferAddon : public BMimeSnifferAddon {
 public:
                                                                
TextSnifferAddon();
@@ -21,4 +28,10 @@ public:
                                                                        
BMimeType* type);
 };
 
-#endif // TEXT_SNIFFER_ADDON_H
+
+} // namespace Mime
+} // namespace Storage
+} // namespace BPrivate
+
+
+#endif // _MIME_TEXT_SNIFFER_ADDON_H
diff --git a/src/kits/storage/mime/Jamfile b/src/kits/storage/mime/Jamfile
index a09277d..37de22d 100644
--- a/src/kits/storage/mime/Jamfile
+++ b/src/kits/storage/mime/Jamfile
@@ -20,9 +20,12 @@ for architectureObject in [ MultiArchSubDirSetup ] {
                        MimeEntryProcessor.cpp
                        MimeInfoUpdater.cpp
                        MimeSniffer.cpp
+                       MimeSnifferAddon.cpp
+                       MimeSnifferAddonManager.cpp
                        SnifferRules.cpp
                        Supertype.cpp
                        SupportingApps.cpp
+                       TextSnifferAddon.cpp
                        ;
        }
 }
diff --git a/src/servers/registrar/mime/MimeSnifferAddon.cpp 
b/src/kits/storage/mime/MimeSnifferAddon.cpp
similarity index 73%
rename from src/servers/registrar/mime/MimeSnifferAddon.cpp
rename to src/kits/storage/mime/MimeSnifferAddon.cpp
index 1460bbd..0a53ebc 100644
--- a/src/servers/registrar/mime/MimeSnifferAddon.cpp
+++ b/src/kits/storage/mime/MimeSnifferAddon.cpp
@@ -1,9 +1,11 @@
 /*
- * Copyright 2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>.
- * All rights reserved. Distributed under the terms of the MIT License.
+ * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@xxxxxx.
+ * Distributed under the terms of the MIT License.
  */
 
-#include "MimeSnifferAddon.h"
+
+#include <MimeSnifferAddon.h>
+
 
 // constructor
 BMimeSnifferAddon::BMimeSnifferAddon()
diff --git a/src/servers/registrar/mime/MimeSnifferAddonManager.cpp 
b/src/kits/storage/mime/MimeSnifferAddonManager.cpp
similarity index 88%
rename from src/servers/registrar/mime/MimeSnifferAddonManager.cpp
rename to src/kits/storage/mime/MimeSnifferAddonManager.cpp
index 5f3d433..58272fc 100644
--- a/src/servers/registrar/mime/MimeSnifferAddonManager.cpp
+++ b/src/kits/storage/mime/MimeSnifferAddonManager.cpp
@@ -1,18 +1,22 @@
 /*
- * Copyright 2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>.
- * All rights reserved. Distributed under the terms of the MIT License.
+ * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@xxxxxx.
+ * Distributed under the terms of the MIT License.
  */
 
-#include "MimeSnifferAddonManager.h"
+
+#include <mime/MimeSnifferAddonManager.h>
 
 #include <new>
 
 #include <Autolock.h>
 #include <MimeType.h>
 
-#include "MimeSnifferAddon.h"
+#include <MimeSnifferAddon.h>
+
 
-using std::nothrow;
+namespace BPrivate {
+namespace Storage {
+namespace Mime {
 
 
 // singleton instance
@@ -78,7 +82,8 @@ MimeSnifferAddonManager::Default()
 status_t
 MimeSnifferAddonManager::CreateDefault()
 {
-       MimeSnifferAddonManager* manager = new(nothrow) MimeSnifferAddonManager;
+       MimeSnifferAddonManager* manager
+               = new(std::nothrow) MimeSnifferAddonManager;
        if (!manager)
                return B_NO_MEMORY;
 
@@ -109,7 +114,7 @@ 
MimeSnifferAddonManager::AddMimeSnifferAddon(BMimeSnifferAddon* addon)
                return B_ERROR;
 
        // create a reference for the addon
-       AddonReference* reference = new(nothrow) AddonReference(addon);
+       AddonReference* reference = new(std::nothrow) AddonReference(addon);
        if (!reference)
                return B_NO_MEMORY;
 
@@ -202,7 +207,7 @@ MimeSnifferAddonManager::_GetAddons(AddonReference**& 
references, int32& count)
                return B_ERROR;
 
        count = fAddons.CountItems();
-       references = new(nothrow) AddonReference*[count];
+       references = new(std::nothrow) AddonReference*[count];
        if (!references)
                return B_NO_MEMORY;
 
@@ -223,3 +228,8 @@ MimeSnifferAddonManager::_PutAddons(AddonReference** 
references, int32 count)
 
        delete[] references;
 }
+
+
+}      // namespace Mime
+}      // namespace Storage
+}      // namespace BPrivate
diff --git a/src/servers/registrar/TextSnifferAddon.cpp 
b/src/kits/storage/mime/TextSnifferAddon.cpp
similarity index 98%
rename from src/servers/registrar/TextSnifferAddon.cpp
rename to src/kits/storage/mime/TextSnifferAddon.cpp
index 1773eab..9120c51 100644
--- a/src/servers/registrar/TextSnifferAddon.cpp
+++ b/src/kits/storage/mime/TextSnifferAddon.cpp
@@ -1,13 +1,19 @@
 /*
- * Copyright 2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>.
- * All rights reserved. Distributed under the terms of the MIT License.
+ * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@xxxxxx.
+ * Distributed under the terms of the MIT License.
  */
 
-#include "TextSnifferAddon.h"
+
+#include <mime/TextSnifferAddon.h>
 
 #include <MimeType.h>
 
 
+namespace BPrivate {
+namespace Storage {
+namespace Mime {
+
+
 static int file_ascmagic(const unsigned char *buf, size_t nbytes,
        BMimeType* mimeType);
 
@@ -686,3 +692,8 @@ from_ebcdic(const unsigned char *buf, size_t nbytes, 
unsigned char *out)
                out[i] = ebcdic_to_ascii[buf[i]];
        }
 }
+
+
+} // namespace Mime
+} // namespace Storage
+} // namespace BPrivate
diff --git a/src/servers/registrar/names.h b/src/kits/storage/mime/names.h
similarity index 100%
rename from src/servers/registrar/names.h
rename to src/kits/storage/mime/names.h
diff --git a/src/servers/registrar/Jamfile b/src/servers/registrar/Jamfile
index bf02ee4..40b3416 100644
--- a/src/servers/registrar/Jamfile
+++ b/src/servers/registrar/Jamfile
@@ -34,15 +34,12 @@ Server registrar
        RosterAppInfo.cpp
        RosterSettingsCharStream.cpp
        ShutdownProcess.cpp
-       TextSnifferAddon.cpp
        TRoster.cpp
        Watcher.cpp
        WatchingService.cpp
 
        # mime
        CreateAppMetaMimeThread.cpp
-       MimeSnifferAddon.cpp
-       MimeSnifferAddonManager.cpp
        MimeUpdateThread.cpp
        RegistrarThread.cpp
        RegistrarThreadManager.cpp
diff --git a/src/servers/registrar/MIMEManager.cpp 
b/src/servers/registrar/MIMEManager.cpp
index 89d6ef1..2021448 100644
--- a/src/servers/registrar/MIMEManager.cpp
+++ b/src/servers/registrar/MIMEManager.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2009, Haiku Inc.
+ * Copyright 2002-2013, Haiku Inc.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
@@ -23,16 +23,18 @@
 
 #include <mime/AppMetaMimeCreator.h>
 #include <mime/database_support.h>
+#include <mime/MimeSnifferAddonManager.h>
+#include <mime/TextSnifferAddon.h>
 
 #include "CreateAppMetaMimeThread.h"
 #include "MessageDeliverer.h"
-#include "MimeSnifferAddonManager.h"
-#include "TextSnifferAddon.h"
 #include "UpdateMimeInfoThread.h"
 
 
 using namespace std;
 using namespace BPrivate;
+using BPrivate::Storage::Mime::MimeSnifferAddonManager;
+using BPrivate::Storage::Mime::TextSnifferAddon;
 
 
 /*!    \class MIMEManager

############################################################################

Commit:      6140f897d4bb393fd0fd1ca82261b7a0d440aab0
URL:         http://cgit.haiku-os.org/haiku/commit/?id=6140f89
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Nov 22 11:14:34 2013 UTC

TextSnifferAddon: Use MIME DB directly

A DatabaseLocation is passed to the constructor and used to verify that
the sniffed MIME type is installed instead of BMimeType::IsInstalled().
This makes the add-on independent of the default MIME DB.

----------------------------------------------------------------------------

diff --git a/headers/private/storage/mime/TextSnifferAddon.h 
b/headers/private/storage/mime/TextSnifferAddon.h
index 4a0adb8..7ef924e 100644
--- a/headers/private/storage/mime/TextSnifferAddon.h
+++ b/headers/private/storage/mime/TextSnifferAddon.h
@@ -14,9 +14,13 @@ namespace Storage {
 namespace Mime {
 
 
+class DatabaseLocation;
+
+
 class TextSnifferAddon : public BMimeSnifferAddon {
 public:
-                                                               
TextSnifferAddon();
+                                                               
TextSnifferAddon(
+                                                                       
DatabaseLocation* databaseLocation);
        virtual                                         ~TextSnifferAddon();
 
        virtual size_t                          MinimalBufferSize();
@@ -26,6 +30,9 @@ public:
        virtual float                           GuessMimeType(BFile* file,
                                                                        const 
void* buffer, int32 length,
                                                                        
BMimeType* type);
+
+private:
+                       DatabaseLocation*       fDatabaseLocation;
 };
 
 
diff --git a/src/kits/storage/mime/TextSnifferAddon.cpp 
b/src/kits/storage/mime/TextSnifferAddon.cpp
index 9120c51..3dd02f5 100644
--- a/src/kits/storage/mime/TextSnifferAddon.cpp
+++ b/src/kits/storage/mime/TextSnifferAddon.cpp
@@ -8,18 +8,22 @@
 
 #include <MimeType.h>
 
+#include <mime/DatabaseLocation.h>
+
 
 namespace BPrivate {
 namespace Storage {
 namespace Mime {
 
 
-static int file_ascmagic(const unsigned char *buf, size_t nbytes,
-       BMimeType* mimeType);
+static int file_ascmagic(DatabaseLocation* databaseLocation,
+       const unsigned char *buf, size_t nbytes, BMimeType* mimeType);
 
 
 // constructor
-TextSnifferAddon::TextSnifferAddon()
+TextSnifferAddon::TextSnifferAddon(DatabaseLocation* databaseLocation)
+       :
+       fDatabaseLocation(databaseLocation)
 {
 }
 
@@ -48,7 +52,8 @@ float
 TextSnifferAddon::GuessMimeType(BFile* file, const void* buffer, int32 length,
        BMimeType* type)
 {
-       if (file_ascmagic((const unsigned char*)buffer, length, type)) {
+       if (file_ascmagic(fDatabaseLocation, (const unsigned char*)buffer, 
length,
+                       type)) {
                // If the buffer is very short, we return a lower priority. 
Maybe
                // someone else knows better.
                if (length < 20)
@@ -128,7 +133,8 @@ static int ascmatch(const unsigned char *, const my_unichar 
*, size_t);
 
 
 static int
-file_ascmagic(const unsigned char *buf, size_t nbytes, BMimeType* mimeType)
+file_ascmagic(DatabaseLocation* databaseLocation, const unsigned char *buf,
+       size_t nbytes, BMimeType* mimeType)
 {
        size_t i;
        unsigned char *nbuf = NULL;
@@ -330,14 +336,16 @@ done:
 
                bool found = false;
                if (subtypeMimeSpecific != NULL) {
-                       mimeType->SetTo(subtypeMimeSpecific);
-                       if (mimeType->IsInstalled())
-                               found = true;                   
+                       if (databaseLocation->IsInstalled(subtypeMimeSpecific)) 
{
+                               mimeType->SetTo(subtypeMimeSpecific);
+                               found = true;
+                       }
                }
                if (!found && subtypeMimeGeneric != NULL) {
-                       mimeType->SetTo(subtypeMimeGeneric);
-                       if (mimeType->IsInstalled())
-                               found = true;                   
+                       if (databaseLocation->IsInstalled(subtypeMimeGeneric)) {
+                               mimeType->SetTo(subtypeMimeGeneric);
+                               found = true;
+                       }
                }
                if (!found)
                        mimeType->SetTo("text/plain");
diff --git a/src/servers/registrar/MIMEManager.cpp 
b/src/servers/registrar/MIMEManager.cpp
index 2021448..7be789b 100644
--- a/src/servers/registrar/MIMEManager.cpp
+++ b/src/servers/registrar/MIMEManager.cpp
@@ -51,7 +51,8 @@ init_mime_sniffer_add_on_manager()
                return NULL;
 
        MimeSnifferAddonManager* manager = MimeSnifferAddonManager::Default();
-       manager->AddMimeSnifferAddon(new(nothrow) TextSnifferAddon());
+       manager->AddMimeSnifferAddon(new(nothrow) TextSnifferAddon(
+               BPrivate::Storage::Mime::default_database_location()));
        return manager;
 }
 

############################################################################

Revision:    hrev46407
Commit:      2b76973fa2401f7a5edf68e6470f3d3210cbcff3
URL:         http://cgit.haiku-os.org/haiku/commit/?id=2b76973
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Nov 22 11:20:39 2013 UTC

Ticket:      https://dev.haiku-os.org/ticket/9972

mimeset: Use TextSnifferAddon when using a custom MIME DB

That addresses the problem that packaged text files aren't correctly
identified (ticket #9972). All concerned packages have to be rebuilt,
of course.

----------------------------------------------------------------------------

diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup
index 858fb07..a435ee5 100644
--- a/build/jam/BuildSetup
+++ b/build/jam/BuildSetup
@@ -599,6 +599,7 @@ if $(HOST_PLATFORM) = freebsd {
 HOST_BE_API_HEADERS =
        [ FDirName $(HAIKU_TOP) headers build ]
        [ FDirName $(HAIKU_TOP) headers build os ]
+       [ FDirName $(HAIKU_TOP) headers build os add-ons registrar ]
        [ FDirName $(HAIKU_TOP) headers build os app ]
        [ FDirName $(HAIKU_TOP) headers build os drivers ]
        [ FDirName $(HAIKU_TOP) headers build os kernel ]
diff --git a/headers/build/os/add-ons/registrar/MimeSnifferAddon.h 
b/headers/build/os/add-ons/registrar/MimeSnifferAddon.h
new file mode 100644
index 0000000..70a0364
--- /dev/null
+++ b/headers/build/os/add-ons/registrar/MimeSnifferAddon.h
@@ -0,0 +1 @@
+#include <../os/add-ons/registrar/MimeSnifferAddon.h>
diff --git a/headers/build/private/storage/mime/MimeSnifferAddonManager.h 
b/headers/build/private/storage/mime/MimeSnifferAddonManager.h
new file mode 100644
index 0000000..6e654ca
--- /dev/null
+++ b/headers/build/private/storage/mime/MimeSnifferAddonManager.h
@@ -0,0 +1 @@
+#include <../../../private/storage/mime/MimeSnifferAddonManager.h>
diff --git a/headers/build/private/storage/mime/TextSnifferAddon.h 
b/headers/build/private/storage/mime/TextSnifferAddon.h
new file mode 100644
index 0000000..4cd3774
--- /dev/null
+++ b/headers/build/private/storage/mime/TextSnifferAddon.h
@@ -0,0 +1 @@
+#include <../../../private/storage/mime/TextSnifferAddon.h>
diff --git a/src/bin/mimeset.cpp b/src/bin/mimeset.cpp
index 17c0d36..18f5b76 100644
--- a/src/bin/mimeset.cpp
+++ b/src/bin/mimeset.cpp
@@ -17,6 +17,8 @@
 #include <mime/Database.h>
 #include <mime/DatabaseLocation.h>
 #include <mime/MimeInfoUpdater.h>
+#include <mime/MimeSnifferAddonManager.h>
+#include <mime/TextSnifferAddon.h>
 
 
 using namespace BPrivate::Storage::Mime;
@@ -204,13 +206,24 @@ main(int argc, const char** argv)
                for (int32 i = 0; i < count; i++)
                        
databaseLocation.AddDirectory(databaseDirectories.StringAt(i));
 
-               sDatabase = new(std::nothrow) Database(&databaseLocation, NULL, 
NULL);
+               status_t error = MimeSnifferAddonManager::CreateDefault();
+               if (error != B_OK) {
+                       fprintf(stderr, "%s: Failed to create MIME sniffer 
add-on "
+                               "manager: %s\n", sProgramName, strerror(error));
+                       exit(1);
+               }
+               MimeSnifferAddonManager* manager = 
MimeSnifferAddonManager::Default();
+               manager->AddMimeSnifferAddon(
+                       new(std::nothrow) TextSnifferAddon(&databaseLocation));
+
+               sDatabase = new(std::nothrow) Database(&databaseLocation, 
manager,
+                       NULL);
                if (sDatabase == NULL) {
                        fprintf(stderr, "%s: Out of memory!\n", sProgramName);
                        exit(1);
                }
 
-               status_t error = sDatabase->InitCheck();
+               error = sDatabase->InitCheck();
                if (error != B_OK) {
                        fprintf(stderr, "%s: Failed to init MIME DB: %s\n", 
sProgramName,
                                strerror(error));
diff --git a/src/build/libbe/storage/Jamfile b/src/build/libbe/storage/Jamfile
index 27d02b1..da3e194 100644
--- a/src/build/libbe/storage/Jamfile
+++ b/src/build/libbe/storage/Jamfile
@@ -45,9 +45,12 @@ BuildPlatformMergeObjectPIC <libbe_build>storage_kit.o :
        MimeEntryProcessor.cpp
        MimeInfoUpdater.cpp
        MimeSniffer.cpp
+       MimeSnifferAddon.cpp
+       MimeSnifferAddonManager.cpp
        SnifferRules.cpp
        Supertype.cpp
        SupportingApps.cpp
+       TextSnifferAddon.cpp
 
        # sniffer
        CharStream.cpp


Other related posts: