diff options
| author | Robert Pösel <robyer@seznam.cz> | 2012-11-05 21:11:48 +0000 |
|---|---|---|
| committer | Robert Pösel <robyer@seznam.cz> | 2012-11-05 21:11:48 +0000 |
| commit | 048aaf0c4e77402adf584e3318e5aae6f1cdd749 (patch) | |
| tree | def343da80e282ae43164e45e672a1386db66546 /protocols/Xfire/src/recvprefspacket.cpp | |
| parent | 35a9af527f9b7ec35e81455784cd0a795be910c5 (diff) | |
XFire adoption (crashes on login, no 64bit)
git-svn-id: http://svn.miranda-ng.org/main/trunk@2212 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Xfire/src/recvprefspacket.cpp')
| -rw-r--r-- | protocols/Xfire/src/recvprefspacket.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/protocols/Xfire/src/recvprefspacket.cpp b/protocols/Xfire/src/recvprefspacket.cpp new file mode 100644 index 0000000000..faad9ce964 --- /dev/null +++ b/protocols/Xfire/src/recvprefspacket.cpp @@ -0,0 +1,107 @@ +/* + * xfirelib - C++ Library for the xfire protocol. + * Copyright (C) 2006 by + * Beat Wolf <asraniel@fryx.ch> / http://gfire.sf.net + * Herbert Poul <herbert.poul@gmail.com> / http://goim.us + * dufte <dufte@justmail.de> + * http://xfirelib.sphene.net + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "stdafx.h" + +#include "recvprefspacket.h" +#include "variablevalue.h" +#include "xdebug.h" + +namespace xfirelib { + + void RecvPrefsPacket::parseContent(char *buf, int length, int numberOfAtts) { + int index = 0; + + memset(&this->config,0,sizeof(xfire_prefitem)*XFIRE_RECVPREFSPACKET_MAXCONFIGS); + + XDEBUG("This packet gives us the preferences that you can set with the official client.\n"); + + //skip 4c,09 + index+=2; + + //anzahl an konfigurationen welche abgestellt wurden + int anz=buf[index]; + XDEBUG2("%d disabled Configs\n",anz); + + index++; + + for(int i=0;i<anz;i++) + { + int kid=buf[index]; + XDEBUG2("Konfigid: %d\n",kid); + + if(kid<XFIRE_RECVPREFSPACKET_MAXCONFIGS&&kid>0) + { + config[kid].wasset=1; + for(int j=0;j<4;j++) + { + index++; + config[kid].data[j]=buf[index]; + } + } + + XDEBUG2("Konfigval: %d\n",buf[index]); + index++; + } + + + } + + //prefences packet vorbereiten + int PrefsPacket::getPacketContent(char *buf) { + int index = 0; + + buf[index++]=5; + buf[index++]='p'; + buf[index++]='r'; + buf[index++]='e'; + buf[index++]='f'; + buf[index++]='s'; + + buf[index++]=9; + + //anzahlindex zwischenspeichern + int anzindex=index; + index++; + + int anz=0; + for(int j=0;j<XFIRE_RECVPREFSPACKET_MAXCONFIGS;j++) + { + if(this->config[j].wasset==1) + { + buf[index++]=j; + buf[index++]=this->config[j].data[0]; + buf[index++]=this->config[j].data[1]; + buf[index++]=this->config[j].data[2]; + buf[index++]=this->config[j].data[3]; + anz++; + } + } + + buf[anzindex]=anz; + + return index; + } + + +}; |
