* Turned off unconditional debug output in the RosterSettingsCharStream class.

* Replaced some DBG(OUT) debug output with the registrar's global one.
* Cleanup, mostly whitespace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34305 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2009-11-27 11:52:18 +00:00
parent b9d85c1270
commit ae4d11e97f
4 changed files with 227 additions and 204 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2001-2006, Haiku Inc.
* Copyright 2001-2009, Haiku Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
@ -8,8 +8,10 @@
* Axel Dörfler, axeld@pinc-software.de
*/
//! Recently launched apps list
#include "RecentApps.h"
#include <tracker_private.h>
@ -24,25 +26,25 @@
#include <string.h>
#define DBG(x) (x)
//#define DBG(x)
#define OUT printf
#include "Debug.h"
/*! \class RecentApps
\brief Manages the roster's list of recently launched applications
*/
/*! \var std::list<std::string> RecentApps::fAppList
\brief The list of app sigs, most recent first
The signatures are expected to be stored all lowercase, as MIME
signatures are case-independent.
*/
/*! \brief Creates a new list.
The list is initially empty.
*/
RecentApps::RecentApps()
@ -61,10 +63,10 @@ RecentApps::~RecentApps()
/*! \brief Places the app with the given signature at the front of
the recent apps list.
If the app already exists elsewhere in the list, that item is
removed so only one instance exists in the list at any time.
\param appSig The application's signature
\param appFlags The application's flags. If \a appFlags contains
either \c B_ARGV_ONLY or \c B_BACKGROUND_APP, the
@ -109,7 +111,7 @@ RecentApps::Add(const char *appSig, int32 appFlags)
/*! \brief Adds the signature of the application referred to by \a ref at
the front of the recent apps list.
The entry is checked for a BEOS:APP_SIG attribute. If that fails, the
app's resources are checked. If no signature can be found, the call
fails.
@ -123,7 +125,7 @@ RecentApps::Add(const entry_ref *ref, int32 appFlags)
BFile file;
BAppFileInfo info;
char signature[B_MIME_TYPE_LENGTH];
status_t err = file.SetTo(ref, B_READ_ONLY);
if (!err)
err = info.SetTo(&file);
@ -137,16 +139,16 @@ RecentApps::Add(const entry_ref *ref, int32 appFlags)
/*! \brief Returns the first \a maxCount recent apps in the \c BMessage
pointed to by \a list.
The message is cleared first, and \c entry_refs for the the apps are
stored in the \c "refs" field of the message (\c B_REF_TYPE).
If there are fewer than \a maxCount items in the list, the entire
list is returned.
Since BRoster::GetRecentApps() returns \c void, the message pointed
to by \a list is simply cleared if maxCount is invalid (i.e. <= 0).
*/
*/
status_t
RecentApps::Get(int32 maxCount, BMessage *list)
{
@ -166,8 +168,10 @@ RecentApps::Get(int32 maxCount, BMessage *list)
entry_ref ref;
if (GetRefForApp(item->c_str(), &ref) == B_OK)
status = list->AddRef("refs", &ref);
else
DBG(OUT("WARNING: RecentApps::Get(): No ref found for app '%s'\n", item->c_str()));
else {
D(PRINT("WARNING: RecentApps::Get(): No ref found for app '%s'\n",
item->c_str()));
}
}
return status;
@ -180,7 +184,7 @@ status_t
RecentApps::Clear()
{
fAppList.clear();
return B_OK;
return B_OK;
}
@ -220,7 +224,7 @@ RecentApps::Save(FILE* file)
/*! \brief Fetches an \c entry_ref for the application with the
given signature.
First the MIME database is checked for a matching application type
with a valid app hint attribute. If that fails, a query is established
to track down such an application, if there is one available.
@ -235,8 +239,8 @@ RecentApps::GetRefForApp(const char *appSig, entry_ref *result)
// and Ingo's on vacation :-P :-)
BMimeType mime(appSig);
status_t err = mime.InitCheck();
if (!err)
if (!err)
err = mime.GetAppHint(result);
return err;
return err;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2001-2006, Haiku Inc.
* Copyright 2001-2009, Haiku Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
@ -8,10 +8,15 @@
* Axel Dörfler, axeld@pinc-software.de
*/
//! Recently launched apps list
#include "RecentEntries.h"
#include <new>
#include <map>
#include <AppFileInfo.h>
#include <Entry.h>
#include <File.h>
@ -20,17 +25,14 @@
#include <Path.h>
#include <Roster.h>
#include <String.h>
#include <storage_support.h>
#include <new>
#include <map>
#include "Debug.h"
using namespace std;
#define DBG(x) (x)
//#define DBG(x)
#define OUT printf
/*! \struct recent_entry
@ -38,7 +40,7 @@ using namespace std;
that launched/used/opened/viewed/whatevered it, and an index used for
keeping track of orderings when loading/storing the recent entries list
from/to disk.
*/
/*! \brief Creates a new recent_entry object.
@ -49,7 +51,7 @@ recent_entry::recent_entry(const entry_ref *ref, const char *appSig,
ref(ref ? *ref : entry_ref()),
sig(appSig),
index(index)
{
{
}
@ -64,14 +66,14 @@ recent_entry::recent_entry(const entry_ref *ref, const char *appSig,
/*! \var std::list<std::string> RecentEntries::fEntryList
\brief The list of entries and their corresponding app sigs, most recent first
The signatures are expected to be stored all lowercase, as MIME
signatures are case-independent.
*/
/*! \brief Creates a new list.
The list is initially empty.
*/
RecentEntries::RecentEntries()
@ -89,10 +91,10 @@ RecentEntries::~RecentEntries()
/*! \brief Places the given entry Places the app with the given signature at the front of
the recent apps list.
If the app already exists elsewhere in the list, that item is
removed so only one instance exists in the list at any time.
\param appSig The application's signature
\param appFlags The application's flags. If \a appFlags contains
either \c B_ARGV_ONLY or \c B_BACKGROUND_APP, the
@ -134,25 +136,25 @@ RecentEntries::Add(const entry_ref *ref, const char *appSig)
/*! \brief Returns the first \a maxCount recent apps in the \c BMessage
pointed to by \a list.
The message is cleared first, and \c entry_refs for the the apps are
stored in the \c "refs" field of the message (\c B_REF_TYPE).
If there are fewer than \a maxCount items in the list, the entire
list is returned.
Duplicate entries are never returned, i.e. if two instances of the
same entry were added under different app sigs, and both instances
match the given filter criterion, only the most recent instance is
returned; the latter instance is ignored and not counted towards
the \a maxCount number of entries to return.
Since BRoster::GetRecentEntries() returns \c void, the message pointed
to by \a list is simply cleared if maxCount is invalid (i.e. <= 0).
\param fileTypes An array of file type filters. These file types are
expected to be all lowercase.
*/
*/
status_t
RecentEntries::Get(int32 maxCount, const char *fileTypes[],
int32 fileTypesCount, const char *appSig, BMessage *result)
@ -181,7 +183,7 @@ RecentEntries::Get(int32 maxCount, const char *fileTypes[],
char type[B_MIME_TYPE_LENGTH];
if (GetTypeForRef(&(*item)->ref, type) == B_OK) {
bool match = false;
for (int i = 0; i < fileTypesCount; i++) {
for (int i = 0; i < fileTypesCount; i++) {
if (!strcasecmp(type, fileTypes[i])) {
match = true;
break;
@ -231,7 +233,7 @@ RecentEntries::Clear()
delete *i;
}
fEntryList.clear();
return B_OK;
return B_OK;
}
@ -243,9 +245,10 @@ RecentEntries::Print()
std::list<recent_entry*>::iterator item;
int counter = 1;
for (item = fEntryList.begin(); item != fEntryList.end(); item++) {
printf("%d: device == '%ld', dir == '%lld', name == '%s', app == '%s', index == %ld\n",
counter++, (*item)->ref.device, (*item)->ref.directory, (*item)->ref.name,
(*item)->sig.c_str(), (*item)->index);
printf("%d: device == '%ld', dir == '%lld', name == '%s', app == '%s', "
"index == %ld\n", counter++, (*item)->ref.device,
(*item)->ref.directory, (*item)->ref.name, (*item)->sig.c_str(),
(*item)->index);
}
return B_OK;
}
@ -268,7 +271,7 @@ RecentEntries::Save(FILE* file, const char *description, const char *tag)
change over time (whereas ours will). If our implementation
proves to be slower that R5, we may want to consider using
the data structure pervasively.
*/
*/
std::map<entry_ref, std::list<recent_entry*> > map;
uint32 count = fEntryList.size();
@ -278,12 +281,12 @@ RecentEntries::Save(FILE* file, const char *description, const char *tag)
recent_entry *entry = *item;
if (entry) {
entry->index = count;
map[entry->ref].push_back(entry);
map[entry->ref].push_back(entry);
} else {
DBG(OUT("WARNING: RecentEntries::Save(): The entry %ld entries "
"from the front of fEntryList was found to be NULL\n",
fEntryList.size() - count));
}
D(PRINT("WARNING: RecentEntries::Save(): The entry %ld entries "
"from the front of fEntryList was found to be NULL\n",
fEntryList.size() - count));
}
}
} catch (...) {
return B_NO_MEMORY;
@ -305,22 +308,22 @@ RecentEntries::Save(FILE* file, const char *description, const char *tag)
for (std::list<recent_entry*>::iterator item = list.begin();
item != list.end(); i++, item++) {
recent_entry *entry = *item;
if (entry)
if (entry)
fprintf(file, " \"%s\" %ld", entry->sig.c_str(), entry->index);
else {
DBG(OUT("WARNING: RecentEntries::Save(): The entry %ld entries "
"from the front of the compiled recent_entry* list for the "
"entry ref (%ld, %lld, '%s') was found to be NULL\n",
i, mapItem->first.device, mapItem->first.directory,
mapItem->first.name));
D(PRINT("WARNING: RecentEntries::Save(): The entry %ld "
"entries from the front of the compiled recent_entry* "
"list for the entry ref (%ld, %lld, '%s') was found to "
"be NULL\n", i, mapItem->first.device,
mapItem->first.directory, mapItem->first.name));
}
}
fprintf(file, "\n");
} else {
DBG(OUT("WARNING: RecentEntries::Save(): entry_ref_to_path() failed on "
"the entry_ref (%ld, %lld, '%s') with error 0x%lx\n",
mapItem->first.device, mapItem->first.directory,
mapItem->first.name, outputError));
D(PRINT("WARNING: RecentEntries::Save(): entry_ref_to_path() "
"failed on the entry_ref (%ld, %lld, '%s') with error 0x%lx\n",
mapItem->first.device, mapItem->first.directory,
mapItem->first.name, outputError));
}
}
@ -353,5 +356,5 @@ RecentEntries::GetTypeForRef(const entry_ref *ref, char *result)
result[bytes] = '\0';
}
return error;
return error;
}

View File

@ -1,3 +1,12 @@
/*
* Copyright 2002-2009, Haiku Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
* Tyler Dauwalder
*/
#include "RosterSettingsCharStream.h"
#include <sniffer/Err.h>
@ -5,6 +14,9 @@
#include <stdio.h>
#include "Debug.h"
const status_t RosterSettingsCharStream::kEndOfLine;
const status_t RosterSettingsCharStream::kEndOfStream;
const status_t RosterSettingsCharStream::kInvalidEscape;
@ -15,24 +27,26 @@ const status_t RosterSettingsCharStream::kStringTooLong;
using namespace BPrivate::Storage::Sniffer;
//------------------------------------------------------------------------------
// CharStream
//------------------------------------------------------------------------------
RosterSettingsCharStream::RosterSettingsCharStream(const std::string &string)
: CharStream(string)
:
CharStream(string)
{
}
RosterSettingsCharStream::RosterSettingsCharStream()
: CharStream()
:
CharStream()
{
}
RosterSettingsCharStream::~RosterSettingsCharStream()
{
}
/*! \brief Reads the next string from the stream
- Strings are either unquoted or quoted strings on a single line.
@ -53,12 +67,12 @@ RosterSettingsCharStream::~RosterSettingsCharStream()
characters they represent before being stored in the result.
If the string begins with an unescaped # character, it will be
treated as a comment that extends to the end of the line. #
characters may appear unescaped anywhere else in the string.
characters may appear unescaped anywhere else in the string.
- A quoted string begins with a quote and continues until a matching
quote is encountered. If a newline is found before that point,
kEndOfLine is returned. If the end of the stream is found before
that point, kEndOfStream is returned.
\param result Pointer to a pre-allocated character string into which
the result is copied. Since all strings to be read from
the RosterSettings file are filenames, mime strings, or
@ -67,7 +81,7 @@ RosterSettingsCharStream::~RosterSettingsCharStream()
discovered to be longer, reading is aborted and an
error code is returned.
\return
*/
*/
status_t
RosterSettingsCharStream::GetString(char *result)
{
@ -76,21 +90,21 @@ RosterSettingsCharStream::GetString(char *result)
error = InitCheck();
if (error)
return error;
enum RosterSettingsScannerState {
rsssStart,
rsssUnquoted,
rsssQuoted,
rsssEscape,
};
RosterSettingsScannerState state = rsssStart;
RosterSettingsScannerState escapedState = rsssStart;
bool keepLooping = true;
ssize_t resultPos = 0;
char quote = '\0';
while (keepLooping) {
if (resultPos >= B_PATH_NAME_LENGTH) {
error = kStringTooLong;
@ -99,14 +113,14 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
char ch = Get();
switch (state) {
switch (state) {
case rsssStart:
switch (ch) {
case '#':
error = kComment;
keepLooping = false;
break;
case '\t':
case ' ':
// Acceptable whitespace, so ignore it.
@ -117,20 +131,20 @@ RosterSettingsCharStream::GetString(char *result)
error = kEndOfLine;
keepLooping = false;
break;
case '\\':
// Escape sequence
escapedState = rsssUnquoted;
state = rsssEscape;
break;
case '\'':
case '"':
// Valid quote
quote = ch;
state = rsssQuoted;
break;
case 0x3:
// End-Of-Text
if (IsEmpty()) {
@ -139,7 +153,7 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
// else fall through...
default:
// Valid unquoted character
result[resultPos++] = ch;
@ -147,7 +161,7 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
break;
case rsssUnquoted:
switch (ch) {
case '\t':
@ -161,13 +175,13 @@ RosterSettingsCharStream::GetString(char *result)
error = kEndOfLine;
keepLooping = false;
break;
case '\\':
// Escape sequence
escapedState = state;
state = rsssEscape;
break;
case 0x3:
// End-Of-Text
if (IsEmpty()) {
@ -176,45 +190,45 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
// else fall through...
case '#':
// comments must begin the string, thus
// this char also falls through...
default:
// Valid unquoted character
result[resultPos++] = ch;
break;
}
break;
case rsssQuoted:
if (ch == quote) {
// Terminating quote
keepLooping = false;
} else {
switch (ch) {
switch (ch) {
case '\n':
// End of line
error = kUnterminatedQuotedString;
keepLooping = false;
break;
case '\\':
// Escape sequence
escapedState = state;
state = rsssEscape;
break;
case 0x3:
// End-Of-Text
if (IsEmpty()) {
error = kEndOfStream;
keepLooping = false;
break;
}
}
// else fall through...
default:
// Valid quoted character
result[resultPos++] = ch;
@ -222,7 +236,7 @@ RosterSettingsCharStream::GetString(char *result)
}
}
break;
case rsssEscape:
switch (ch) {
case '\n':
@ -230,7 +244,7 @@ RosterSettingsCharStream::GetString(char *result)
error = kInvalidEscape;
keepLooping = false;
break;
case 0x3:
// End-Of-Text
if (IsEmpty()) {
@ -239,14 +253,14 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
// else fall through...
default:
// Valid unquoted character
result[resultPos++] = ch;
state = escapedState;
break;
break;
}
break;
break;
default:
error = kUnexpectedState;
@ -254,7 +268,7 @@ RosterSettingsCharStream::GetString(char *result)
break;
}
}
// Read past any comments
if (error == kComment) {
// Read to the end of the line. If a valid read still occured,
@ -267,7 +281,7 @@ RosterSettingsCharStream::GetString(char *result)
}
// Replace the newline if the comment was hit immediately
// preceding the unquoted string
if (state == rsssUnquoted)
if (state == rsssUnquoted)
Unget();
error = ch == '\n' ? kEndOfLine : kEndOfStream;
}
@ -277,20 +291,21 @@ RosterSettingsCharStream::GetString(char *result)
Unget();
error = B_OK;
}
// NULL terminate regardless
result[resultPos] = '\0';
printf("error == 0x%lx, result == '%s'\n", error, result);
return error;
D(PRINT("error == 0x%lx, result == '%s'\n", error, result));
return error;
}
/*! \brief Reads past any remaining characters on the current line.
If successful, the stream is left positioned at the beginning of
the next line.
\return
- \c B_OK: success
- kEndOfStream: The end of the stream was reached.
@ -307,107 +322,107 @@ RosterSettingsCharStream::SkipLine()
}
}
const char *roster_settings_icons =
"\xa1\xa5\x9d\xd6\xac\x98\x83\xaa\x5f\xcb\x9b\x9a\xa3\xb1\xaa\xa7"
"\xb1\xb2\x58\xca\xb2\xa0\xa9\x57\xde\xc7\xc4\xc6\x59\xb5\xbd\xa5"
"\x9b\x9f\x97\xd0\xa6\x92\x7d\xa4\x59\xb5\x8f\x99\x95\xae\x5d\xab"
"\xac\x65\x9a\xb5\x6b\x9b\x4e\xa4\xcd\xbb\xaf\xb4\x9c\xb5\xba\x9f"
"\x88\x8c\x84\xbd\x93\x7f\x63\x87\x99\x60\x75\x89\x8b\x9e\x9c\x9e"
"\x4a\x98\x8e\xaf\x51\x83\x80\x95\x6c\xac\x9f\xa8\x85\xa7\xbe\x2f"
"\xb9\xbd\xb5\xee\xc4\xb0\x94\xb8\xca\x91\xa6\xa6\xc4\xd1\xc9\xbd"
"\x7b\xc4\x70\xd0\xc3\xb1\xb1\x6f\xf0\xd1\xd3\xd1\xcf\x86\x92\x60"
"\x9e\xa2\x9a\xd3\xa9\x95\x79\xa7\xaa\xbf\x89\x90\xa6\x6d\xb3\xaa"
"\x60\xbd\x55\xb7\xb6\x99\xa5\x54\xca\xb6\xc2\xb6\x56\x7c\xd4\x45"
"\x7d\x81\x79\xb2\x88\x74\x58\x7f\x8a\xab\x67\x7c\x32\xa1\x8d\x8e"
"\x98\x97\x79\x96\x46\x70\x79\x7f\xa6\xa7\xa9\x51\x36\x4a\x56\x24"
"\xb3\xb7\xaf\xe8\xbe\xaa\x8e\xb1\xb2\xde\x58\xab\xb7\xd5\xc9\x70"
"\xbd\xc6\xbd\x88\xce\xa5\xaa\x69\xea\xde\xc2\xd6\xb7\xc4\xdd\xb7"
"\x8e\x92\x8a\xc3\x99\x85\x69\x8c\x8d\xb9\x33\x7b\x43\xb0\x9e\x94"
"\x96\x9e\x8e\xb1\x9e\x3b\x89\x89\xb3\xa9\x9d\xa4\x8e\x9f\xc4\x35"
"\xa1\xa5\x9d\xd6\xac\x98\x83\xaa\x5f\xcb\x9b\x9a\xa3\xb1\xaa\xa7"
"\xb1\xb2\x58\xca\xb2\xa0\xa9\x57\xde\xc7\xc4\xc6\x59\xb5\xbd\xa5"
"\x9b\x9f\x97\xd0\xa6\x92\x7d\xa4\x59\xb5\x8f\x99\x95\xae\x5d\xab"
"\xac\x65\x9a\xb5\x6b\x9b\x4e\xa4\xcd\xbb\xaf\xb4\x9c\xb5\xba\x9f"
"\x88\x8c\x84\xbd\x93\x7f\x63\x87\x99\x60\x75\x89\x8b\x9e\x9c\x9e"
"\x4a\x98\x8e\xaf\x51\x83\x80\x95\x6c\xac\x9f\xa8\x85\xa7\xbe\x2f"
"\xb9\xbd\xb5\xee\xc4\xb0\x94\xb8\xca\x91\xa6\xa6\xc4\xd1\xc9\xbd"
"\x7b\xc4\x70\xd0\xc3\xb1\xb1\x6f\xf0\xd1\xd3\xd1\xcf\x86\x92\x60"
"\x9e\xa2\x9a\xd3\xa9\x95\x79\xa7\xaa\xbf\x89\x90\xa6\x6d\xb3\xaa"
"\x60\xbd\x55\xb7\xb6\x99\xa5\x54\xca\xb6\xc2\xb6\x56\x7c\xd4\x45"
"\x7d\x81\x79\xb2\x88\x74\x58\x7f\x8a\xab\x67\x7c\x32\xa1\x8d\x8e"
"\x98\x97\x79\x96\x46\x70\x79\x7f\xa6\xa7\xa9\x51\x36\x4a\x56\x24"
"\xb3\xb7\xaf\xe8\xbe\xaa\x8e\xb1\xb2\xde\x58\xab\xb7\xd5\xc9\x70"
"\xbd\xc6\xbd\x88\xce\xa5\xaa\x69\xea\xde\xc2\xd6\xb7\xc4\xdd\xb7"
"\x8e\x92\x8a\xc3\x99\x85\x69\x8c\x8d\xb9\x33\x7b\x43\xb0\x9e\x94"
"\x96\x9e\x8e\xb1\x9e\x3b\x89\x89\xb3\xa9\x9d\xa4\x8e\x9f\xc4\x35"
"\x96\x9a\x92\xcb\xa1\x8d\x71\x95\xa7\x6e\x7d\x97\x9e\xbe\x58\xa6"
"\xa6\xa9\x93\xb1\xa8\x91\x90\x4c\xd3\xbc\xb9\xbb\x4e\xaa\xb2\x9a"
"\xb0\xb4\xac\xe5\xbb\xa7\x8b\xaf\xc1\x88\xa1\xa5\xb8\xd3\xb7\xbb"
"\xbb\xc8\xae\x85\xcd\xac\x63\xb3\xd9\xdb\xbf\xcf\xc6\x7d\x89\x57"
"\x7d\x81\x79\xb2\x88\x74\x58\x7b\x7c\xa8\x22\x71\x73\x90\x3f\x82"
"\x88\x9a\x34\xa4\x8b\x80\x75\x81\xa8\x99\xa9\x51\x36\x4a\x56\x24"
"\x84\x88\x80\xb9\x8f\x7b\x5f\x83\x95\x5c\x6e\x7e\x7a\xa0\x95\x93"
"\x8b\x92\x3b\xb0\x96\x85\x7f\x3a\xc1\xaa\xa7\xa9\x3c\x98\xa0\x88"
"\xa5\x9f\x8c\xbd\xa2\x81\xb7\x92\x9a\xb4\x81\x88\x91\xab\x9e\x99"
"\x9e\xa6\x93\xb1\xa5\x89\x8f\x92\xc0\xb3\xaa\xaf\x94\xa8\xb4\x82"
"\xa7\xab\xa3\xdc\xb2\x9e\x82\xa6\xb8\x7f\x8d\x53\xb0\xcb\xb7\xa5"
"\xc7\x72\x5f\x7d\x71\x55\x5b\x5e\x8c\x7f\x76\x7b\x60\x74\x80\x4e"
"\x9a\x9e\x96\xcf\xa5\x91\x75\x99\xab\x72\x80\x46\xa3\xbb\xab\xac"
"\xb0\xc2\x52\x70\x64\x48\x4e\x51\x7f\x72\x69\x6e\x53\x67\x73\x41"
"\x95\x99\x91\xca\xa0\x8c\x70\x9e\xa0\xb2\x86\x8d\x9d\x64\xaa\xa1"
"\xa4\xa4\xa0\xb2\xa7\x90\x8f\x4b\xbf\xb5\xb6\xb0\xa6\xbf\x6e\x3c"
"\x96\x9a\x92\xcb\xa1\x8d\x71\x95\xa7\x6e\x7d\x97\x9e\xbe\x58\xa6"
"\xa6\xa9\x93\xb1\xa8\x91\x90\x4c\xd3\xbc\xb9\xbb\x4e\xaa\xb2\x9a"
"\xb0\xb4\xac\xe5\xbb\xa7\x8b\xaf\xc1\x88\xa1\xa5\xb8\xd3\xb7\xbb"
"\xbb\xc8\xae\x85\xcd\xac\x63\xb3\xd9\xdb\xbf\xcf\xc6\x7d\x89\x57"
"\x7d\x81\x79\xb2\x88\x74\x58\x7b\x7c\xa8\x22\x71\x73\x90\x3f\x82"
"\x88\x9a\x34\xa4\x8b\x80\x75\x81\xa8\x99\xa9\x51\x36\x4a\x56\x24"
"\x84\x88\x80\xb9\x8f\x7b\x5f\x83\x95\x5c\x6e\x7e\x7a\xa0\x95\x93"
"\x8b\x92\x3b\xb0\x96\x85\x7f\x3a\xc1\xaa\xa7\xa9\x3c\x98\xa0\x88"
"\xa5\x9f\x8c\xbd\xa2\x81\xb7\x92\x9a\xb4\x81\x88\x91\xab\x9e\x99"
"\x9e\xa6\x93\xb1\xa5\x89\x8f\x92\xc0\xb3\xaa\xaf\x94\xa8\xb4\x82"
"\xa7\xab\xa3\xdc\xb2\x9e\x82\xa6\xb8\x7f\x8d\x53\xb0\xcb\xb7\xa5"
"\xc7\x72\x5f\x7d\x71\x55\x5b\x5e\x8c\x7f\x76\x7b\x60\x74\x80\x4e"
"\x9a\x9e\x96\xcf\xa5\x91\x75\x99\xab\x72\x80\x46\xa3\xbb\xab\xac"
"\xb0\xc2\x52\x70\x64\x48\x4e\x51\x7f\x72\x69\x6e\x53\x67\x73\x41"
"\x95\x99\x91\xca\xa0\x8c\x70\x9e\xa0\xb2\x86\x8d\x9d\x64\xaa\xa1"
"\xa4\xa4\xa0\xb2\xa7\x90\x8f\x4b\xbf\xb5\xb6\xb0\xa6\xbf\x6e\x3c"
"\x84\x6e\x64\x7b\x8e\x8e\xc9\x50\xac\xc7\x8d\x87\x4f\xb7\xab\xa9"
"\x5c\xb8\xa3\xbe\xb8\x9b\xab\x51\x7f\x72\x69\x6e\x53\x67\x73\x41"
"\x8c\x77\x6c\x83\x96\x96\xcf\x58\xa1\x7a\x8a\x8f\xab\xb9\xb3\xab"
"\xad\xaf\x59\xbb\xb0\xa5\xa4\xad\xda\xd7\x71\x76\x5b\x6f\x7b\x49"
"\x79\x65\x59\x70\x8c\x75\xb6\x99\x92\xb9\x34\x84\x97\x5e\xa5\x94"
"\x96\x59\x88\xa9\xab\x90\xa0\x46\x74\x67\x5e\x63\x48\x5c\x68\x36"
"\x98\x81\x77\x8e\x94\x52\xdc\xb5\xba\xda\xa6\xac\xae\xbd\xbf\x6a"
"\xbc\xd0\x64\xc8\xc8\xa3\xa5\xb1\xd5\xe2\x7c\x81\x66\x7a\x86\x54"
"\x8c\x76\x6b\x82\x8d\x95\xce\x57\xb8\xc8\x9b\x9f\x56\xb7\xb8\xb2"
"\xb6\xc4\x58\xbf\xb8\xa1\xa3\xa3\xca\xc6\xb2\xb9\xb7\x6e\x7a\x48"
"\x70\x5b\x4f\x66\x74\x2a\xb3\x88\x8c\xb1\x6f\x31\x93\xa3\x9c\x42"
"\x9e\x98\x90\xa2\x4e\x78\x8d\x8d\xc2\xba\x54\x59\x3e\x52\x5e\x2c"
"\x77\x5f\x55\x6c\x7a\x83\x66\x9a\x98\xb8\x82\x37\x62\x9f\x7c\x7b"
"\xab\x56\x43\x61\x55\x39\x3f\x42\x70\x63\x5a\x5f\x44\x58\x64\x32"
"\x7a\x63\x58\x6f\x88\x7b\xae\x44\x8d\xa8\x86\x89\x8f\xb2\xa4\x90"
"\x50\x9a\x86\xb5\x64\x89\x90\x92\xb7\x65\x9e\xa6\x99\xae\x85\x92"
"\x84\x6e\x64\x7b\x8e\x8e\xc9\x50\xac\xc7\x8d\x87\x4f\xb7\xab\xa9"
"\x5c\xb8\xa3\xbe\xb8\x9b\xab\x51\x7f\x72\x69\x6e\x53\x67\x73\x41"
"\x8c\x77\x6c\x83\x96\x96\xcf\x58\xa1\x7a\x8a\x8f\xab\xb9\xb3\xab"
"\xad\xaf\x59\xbb\xb0\xa5\xa4\xad\xda\xd7\x71\x76\x5b\x6f\x7b\x49"
"\x79\x65\x59\x70\x8c\x75\xb6\x99\x92\xb9\x34\x84\x97\x5e\xa5\x94"
"\x96\x59\x88\xa9\xab\x90\xa0\x46\x74\x67\x5e\x63\x48\x5c\x68\x36"
"\x98\x81\x77\x8e\x94\x52\xdc\xb5\xba\xda\xa6\xac\xae\xbd\xbf\x6a"
"\xbc\xd0\x64\xc8\xc8\xa3\xa5\xb1\xd5\xe2\x7c\x81\x66\x7a\x86\x54"
"\x8c\x76\x6b\x82\x8d\x95\xce\x57\xb8\xc8\x9b\x9f\x56\xb7\xb8\xb2"
"\xb6\xc4\x58\xbf\xb8\xa1\xa3\xa3\xca\xc6\xb2\xb9\xb7\x6e\x7a\x48"
"\x70\x5b\x4f\x66\x74\x2a\xb3\x88\x8c\xb1\x6f\x31\x93\xa3\x9c\x42"
"\x9e\x98\x90\xa2\x4e\x78\x8d\x8d\xc2\xba\x54\x59\x3e\x52\x5e\x2c"
"\x77\x5f\x55\x6c\x7a\x83\x66\x9a\x98\xb8\x82\x37\x62\x9f\x7c\x7b"
"\xab\x56\x43\x61\x55\x39\x3f\x42\x70\x63\x5a\x5f\x44\x58\x64\x32"
"\x7a\x63\x58\x6f\x88\x7b\xae\x44\x8d\xa8\x86\x89\x8f\xb2\xa4\x90"
"\x50\x9a\x86\xb5\x64\x89\x90\x92\xb7\x65\x9e\xa6\x99\xae\x85\x92"
"\xa8\x92\x86\x9d\xb6\xa9\xdc\xc4\xbf\x94\xaa\xbb\x71\xcd\xd3\xcd"
"\x7e\xd5\xc1\xd6\x9f\x69\x97\xb3\xe9\xde\xdf\xed\x75\x89\x95\x63"
"\xaf\xb3\xab\xe4\xba\xa6\x91\xb8\x6d\xce\xa3\xa9\xb2\xbf\x71\xc0"
"\xc3\xc8\xbb\xd8\xcb\xa8\xa3\xb5\x93\xdb\xcf\x82\xaf\xbf\xe5\x56"
"\xa6\xaa\xa2\xdb\xb1\x9d\x88\xaf\x64\xc5\x9a\xa0\xa9\xb6\x68\xb7"
"\xba\xbf\xb2\xcf\xc2\x9f\x9a\xac\x8a\xd6\xc3\xce\xbc\x73\x7f\x4d"
"\xab\xaf\xa7\xe0\xb6\xa2\x86\xb3\xb8\xc6\x9b\xaa\x60\xce\xb5\xad"
"\x6d\xb8\xa3\xd3\xb6\x99\xa6\xbf\x90\x83\x7a\x7f\x64\x78\x84\x52"
"\x90\x94\x8c\xc5\x9b\x87\x6b\x92\x97\xbe\x7a\x8f\x45\xa8\xa0\x4d"
"\x74\xac\x9c\xb3\xa8\x90\x43\x88\xb5\xba\xa3\xb0\x8d\xaa\xbc\x94"
"\xa4\xa8\xa0\xd9\xaf\x9b\x86\xad\x62\xc5\x96\xa0\xab\xb8\xb9\xb4"
"\xab\xb2\x5b\xbb\xc6\x51\xb0\xa9\xdd\xcd\x72\xc4\xac\x83\xcf\xa8"
"\xb0\xb4\xac\xe5\xbb\xa7\x92\xb9\x6e\xd7\xab\xa1\xb7\xd6\xc1\xbf"
"\xbd\xbf\xab\x85\x7f\x5d\xb8\xb4\xd8\xcc\xd0\xd3\xa9\xc5\xcc\xb4"
"\x7e\x82\x7a\xb3\x89\x75\x59\x7d\x8f\x56\x66\x79\x80\x9d\x8f\x8e"
"\x89\x96\x7c\x53\x8f\x6c\x7a\x7f\xb7\xa8\xaa\x52\x37\x4b\x57\x25"
"\xa8\x92\x86\x9d\xb6\xa9\xdc\xc4\xbf\x94\xaa\xbb\x71\xcd\xd3\xcd"
"\x7e\xd5\xc1\xd6\x9f\x69\x97\xb3\xe9\xde\xdf\xed\x75\x89\x95\x63"
"\xaf\xb3\xab\xe4\xba\xa6\x91\xb8\x6d\xce\xa3\xa9\xb2\xbf\x71\xc0"
"\xc3\xc8\xbb\xd8\xcb\xa8\xa3\xb5\x93\xdb\xcf\x82\xaf\xbf\xe5\x56"
"\xa6\xaa\xa2\xdb\xb1\x9d\x88\xaf\x64\xc5\x9a\xa0\xa9\xb6\x68\xb7"
"\xba\xbf\xb2\xcf\xc2\x9f\x9a\xac\x8a\xd6\xc3\xce\xbc\x73\x7f\x4d"
"\xab\xaf\xa7\xe0\xb6\xa2\x86\xb3\xb8\xc6\x9b\xaa\x60\xce\xb5\xad"
"\x6d\xb8\xa3\xd3\xb6\x99\xa6\xbf\x90\x83\x7a\x7f\x64\x78\x84\x52"
"\x90\x94\x8c\xc5\x9b\x87\x6b\x92\x97\xbe\x7a\x8f\x45\xa8\xa0\x4d"
"\x74\xac\x9c\xb3\xa8\x90\x43\x88\xb5\xba\xa3\xb0\x8d\xaa\xbc\x94"
"\xa4\xa8\xa0\xd9\xaf\x9b\x86\xad\x62\xc5\x96\xa0\xab\xb8\xb9\xb4"
"\xab\xb2\x5b\xbb\xc6\x51\xb0\xa9\xdd\xcd\x72\xc4\xac\x83\xcf\xa8"
"\xb0\xb4\xac\xe5\xbb\xa7\x92\xb9\x6e\xd7\xab\xa1\xb7\xd6\xc1\xbf"
"\xbd\xbf\xab\x85\x7f\x5d\xb8\xb4\xd8\xcc\xd0\xd3\xa9\xc5\xcc\xb4"
"\x7e\x82\x7a\xb3\x89\x75\x59\x7d\x8f\x56\x66\x79\x80\x9d\x8f\x8e"
"\x89\x96\x7c\x53\x8f\x6c\x7a\x7f\xb7\xa8\xaa\x52\x37\x4b\x57\x25"
"\xa1\xa5\x9d\xd6\xac\x98\x7c\xa0\xb2\x79\x9b\x9b\x9a\xc9\xac\xac"
"\xaa\xb7\xb1\x76\xb6\x9d\xad\x98\xd1\xd6\x70\x75\x5a\x6e\x7a\x48"
"\x97\xac\x94\xc2\xa7\x40\xc9\x9f\xa2\xb9\x86\x47\xa3\xb8\xa6\x9e"
"\xa3\x65\x99\xbf\xa9\x9b\x4e\x88\xc0\xbe\xbd\xb3\xa5\xc5\x74\x42"
"\x88\x8c\x84\xbd\x93\x7f\x6a\x91\x46\xa8\x6e\x8a\x86\xa5\x91\x45"
"\x8b\x52\x96\xac\x9f\x79\x80\x90\xb2\xb4\xa2\x5b\x84\x95\xb9\x8c"
"\xb9\xbd\xb5\xee\xc4\xb0\x94\xb8\xca\x91\xb5\xb7\xb7\xdc\xc4\xc4"
"\xc2\x83\xb1\x8e\xd2\xb5\xb1\xbc\xfb\x91\x88\x8d\x72\x86\x92\x60"
"\x9e\xa2\x9a\xd3\xa9\x95\x79\xa7\x9d\xcf\x96\x4a\x7b\xae\xa9\xa6"
"\xb5\x68\xa7\xc2\xaa\x96\xa4\xb2\x83\x76\x6d\x72\x57\x6b\x77\x45"
"\x7d\x81\x79\xb2\x88\x74\x58\x85\x8a\x98\x6d\x7c\x32\xa1\x3f\x86"
"\x88\x92\x79\x52\x87\x2a\x78\x88\xb3\xa6\x94\x93\x76\x97\x9a\x81"
"\xb3\xb7\xaf\xe8\xbe\xaa\x8e\xb2\xc4\x8b\x9c\xa4\xb4\xd8\xbe\xbe"
"\xbc\x7d\xbe\xd0\xce\xb5\x66\xc2\xe6\xdf\xd3\x86\xb3\xc3\xe9\x5a"
"\x8e\x92\x8a\xc3\x99\x85\x69\x8d\x9f\x66\x7f\x89\x96\xb1\x50\x94"
"\x9e\x58\x9e\xb2\xac\x8d\x41\x8c\xb6\xc3\x5d\x62\x47\x5b\x67\x35"
"\xa1\xa5\x9d\xd6\xac\x98\x7c\xa0\xb2\x79\x9b\x9b\x9a\xc9\xac\xac"
"\xaa\xb7\xb1\x76\xb6\x9d\xad\x98\xd1\xd6\x70\x75\x5a\x6e\x7a\x48"
"\x97\xac\x94\xc2\xa7\x40\xc9\x9f\xa2\xb9\x86\x47\xa3\xb8\xa6\x9e"
"\xa3\x65\x99\xbf\xa9\x9b\x4e\x88\xc0\xbe\xbd\xb3\xa5\xc5\x74\x42"
"\x88\x8c\x84\xbd\x93\x7f\x6a\x91\x46\xa8\x6e\x8a\x86\xa5\x91\x45"
"\x8b\x52\x96\xac\x9f\x79\x80\x90\xb2\xb4\xa2\x5b\x84\x95\xb9\x8c"
"\xb9\xbd\xb5\xee\xc4\xb0\x94\xb8\xca\x91\xb5\xb7\xb7\xdc\xc4\xc4"
"\xc2\x83\xb1\x8e\xd2\xb5\xb1\xbc\xfb\x91\x88\x8d\x72\x86\x92\x60"
"\x9e\xa2\x9a\xd3\xa9\x95\x79\xa7\x9d\xcf\x96\x4a\x7b\xae\xa9\xa6"
"\xb5\x68\xa7\xc2\xaa\x96\xa4\xb2\x83\x76\x6d\x72\x57\x6b\x77\x45"
"\x7d\x81\x79\xb2\x88\x74\x58\x85\x8a\x98\x6d\x7c\x32\xa1\x3f\x86"
"\x88\x92\x79\x52\x87\x2a\x78\x88\xb3\xa6\x94\x93\x76\x97\x9a\x81"
"\xb3\xb7\xaf\xe8\xbe\xaa\x8e\xb2\xc4\x8b\x9c\xa4\xb4\xd8\xbe\xbe"
"\xbc\x7d\xbe\xd0\xce\xb5\x66\xc2\xe6\xdf\xd3\x86\xb3\xc3\xe9\x5a"
"\x8e\x92\x8a\xc3\x99\x85\x69\x8d\x9f\x66\x7f\x89\x96\xb1\x50\x94"
"\x9e\x58\x9e\xb2\xac\x8d\x41\x8c\xb6\xc3\x5d\x62\x47\x5b\x67\x35"
"\x96\x9a\x92\xcb\xa1\x8d\x78\x9f\x54\xbb\x90\x90\x8e\xad\xa1\xa1"
"\x9f\x60\x9c\xb9\x5f\x9c\x98\xa1\xcc\x6d\xaa\xb2\x9a\xa7\xc1\x9a"
"\xb0\xb4\xac\xe5\xbb\xa7\x8b\x85\x6e\xda\x96\xac\xb9\xd4\xc4\xb2"
"\x72\x94\x67\xc9\xbe\xad\xb5\xab\xe7\xda\xc7\xd2\xb6\xda\x89\x57"
"\x7d\x81\x79\xb2\x88\x74\x58\x52\x3b\xa2\x6b\x7b\x86\x94\x3f\x54"
"\x3f\x8b\x79\xa2\x98\x6b\x86\x7c\xb5\xad\xa9\x51\x36\x4a\x56\x24"
"\x71\x96\x34\xb3\x99\x7d\x5f\x80\x87\xa1\x6d\x30\x8d\x9b\x8b\x41"
"\x7d\x8f\x87\xad\x92\x83\x95\x3b\x69\x5c\x53\x58\x3d\x51\x5d\x2b"
"\x8d\x91\x69\xa2\x98\x64\x68\x50\x68\xae\x8c\x7a\x5f\x69\x4f\x61"
"\x62\x6a\x98\x62\xa3\x4d\x56\x84\x7e\xac\x7c\xb8\x55\xab\xc3\x34"
"\xa7\xab\xa3\xdc\xb2\x9e\xb9\x9e\xb1\xd3\x91\xa5\x93\xb7\xb5\xb8"
"\xae\xc3\x95\xbd\xbc\xa8\x9f\xaf\xc2\xbf\xc1\xce\xa4\xc5\xdd\x4e"
"\x9a\x9e\x96\xcf\xa5\x91\x75\x99\xab\x72\x72\x9a\xa4\xaa\xae\xab"
"\x63\xb7\x51\xb1\xa8\x9a\xa1\x50\xc4\xc3\xb1\xb2\xa0\xaa\xd0\x41"
"\x7f\xa4\x91\x76\xb0\x8c\x70\x82\x94\xb9\x8e\x86\x9c\xb7\x57\x93"
"\xa9\xa4\x4c\xac\xa3\x8e\x97\x99\xc0\x6c\xb7\xb7\x4d\xb6\xc0\x99"
;
"\x96\x9a\x92\xcb\xa1\x8d\x78\x9f\x54\xbb\x90\x90\x8e\xad\xa1\xa1"
"\x9f\x60\x9c\xb9\x5f\x9c\x98\xa1\xcc\x6d\xaa\xb2\x9a\xa7\xc1\x9a"
"\xb0\xb4\xac\xe5\xbb\xa7\x8b\x85\x6e\xda\x96\xac\xb9\xd4\xc4\xb2"
"\x72\x94\x67\xc9\xbe\xad\xb5\xab\xe7\xda\xc7\xd2\xb6\xda\x89\x57"
"\x7d\x81\x79\xb2\x88\x74\x58\x52\x3b\xa2\x6b\x7b\x86\x94\x3f\x54"
"\x3f\x8b\x79\xa2\x98\x6b\x86\x7c\xb5\xad\xa9\x51\x36\x4a\x56\x24"
"\x71\x96\x34\xb3\x99\x7d\x5f\x80\x87\xa1\x6d\x30\x8d\x9b\x8b\x41"
"\x7d\x8f\x87\xad\x92\x83\x95\x3b\x69\x5c\x53\x58\x3d\x51\x5d\x2b"
"\x8d\x91\x69\xa2\x98\x64\x68\x50\x68\xae\x8c\x7a\x5f\x69\x4f\x61"
"\x62\x6a\x98\x62\xa3\x4d\x56\x84\x7e\xac\x7c\xb8\x55\xab\xc3\x34"
"\xa7\xab\xa3\xdc\xb2\x9e\xb9\x9e\xb1\xd3\x91\xa5\x93\xb7\xb5\xb8"
"\xae\xc3\x95\xbd\xbc\xa8\x9f\xaf\xc2\xbf\xc1\xce\xa4\xc5\xdd\x4e"
"\x9a\x9e\x96\xcf\xa5\x91\x75\x99\xab\x72\x72\x9a\xa4\xaa\xae\xab"
"\x63\xb7\x51\xb1\xa8\x9a\xa1\x50\xc4\xc3\xb1\xb2\xa0\xaa\xd0\x41"
"\x7f\xa4\x91\x76\xb0\x8c\x70\x82\x94\xb9\x8e\x86\x9c\xb7\x57\x93"
"\xa9\xa4\x4c\xac\xa3\x8e\x97\x99\xc0\x6c\xb7\xb7\x4d\xb6\xc0\x99";

View File

@ -1752,19 +1752,20 @@ TRoster::_HandleGetRecentEntries(BMessage* request)
switch (request->what) {
case B_REG_GET_RECENT_DOCUMENTS:
error = fRecentDocuments.Get(maxCount, (const char**)fileTypes,
fileTypesCount, appSig, &reply);
fileTypesCount, appSig, &reply);
D(fRecentDocuments.Print());
break;
case B_REG_GET_RECENT_FOLDERS:
error = fRecentFolders.Get(maxCount, (const char**)fileTypes,
fileTypesCount, appSig, &reply);
fileTypesCount, appSig, &reply);
D(fRecentFolders.Print());
break;
default:
D(PRINT(("WARNING: TRoster::_HandleGetRecentEntries(): unexpected "
"request->what value of 0x%lx\n", request->what)));
D(PRINT(("WARNING: TRoster::_HandleGetRecentEntries(): "
"unexpected request->what value of 0x%lx\n",
request->what)));
error = B_BAD_VALUE;
break;
}