152a38012Sejakowatz //-------------------------------------------------------------------------
252a38012Sejakowatz // Handy InputFilter that dumps all Messages to a file.
352a38012Sejakowatz //-------------------------------------------------------------------------
452a38012Sejakowatz #include <stdlib.h>
552a38012Sejakowatz #include <string.h>
652a38012Sejakowatz #include <ctype.h>
752a38012Sejakowatz
852a38012Sejakowatz #include <Debug.h>
952a38012Sejakowatz #include <List.h>
1052a38012Sejakowatz #include <File.h>
1152a38012Sejakowatz #include <Message.h>
1252a38012Sejakowatz #include <String.h>
1352a38012Sejakowatz #include <OS.h>
1452a38012Sejakowatz
1552a38012Sejakowatz #include <add-ons/input_server/InputServerFilter.h>
1652a38012Sejakowatz
1752a38012Sejakowatz extern "C" _EXPORT BInputServerFilter* instantiate_input_filter();
1852a38012Sejakowatz
1952a38012Sejakowatz class MsgSpy : public BInputServerFilter
2052a38012Sejakowatz {
2152a38012Sejakowatz public:
2252a38012Sejakowatz MsgSpy();
2352a38012Sejakowatz virtual ~MsgSpy();
2452a38012Sejakowatz
2552a38012Sejakowatz virtual status_t InitCheck(void);
2652a38012Sejakowatz virtual filter_result Filter(BMessage *message, BList *outList);
2752a38012Sejakowatz private:
2852a38012Sejakowatz const char* MapWhatToString(uint32 w);
2952a38012Sejakowatz void OutputMsgField(const char* fieldName,
3052a38012Sejakowatz const uint32 rawType,
3152a38012Sejakowatz int rawCount,
3252a38012Sejakowatz const void* rawData);
3352a38012Sejakowatz
3452a38012Sejakowatz status_t m_status;
3552a38012Sejakowatz BFile* m_outfile;
3652a38012Sejakowatz };
3752a38012Sejakowatz
3852a38012Sejakowatz //-------------------------------------------------------------------------
3952a38012Sejakowatz // Create a new MsgSpy instance and return it to the caller.
4052a38012Sejakowatz //-------------------------------------------------------------------------
instantiate_input_filter()4152a38012Sejakowatz BInputServerFilter* instantiate_input_filter()
4252a38012Sejakowatz {
4352a38012Sejakowatz return (new MsgSpy() );
4452a38012Sejakowatz }
4552a38012Sejakowatz
4652a38012Sejakowatz
4752a38012Sejakowatz //-------------------------------------------------------------------------
4852a38012Sejakowatz //-------------------------------------------------------------------------
MsgSpy()4952a38012Sejakowatz MsgSpy::MsgSpy()
5052a38012Sejakowatz {
5152a38012Sejakowatz // Create the output file and return its status.
5252a38012Sejakowatz m_outfile = new BFile("/boot/home/MsgSpy.output", B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
5352a38012Sejakowatz //m_status = m_outfile->InitCheck();
5452a38012Sejakowatz m_status = B_OK;
5552a38012Sejakowatz }
5652a38012Sejakowatz
5752a38012Sejakowatz //-------------------------------------------------------------------------
5852a38012Sejakowatz //-------------------------------------------------------------------------
~MsgSpy()5952a38012Sejakowatz MsgSpy::~MsgSpy()
6052a38012Sejakowatz {
6152a38012Sejakowatz if (NULL != m_outfile)
6252a38012Sejakowatz {
6352a38012Sejakowatz // Close and destroy the output file.
6452a38012Sejakowatz delete m_outfile;
6552a38012Sejakowatz }
6652a38012Sejakowatz }
6752a38012Sejakowatz
6852a38012Sejakowatz //-------------------------------------------------------------------------
6952a38012Sejakowatz //-------------------------------------------------------------------------
InitCheck(void)7052a38012Sejakowatz status_t MsgSpy::InitCheck(void)
7152a38012Sejakowatz {
7252a38012Sejakowatz return m_status;
7352a38012Sejakowatz }
7452a38012Sejakowatz
7552a38012Sejakowatz //-------------------------------------------------------------------------
7652a38012Sejakowatz //-------------------------------------------------------------------------
Filter(BMessage * message,BList * outList)7752a38012Sejakowatz filter_result MsgSpy::Filter(BMessage *message, BList *outList)
7852a38012Sejakowatz {
7952a38012Sejakowatz char* field_name;
8052a38012Sejakowatz uint32 field_type;
8152a38012Sejakowatz int32 field_count;
8252a38012Sejakowatz const void* field_data;
8352a38012Sejakowatz ssize_t field_data_bytes;
8452a38012Sejakowatz char msg_buffer [1024];
8552a38012Sejakowatz
8652a38012Sejakowatz // Print out the message constant (what).
8752a38012Sejakowatz sprintf(msg_buffer, "%s\n", MapWhatToString(message->what) );
8852a38012Sejakowatz m_outfile->Write(msg_buffer, strlen(msg_buffer) );
8952a38012Sejakowatz
9052a38012Sejakowatz // Display each field in the message.
9152a38012Sejakowatz sprintf(msg_buffer, "{\n");
9252a38012Sejakowatz m_outfile->Write(msg_buffer, strlen(msg_buffer) );
9352a38012Sejakowatz for (int32 i = 0; B_OK == message->GetInfo(B_ANY_TYPE,
9452a38012Sejakowatz i,
9552a38012Sejakowatz &field_name,
9652a38012Sejakowatz &field_type,
9752a38012Sejakowatz &field_count); i++)
9852a38012Sejakowatz {
9952a38012Sejakowatz message->FindData(field_name, field_type, &field_data, &field_data_bytes);
10052a38012Sejakowatz OutputMsgField(field_name, field_type, field_count, field_data);
10152a38012Sejakowatz }
10252a38012Sejakowatz sprintf(msg_buffer, "}\n");
10352a38012Sejakowatz m_outfile->Write(msg_buffer, strlen(msg_buffer) );
10452a38012Sejakowatz
10552a38012Sejakowatz return (B_DISPATCH_MESSAGE);
10652a38012Sejakowatz }
10752a38012Sejakowatz
10852a38012Sejakowatz //-------------------------------------------------------------------------
10952a38012Sejakowatz //-------------------------------------------------------------------------
MapWhatToString(uint32 w)11052a38012Sejakowatz const char* MsgSpy::MapWhatToString(uint32 w)
11152a38012Sejakowatz {
11252a38012Sejakowatz const char* s;
11352a38012Sejakowatz switch (w)
11452a38012Sejakowatz {
11552a38012Sejakowatz // Pointing device event messages.
11652a38012Sejakowatz case B_MOUSE_DOWN: s = "B_MOUSE_DOWN"; break;
11752a38012Sejakowatz case B_MOUSE_UP: s = "B_MOUSE_UP"; break;
11852a38012Sejakowatz case B_MOUSE_MOVED: s = "B_MOUSE_MOVED"; break;
119*697ba202SJérôme Duval case B_MOUSE_WHEEL_CHANGED: s = "B_MOUSE_WHEEL_CHANGED"; break;
12052a38012Sejakowatz
12152a38012Sejakowatz // Keyboard device event messages.
12252a38012Sejakowatz case B_KEY_DOWN: s = "B_KEY_DOWN"; break;
12352a38012Sejakowatz case B_UNMAPPED_KEY_DOWN: s = "B_UNMAPPED_KEY_DOWN"; break;
12452a38012Sejakowatz case B_KEY_UP: s = "B_KEY_UP"; break;
12552a38012Sejakowatz case B_UNMAPPED_KEY_UP: s = "B_UNMAPPED_KEY_UP"; break;
12652a38012Sejakowatz case B_MODIFIERS_CHANGED: s = "B_MODIFIERS_CHANGED"; break;
12752a38012Sejakowatz
128*697ba202SJérôme Duval case B_INPUT_METHOD_EVENT: s = "B_INPUT_METHOD_EVENT"; break;
12952a38012Sejakowatz default: s = "UNKNOWN_MESSAGE"; break;
13052a38012Sejakowatz }
13152a38012Sejakowatz return s;
13252a38012Sejakowatz }
13352a38012Sejakowatz
13452a38012Sejakowatz //-------------------------------------------------------------------------
13552a38012Sejakowatz //-------------------------------------------------------------------------
OutputMsgField(const char * fieldName,const uint32 rawType,int rawCount,const void * rawData)13652a38012Sejakowatz void MsgSpy::OutputMsgField(const char* fieldName,
13752a38012Sejakowatz const uint32 rawType,
13852a38012Sejakowatz int rawCount,
13952a38012Sejakowatz const void* rawData)
14052a38012Sejakowatz {
14152a38012Sejakowatz char msg_buffer [1024];
14252a38012Sejakowatz char value_buffer [256];
14352a38012Sejakowatz BString field_data;
14452a38012Sejakowatz const char* field_type;
14552a38012Sejakowatz const int field_count = rawCount;
14652a38012Sejakowatz const char* separator;
14752a38012Sejakowatz
14852a38012Sejakowatz switch (rawType)
14952a38012Sejakowatz {
15052a38012Sejakowatz case B_CHAR_TYPE:
15152a38012Sejakowatz {
15252a38012Sejakowatz field_type = "B_CHAR_TYPE";
15352a38012Sejakowatz field_data << "{ ";
15452a38012Sejakowatz for (const char* data_ptr = (const char*)rawData;
15552a38012Sejakowatz rawCount > 0;
15652a38012Sejakowatz rawCount--, data_ptr++)
15752a38012Sejakowatz {
15852a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
15952a38012Sejakowatz field_data << *data_ptr << separator;
16052a38012Sejakowatz }
16152a38012Sejakowatz break;
16252a38012Sejakowatz }
16352a38012Sejakowatz
16452a38012Sejakowatz case B_INT8_TYPE:
16552a38012Sejakowatz {
16652a38012Sejakowatz field_type = "B_INT8_TYPE";
16752a38012Sejakowatz field_data << "{ ";
16852a38012Sejakowatz for (const int8* data_ptr = (const int8*)rawData;
16952a38012Sejakowatz rawCount > 0;
17052a38012Sejakowatz rawCount--, data_ptr++)
17152a38012Sejakowatz {
17252a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
17352a38012Sejakowatz field_data << *data_ptr << separator;
17452a38012Sejakowatz }
17552a38012Sejakowatz break;
17652a38012Sejakowatz }
17752a38012Sejakowatz
17852a38012Sejakowatz case B_INT16_TYPE:
17952a38012Sejakowatz {
18052a38012Sejakowatz field_type = "B_INT16_TYPE";
18152a38012Sejakowatz field_data << "{ ";
18252a38012Sejakowatz for (const int16* data_ptr = (const int16*)rawData;
18352a38012Sejakowatz rawCount > 0;
18452a38012Sejakowatz rawCount--, data_ptr++)
18552a38012Sejakowatz {
18652a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
18752a38012Sejakowatz field_data << *data_ptr << separator;
18852a38012Sejakowatz }
18952a38012Sejakowatz break;
19052a38012Sejakowatz }
19152a38012Sejakowatz
19252a38012Sejakowatz case B_INT32_TYPE:
19352a38012Sejakowatz {
19452a38012Sejakowatz field_type = "B_INT32_TYPE";
19552a38012Sejakowatz field_data << "{ ";
19652a38012Sejakowatz for (const int32* data_ptr = (const int32*)rawData;
19752a38012Sejakowatz rawCount > 0;
19852a38012Sejakowatz rawCount--, data_ptr++)
19952a38012Sejakowatz {
20052a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
20152a38012Sejakowatz field_data << *data_ptr << separator;
20252a38012Sejakowatz }
20352a38012Sejakowatz break;
20452a38012Sejakowatz }
20552a38012Sejakowatz
20652a38012Sejakowatz case B_INT64_TYPE:
20752a38012Sejakowatz {
20852a38012Sejakowatz field_type = "B_INT64_TYPE";
20952a38012Sejakowatz field_data << "{ ";
21052a38012Sejakowatz for (const int64* data_ptr = (const int64*)rawData;
21152a38012Sejakowatz rawCount > 0;
21252a38012Sejakowatz rawCount--, data_ptr++)
21352a38012Sejakowatz {
21452a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
21552a38012Sejakowatz field_data << *data_ptr << separator;
21652a38012Sejakowatz }
21752a38012Sejakowatz break;
21852a38012Sejakowatz }
21952a38012Sejakowatz
22052a38012Sejakowatz case B_UINT8_TYPE:
22152a38012Sejakowatz {
22252a38012Sejakowatz field_type = "B_UINT8_TYPE";
22352a38012Sejakowatz field_data << "{ ";
22452a38012Sejakowatz for (const uint8* data_ptr = (const uint8*)rawData;
22552a38012Sejakowatz rawCount > 0;
22652a38012Sejakowatz rawCount--, data_ptr++)
22752a38012Sejakowatz {
22852a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
22952a38012Sejakowatz field_data << (uint32)(*data_ptr) << separator;
23052a38012Sejakowatz }
23152a38012Sejakowatz break;
23252a38012Sejakowatz }
23352a38012Sejakowatz
23452a38012Sejakowatz case B_UINT16_TYPE:
23552a38012Sejakowatz {
23652a38012Sejakowatz field_type = "B_UINT16_TYPE";
23752a38012Sejakowatz field_data << "{ ";
23852a38012Sejakowatz for (const uint16* data_ptr = (const uint16*)rawData;
23952a38012Sejakowatz rawCount > 0;
24052a38012Sejakowatz rawCount--, data_ptr++)
24152a38012Sejakowatz {
24252a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
24352a38012Sejakowatz field_data << (uint32)(*data_ptr) << separator;
24452a38012Sejakowatz }
24552a38012Sejakowatz break;
24652a38012Sejakowatz }
24752a38012Sejakowatz
24852a38012Sejakowatz case B_UINT32_TYPE:
24952a38012Sejakowatz {
25052a38012Sejakowatz field_type = "B_UINT32_TYPE";
25152a38012Sejakowatz field_data << "{ ";
25252a38012Sejakowatz for (const uint32* data_ptr = (const uint32*)rawData;
25352a38012Sejakowatz rawCount > 0;
25452a38012Sejakowatz rawCount--, data_ptr++)
25552a38012Sejakowatz {
25652a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
25752a38012Sejakowatz field_data << *data_ptr << separator;
25852a38012Sejakowatz }
25952a38012Sejakowatz break;
26052a38012Sejakowatz }
26152a38012Sejakowatz
26252a38012Sejakowatz case B_UINT64_TYPE:
26352a38012Sejakowatz {
26452a38012Sejakowatz field_type = "B_UINT64_TYPE";
26552a38012Sejakowatz field_data << "{ ";
26652a38012Sejakowatz for (const uint64* data_ptr = (const uint64*)rawData;
26752a38012Sejakowatz rawCount > 0;
26852a38012Sejakowatz rawCount--, data_ptr++)
26952a38012Sejakowatz {
27052a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
27152a38012Sejakowatz field_data << *data_ptr << separator;
27252a38012Sejakowatz }
27352a38012Sejakowatz break;
27452a38012Sejakowatz }
27552a38012Sejakowatz
27652a38012Sejakowatz case B_FLOAT_TYPE:
27752a38012Sejakowatz {
27852a38012Sejakowatz field_type = "B_FLOAT_TYPE";
27952a38012Sejakowatz field_data << "{ ";
28052a38012Sejakowatz for (const float* data_ptr = (const float*)rawData;
28152a38012Sejakowatz rawCount > 0;
28252a38012Sejakowatz rawCount--, data_ptr++)
28352a38012Sejakowatz {
28452a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
28552a38012Sejakowatz field_data << *data_ptr << separator;
28652a38012Sejakowatz }
28752a38012Sejakowatz break;
28852a38012Sejakowatz }
28952a38012Sejakowatz
29052a38012Sejakowatz case B_DOUBLE_TYPE:
29152a38012Sejakowatz {
29252a38012Sejakowatz field_type = "B_DOUBLE_TYPE";
29352a38012Sejakowatz field_data << "{ ";
29452a38012Sejakowatz for (const double* data_ptr = (const double*)rawData;
29552a38012Sejakowatz rawCount > 0;
29652a38012Sejakowatz rawCount--, data_ptr++)
29752a38012Sejakowatz {
29852a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
29952a38012Sejakowatz sprintf(value_buffer, "%f", *data_ptr);
30052a38012Sejakowatz field_data << value_buffer << separator;
30152a38012Sejakowatz }
30252a38012Sejakowatz break;
30352a38012Sejakowatz }
30452a38012Sejakowatz
30552a38012Sejakowatz case B_BOOL_TYPE:
30652a38012Sejakowatz {
30752a38012Sejakowatz field_type = "B_BOOL_TYPE";
30852a38012Sejakowatz field_data << "{ ";
30952a38012Sejakowatz for (const bool* data_ptr = (const bool*)rawData;
31052a38012Sejakowatz rawCount > 0;
31152a38012Sejakowatz rawCount--, data_ptr++)
31252a38012Sejakowatz {
31352a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
31452a38012Sejakowatz sprintf(value_buffer, "%s", (true == *data_ptr) ? "true" : "false");
31552a38012Sejakowatz field_data << value_buffer << separator;
31652a38012Sejakowatz }
31752a38012Sejakowatz break;
31852a38012Sejakowatz }
31952a38012Sejakowatz
32052a38012Sejakowatz case B_OFF_T_TYPE:
32152a38012Sejakowatz {
32252a38012Sejakowatz field_type = "B_OFF_T_TYPE";
32352a38012Sejakowatz field_data << "{ ";
32452a38012Sejakowatz for (const off_t* data_ptr = (const off_t*)rawData;
32552a38012Sejakowatz rawCount > 0;
32652a38012Sejakowatz rawCount--, data_ptr++)
32752a38012Sejakowatz {
32852a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
32952a38012Sejakowatz field_data << *data_ptr << separator;
33052a38012Sejakowatz }
33152a38012Sejakowatz break;
33252a38012Sejakowatz }
33352a38012Sejakowatz
33452a38012Sejakowatz case B_SIZE_T_TYPE:
33552a38012Sejakowatz {
33652a38012Sejakowatz field_type = "B_SIZE_T_TYPE";
33752a38012Sejakowatz field_data << "{ ";
33852a38012Sejakowatz for (const size_t* data_ptr = (const size_t*)rawData;
33952a38012Sejakowatz rawCount > 0;
34052a38012Sejakowatz rawCount--, data_ptr++)
34152a38012Sejakowatz {
34252a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
34352a38012Sejakowatz field_data << *data_ptr << separator;
34452a38012Sejakowatz }
34552a38012Sejakowatz break;
34652a38012Sejakowatz }
34752a38012Sejakowatz
34852a38012Sejakowatz case B_SSIZE_T_TYPE:
34952a38012Sejakowatz {
35052a38012Sejakowatz field_type = "B_SSIZE_T_TYPE";
35152a38012Sejakowatz field_data << "{ ";
35252a38012Sejakowatz for (const ssize_t* data_ptr = (const ssize_t*)rawData;
35352a38012Sejakowatz rawCount > 0;
35452a38012Sejakowatz rawCount--, data_ptr++)
35552a38012Sejakowatz {
35652a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
35752a38012Sejakowatz field_data << *data_ptr << separator;
35852a38012Sejakowatz }
35952a38012Sejakowatz break;
36052a38012Sejakowatz }
36152a38012Sejakowatz
36252a38012Sejakowatz case B_POINTER_TYPE:
36352a38012Sejakowatz {
36452a38012Sejakowatz field_type = "B_POINTER_TYPE";
36552a38012Sejakowatz break;
36652a38012Sejakowatz }
36752a38012Sejakowatz
36852a38012Sejakowatz case B_OBJECT_TYPE:
36952a38012Sejakowatz {
37052a38012Sejakowatz field_type = "B_OBJECT_TYPE";
37152a38012Sejakowatz break;
37252a38012Sejakowatz }
37352a38012Sejakowatz
37452a38012Sejakowatz case B_MESSAGE_TYPE:
37552a38012Sejakowatz {
37652a38012Sejakowatz field_type = "B_MESSAGE_TYPE";
37752a38012Sejakowatz break;
37852a38012Sejakowatz }
37952a38012Sejakowatz
38052a38012Sejakowatz case B_MESSENGER_TYPE:
38152a38012Sejakowatz {
38252a38012Sejakowatz field_type = "B_MESSENGER_TYPE";
38352a38012Sejakowatz break;
38452a38012Sejakowatz }
38552a38012Sejakowatz
38652a38012Sejakowatz case B_POINT_TYPE:
38752a38012Sejakowatz {
38852a38012Sejakowatz field_type = "B_POINT_TYPE";
38952a38012Sejakowatz field_data << "{ ";
39052a38012Sejakowatz for (const BPoint* data_ptr = (const BPoint*)rawData;
39152a38012Sejakowatz rawCount > 0;
39252a38012Sejakowatz rawCount--, data_ptr++)
39352a38012Sejakowatz {
39452a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
39552a38012Sejakowatz field_data << "(" << data_ptr->x << ", " << data_ptr->y << ")" << separator;
39652a38012Sejakowatz }
39752a38012Sejakowatz break;
39852a38012Sejakowatz }
39952a38012Sejakowatz
40052a38012Sejakowatz case B_RECT_TYPE:
40152a38012Sejakowatz {
40252a38012Sejakowatz field_type = "B_RECT_TYPE";
40352a38012Sejakowatz break;
40452a38012Sejakowatz }
40552a38012Sejakowatz
40652a38012Sejakowatz // case B_PATH_TYPE: s = "B_PATH_TYPE"; break;
40752a38012Sejakowatz
40852a38012Sejakowatz case B_REF_TYPE:
40952a38012Sejakowatz {
41052a38012Sejakowatz field_type = "B_REF_TYPE";
41152a38012Sejakowatz break;
41252a38012Sejakowatz }
41352a38012Sejakowatz
41452a38012Sejakowatz case B_RGB_COLOR_TYPE:
41552a38012Sejakowatz {
41652a38012Sejakowatz field_type = "B_RGB_COLOR_TYPE";
41752a38012Sejakowatz break;
41852a38012Sejakowatz }
41952a38012Sejakowatz
42052a38012Sejakowatz case B_PATTERN_TYPE:
42152a38012Sejakowatz {
42252a38012Sejakowatz field_type = "B_PATTERN_TYPE";
42352a38012Sejakowatz break;
42452a38012Sejakowatz }
42552a38012Sejakowatz
42652a38012Sejakowatz case B_STRING_TYPE:
42752a38012Sejakowatz {
42852a38012Sejakowatz field_type = "B_STRING_TYPE";
42952a38012Sejakowatz field_data << "{ ";
43052a38012Sejakowatz for (const char* data_ptr = (const char*)rawData;
43152a38012Sejakowatz rawCount > 0;
43252a38012Sejakowatz rawCount--, data_ptr+= strlen(data_ptr) )
43352a38012Sejakowatz {
43452a38012Sejakowatz separator = (1 < rawCount) ? ", " : " }";
43552a38012Sejakowatz field_data << "\"" << data_ptr << "\"" << separator;
43652a38012Sejakowatz }
43752a38012Sejakowatz break;
43852a38012Sejakowatz }
43952a38012Sejakowatz
44052a38012Sejakowatz case B_MONOCHROME_1_BIT_TYPE:
44152a38012Sejakowatz {
44252a38012Sejakowatz field_type = "B_MONOCHROME_1_BIT_TYPE";
44352a38012Sejakowatz break;
44452a38012Sejakowatz }
44552a38012Sejakowatz
44652a38012Sejakowatz case B_GRAYSCALE_8_BIT_TYPE:
44752a38012Sejakowatz {
44852a38012Sejakowatz field_type = "B_GRAYSCALE_8_BIT_TYPE";
44952a38012Sejakowatz break;
45052a38012Sejakowatz }
45152a38012Sejakowatz
45252a38012Sejakowatz case B_COLOR_8_BIT_TYPE:
45352a38012Sejakowatz {
45452a38012Sejakowatz field_type = "B_COLOR_8_BIT_TYPE";
45552a38012Sejakowatz break;
45652a38012Sejakowatz }
45752a38012Sejakowatz
45852a38012Sejakowatz case B_RGB_32_BIT_TYPE:
45952a38012Sejakowatz {
46052a38012Sejakowatz field_type = "B_RGB_32_BIT_TYPE";
46152a38012Sejakowatz break;
46252a38012Sejakowatz }
46352a38012Sejakowatz
46452a38012Sejakowatz case B_TIME_TYPE:
46552a38012Sejakowatz {
46652a38012Sejakowatz field_type = "B_TIME_TYPE";
46752a38012Sejakowatz break;
46852a38012Sejakowatz }
46952a38012Sejakowatz
47052a38012Sejakowatz case B_MEDIA_PARAMETER_TYPE:
47152a38012Sejakowatz {
47252a38012Sejakowatz field_type = "B_MEDIA_PARAMETER_TYPE";
47352a38012Sejakowatz break;
47452a38012Sejakowatz }
47552a38012Sejakowatz
47652a38012Sejakowatz case B_MEDIA_PARAMETER_WEB_TYPE:
47752a38012Sejakowatz {
47852a38012Sejakowatz field_type = "B_MEDIA_PARAMETER_WEB_TYPE";
47952a38012Sejakowatz break;
48052a38012Sejakowatz }
48152a38012Sejakowatz
48252a38012Sejakowatz case B_MEDIA_PARAMETER_GROUP_TYPE:
48352a38012Sejakowatz {
48452a38012Sejakowatz field_type = "B_MEDIA_PARAMETER_GROUP_TYPE";
48552a38012Sejakowatz break;
48652a38012Sejakowatz }
48752a38012Sejakowatz
48852a38012Sejakowatz case B_RAW_TYPE:
48952a38012Sejakowatz {
49052a38012Sejakowatz field_type = "B_RAW_TYPE";
49152a38012Sejakowatz break;
49252a38012Sejakowatz }
49352a38012Sejakowatz
49452a38012Sejakowatz case B_MIME_TYPE:
49552a38012Sejakowatz {
49652a38012Sejakowatz field_type = "B_MIME_TYPE";
49752a38012Sejakowatz break;
49852a38012Sejakowatz }
49952a38012Sejakowatz
50052a38012Sejakowatz case B_ANY_TYPE:
50152a38012Sejakowatz {
50252a38012Sejakowatz field_type = "B_ANY_TYPE";
50352a38012Sejakowatz break;
50452a38012Sejakowatz }
50552a38012Sejakowatz
50652a38012Sejakowatz default:
50752a38012Sejakowatz {
50852a38012Sejakowatz field_type = "UNKNOWN_TYPE";
50952a38012Sejakowatz break;
51052a38012Sejakowatz }
51152a38012Sejakowatz }
51252a38012Sejakowatz
51352a38012Sejakowatz sprintf(msg_buffer,
51452a38012Sejakowatz " %-18s %-18s [%2d] = %s\n",
51552a38012Sejakowatz field_type,
51652a38012Sejakowatz fieldName,
51752a38012Sejakowatz field_count,
51852a38012Sejakowatz field_data.String() );
51952a38012Sejakowatz
52052a38012Sejakowatz m_outfile->Write(msg_buffer, strlen(msg_buffer) );
52152a38012Sejakowatz }
522