Merging r148, r154, r155 with trunk.
This commit is contained in:
parent
97ae80798d
commit
8d1c0d1a9d
|
@ -68,6 +68,9 @@ enum im_what_code {
|
|||
// Received information on contact
|
||||
IM_CONTACT_INFO = 10,
|
||||
|
||||
// Received extended information on contact
|
||||
IM_EXTENDED_CONTACT_INFO = 30,
|
||||
|
||||
// Start listening to changes in these contact's statuses
|
||||
IM_REGISTER_CONTACTS = 11,
|
||||
|
||||
|
|
|
@ -234,9 +234,10 @@ Server::ImMessage(BMessage* msg)
|
|||
{
|
||||
ContactLinker* linker = _EnsureContactLinker(msg);
|
||||
|
||||
BString fullName = msg->FindString("nick");
|
||||
if (fullName != "")
|
||||
linker->SetNotifyName(fullName);
|
||||
const char* name = NULL;
|
||||
|
||||
if (msg->FindString("name", &name) == B_OK)
|
||||
linker->SetNotifyName(name);
|
||||
break;
|
||||
}
|
||||
case IM_AVATAR_CHANGED:
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Copyright 2009, Pier Luigi Fiorini.
|
||||
* Copyright 2004-2009, René Nyffenegge
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
// Based on original code from:
|
||||
// http://www.adp-gmbh.ch/cpp/common/base64.html
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#include "Base64.h"
|
||||
|
||||
static const BString chars =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"abcdefghijklmnopqrstuvwxyz"
|
||||
"0123456789+/";
|
||||
|
||||
|
||||
Base64::Base64()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BString
|
||||
Base64::Encode(const uchar* data, size_t length)
|
||||
{
|
||||
BString encoded;
|
||||
int32 i = 0;
|
||||
uchar array3[3], array4[4];
|
||||
|
||||
while (length--) {
|
||||
array3[i++] = *(data++);
|
||||
|
||||
if (i == 3) {
|
||||
array4[0] = (uchar)((array3[0] & 0xfc) >> 2);
|
||||
array4[1] = (uchar)(((array3[0] & 0x03) << 4) + ((array3[1] & 0xf0) >> 4));
|
||||
array4[2] = (uchar)(((array3[1] & 0x0f) << 2) + ((array3[2] & 0xc0) >> 6));
|
||||
array4[3] = (uchar)(((array4[2] & 0x3) << 6) + array4[3]);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
encoded += array3[i];
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (i) {
|
||||
for (int32 j = i; j < 4; j++)
|
||||
array4[j] = 0;
|
||||
|
||||
for (int32 j = 0; j < 4; j++)
|
||||
array4[j] = (uchar)chars.FindFirst(array4[j]);
|
||||
|
||||
array3[0] = (uchar)((array4[0] << 2) + ((array4[i] & 0x30) >> 4));
|
||||
array3[1] = (uchar)(((array4[1] & 0xf) << 4) + ((array4[2] & 0x3c) >> 2));
|
||||
array3[2] = (uchar)(((array4[2] & 0x3) << 6) + array4[3]);
|
||||
|
||||
for (int32 j = 0; j < i - 1; j++)
|
||||
encoded += array3[j];
|
||||
}
|
||||
|
||||
return encoded;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
Base64::IsBase64(uchar c)
|
||||
{
|
||||
return isalnum(c) || (c == '+') || (c == '/');
|
||||
}
|
||||
|
||||
|
||||
BString
|
||||
Base64::Decode(const BString& data)
|
||||
{
|
||||
int32 length = data.Length();
|
||||
int32 i = 0;
|
||||
int32 index = 0;
|
||||
uchar array4[4], array3[3];
|
||||
BString decoded;
|
||||
|
||||
while (length-- && (data[index] != '=') && IsBase64(data[index])) {
|
||||
array4[i++] = data[index];
|
||||
index++;
|
||||
|
||||
if (i == 4) {
|
||||
for (i = 0; i < 4; i++)
|
||||
array4[i] = (uchar)chars.FindFirst(array4[i]);
|
||||
|
||||
array3[0] = (uchar)((array4[0] << 2) + ((array4[1] & 0x30)>> 4));
|
||||
array3[1] = (uchar)(((array4[1] & 0xf) << 4) + ((array4[2] & 0x3c) >> 2));
|
||||
array3[2] = (uchar)(((array4[2] & 0x3) << 6) + array4[3]);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
decoded += array3[i];
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (i) {
|
||||
int32 j;
|
||||
|
||||
for (j = i; j < 4; j++)
|
||||
array4[j] = 0;
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
array4[j] = (uchar)chars.FindFirst(array4[j]);
|
||||
|
||||
array3[0] = (uchar)((array4[0] << 2) + ((array4[1] & 0x30) >> 4));
|
||||
array3[1] = (uchar)(((array4[1] & 0xf) << 4) + ((array4[2] & 0x3c) >> 2));
|
||||
array3[2] = (uchar)(((array4[2] & 0x3) << 6) + array4[3]);
|
||||
|
||||
for (j = 0; j < i - 1; j++)
|
||||
decoded += array3[j];
|
||||
}
|
||||
|
||||
return decoded;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Copyright 2009, Pier Luigi Fiorini.
|
||||
* Copyright 2004-2009, René Nyffenegge
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef _BASE_64_H
|
||||
#define _BASE_64_H
|
||||
|
||||
#include <String.h>
|
||||
|
||||
class Base64 {
|
||||
public:
|
||||
static bool IsBase64(uchar c);
|
||||
static BString Encode(const uchar* data, size_t length);
|
||||
static BString Decode(const BString& data);
|
||||
|
||||
private:
|
||||
Base64();
|
||||
};
|
||||
|
||||
#endif // _BASE_64_H
|
|
@ -3,5 +3,6 @@ SubDir TOP libs libsupport ;
|
|||
SubDirSysHdrs [ FDirName $(TOP) libs ] ;
|
||||
|
||||
StaticLibrary libsupport.a :
|
||||
Base64.cpp
|
||||
Singleton.cpp
|
||||
;
|
||||
|
|
Ŝarĝante…
Reference in New Issue