Update to Trinity 3.5.11

Will need to watch for commit warnings and rebuild test

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1061808 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 15 years ago
parent bcb704366c
commit 9fab5b8a21

@ -11,7 +11,7 @@ X-KDE-SubstituteUID=false
X-KDE-HasReadOnlyMode=true X-KDE-HasReadOnlyMode=true
X-KDE-RootOnly=true X-KDE-RootOnly=true
X-KDE-ParentApp=kcontrol X-KDE-ParentApp=kcontrol
Categories=Qt;KDE;X-KDE-settings-network;Settings; Categories=Qt;KDE;X-KDE-settings-network;
OnlyShowIn=KDE; OnlyShowIn=KDE;
Comment=A module to configure shares for Microsoft Windows Comment=A module to configure shares for Microsoft Windows

@ -128,6 +128,11 @@ QString SambaShare::getGlobalValue(const QString & name, bool defaultValue)
**/ **/
QString SambaShare::getSynonym(const QString & name) const QString SambaShare::getSynonym(const QString & name) const
{ {
// idmap config is an exception and shouldn't be set to lower
QString sname = name.left(12).stripWhiteSpace();
if ( sname == "idmap config" ) return name;
QString lname = name.lower().stripWhiteSpace(); QString lname = name.lower().stripWhiteSpace();
if (lname == "browsable") return "browseable"; if (lname == "browsable") return "browseable";

@ -24,7 +24,7 @@
<cstring>infoLbl</cstring> <cstring>infoLbl</cstring>
</property> </property>
<property name="margin"> <property name="margin">
<number>11</number> <number>5</number>
</property> </property>
<property name="text"> <property name="text">
<string>SMB and NFS servers are not installed on this machine, to enable this module the servers must be installed.</string> <string>SMB and NFS servers are not installed on this machine, to enable this module the servers must be installed.</string>

@ -87,6 +87,7 @@ KFileShareConfig::KFileShareConfig(QWidget *parent, const char *name, const QStr
if ( nfsExec.isEmpty() && sambaExec.isEmpty()) if ( nfsExec.isEmpty() && sambaExec.isEmpty())
{ {
QMessageBox::critical( 0, "File Sharing", QString("SMB and NFS servers are not installed on this machine, to enable this module the servers must be installed."));
m_ccgui->shareGrp->setDisabled(true); m_ccgui->shareGrp->setDisabled(true);
m_ccgui->sharedFoldersGroupBox->setDisabled(true); m_ccgui->sharedFoldersGroupBox->setDisabled(true);
} }

@ -166,4 +166,4 @@ Keywords[tr]=Paylaş
Keywords[uk]=Спільний ресурс Keywords[uk]=Спільний ресурс
Keywords[zh_CN]=Share,共享 Keywords[zh_CN]=Share,共享
Categories=Qt;KDE;X-KDE-settings-network;Settings; Categories=Qt;KDE;X-KDE-settings-network;

@ -93,3 +93,4 @@ Terminal=false
X-KDE-StartupNotify=true X-KDE-StartupNotify=true
X-DCOP-ServiceType=Unique X-DCOP-ServiceType=Unique
Categories=Qt;KDE;Network;X-KDE-More;News; Categories=Qt;KDE;Network;X-KDE-More;News;
NoDisplay=true

@ -43,6 +43,7 @@
#include <dom/html_base.h> #include <dom/html_base.h>
#include <dom/html_document.h> #include <dom/html_document.h>
#include <dom/html_inline.h> #include <dom/html_inline.h>
#include <qurloperator.h>
// KDE includes // KDE includes
@ -60,8 +61,10 @@
#include <ktempfile.h> #include <ktempfile.h>
#include <kurldrag.h> #include <kurldrag.h>
#include <kio/netaccess.h> #include <kio/netaccess.h>
#include <kio/job.h>
#include <kstandarddirs.h> #include <kstandarddirs.h>
#include <kiconloader.h> #include <kiconloader.h>
#include <kinputdialog.h>
// Kopete includes // Kopete includes
#include "chatmemberslistwidget.h" #include "chatmemberslistwidget.h"
@ -144,6 +147,7 @@ public:
KAction *printAction; KAction *printAction;
KAction *closeAction; KAction *closeAction;
KAction *copyURLAction; KAction *copyURLAction;
KAction *importEmoticon;
ChatWindowStyle *currentChatStyle; ChatWindowStyle *currentChatStyle;
Kopete::Contact *latestContact; Kopete::Contact *latestContact;
@ -259,6 +263,7 @@ ChatMessagePart::ChatMessagePart( Kopete::ChatSession *mgr, QWidget *parent, con
d->saveAction = KStdAction::saveAs( this, SLOT(save()), actionCollection() ); d->saveAction = KStdAction::saveAs( this, SLOT(save()), actionCollection() );
d->printAction = KStdAction::print( this, SLOT(print()),actionCollection() ); d->printAction = KStdAction::print( this, SLOT(print()),actionCollection() );
d->closeAction = KStdAction::close( this, SLOT(slotCloseView()),actionCollection() ); d->closeAction = KStdAction::close( this, SLOT(slotCloseView()),actionCollection() );
d->importEmoticon = new KAction( i18n( "Import Emoticon"), QString::fromLatin1( "importemot" ), 0, this, SLOT( slotImportEmoticon() ), actionCollection() );
d->copyURLAction = new KAction( i18n( "Copy Link Address" ), QString::fromLatin1( "editcopy" ), 0, this, SLOT( slotCopyURL() ), actionCollection() ); d->copyURLAction = new KAction( i18n( "Copy Link Address" ), QString::fromLatin1( "editcopy" ), 0, this, SLOT( slotCopyURL() ), actionCollection() );
// read formatting override flags // read formatting override flags
@ -281,6 +286,53 @@ void ChatMessagePart::slotScrollingTo( int /*x*/, int y )
d->scrollPressed = true; d->scrollPressed = true;
} }
void ChatMessagePart::slotImportEmoticon()
{
QString emoticonString = KInputDialog::getText( i18n("Import Emoticon"),
i18n("<qt><img src=\"%1\"><br>Insert the string for the emoticon<br>separated by space if you want multiple strings</qt>").arg( d->activeElement.getAttribute("src").string() ) );
if (emoticonString.isNull() )
return;
QString emo = d->activeElement.getAttribute("src").string();
QString themeName = KopetePrefs::prefs()->iconTheme();
KIO::copy(emo, KGlobal::dirs()->saveLocation( "emoticons", themeName, false ));
QFile *fp = new QFile(KGlobal::dirs()->saveLocation( "emoticons", themeName, false ) + "/emoticons.xml");
QDomDocument themeXml;
if(!fp->exists() || !fp->open( IO_ReadOnly ) || !themeXml.setContent(fp))
return;
fp->close();
QDomNode lc = themeXml.lastChild();
if(lc.isNull())
return;
QDomElement emoticon = themeXml.createElement("emoticon");
emoticon.setAttribute("file", QFileInfo(emo).baseName());
lc.appendChild(emoticon);
QStringList splitted = QStringList::split(" ", emoticonString);
QStringList::const_iterator constIterator;
for(constIterator = splitted.begin(); constIterator != splitted.end(); constIterator++)
{
QDomElement emotext = themeXml.createElement("string");
QDomText txt = themeXml.createTextNode((*constIterator).stripWhiteSpace());
emotext.appendChild(txt);
emoticon.appendChild(emotext);
}
if(!fp->open( IO_WriteOnly ))
return;
QTextStream emoStream(fp);
emoStream << themeXml.toString(4);
fp->close();
QTimer::singleShot( 1500, Kopete::Emoticons::self(), SLOT( reload() ) );
}
void ChatMessagePart::save() void ChatMessagePart::save()
{ {
KFileDialog dlg( QString::null, QString::fromLatin1( "text/html text/plain" ), view(), "fileSaveDialog", false ); KFileDialog dlg( QString::null, QString::fromLatin1( "text/html text/plain" ), view(), "fileSaveDialog", false );
@ -680,11 +732,12 @@ void ChatMessagePart::slotRightClick( const QString &, const QPoint &point )
d->copyURLAction->plug( chatWindowPopup ); d->copyURLAction->plug( chatWindowPopup );
chatWindowPopup->insertSeparator(); chatWindowPopup->insertSeparator();
} }
kdDebug() << "ChatMessagePart::slotRightClick(): " << d->activeElement.tagName().lower() << endl;
d->copyAction->setEnabled( hasSelection() ); d->copyAction->setEnabled( hasSelection() );
d->copyAction->plug( chatWindowPopup ); d->copyAction->plug( chatWindowPopup );
d->saveAction->plug( chatWindowPopup ); d->saveAction->plug( chatWindowPopup );
d->printAction->plug( chatWindowPopup ); d->printAction->plug( chatWindowPopup );
if( d->activeElement.tagName().lower() == "img" ) d->importEmoticon->plug( chatWindowPopup );
chatWindowPopup->insertSeparator(); chatWindowPopup->insertSeparator();
d->closeAction->plug( chatWindowPopup ); d->closeAction->plug( chatWindowPopup );

@ -148,6 +148,7 @@ private slots:
void slotCopyURL(); void slotCopyURL();
void slotCloseView( bool force = false ); void slotCloseView( bool force = false );
void slotImportEmoticon();
/** /**
* Do the actual style change. * Do the actual style change.

@ -4,9 +4,10 @@ AM_CPPFLAGS = $(KOPETE_INCLUDES) -I$(top_srcdir)/kopete/libkopete/private \
kde_module_LTLIBRARIES = kcm_kopete_appearanceconfig.la kde_module_LTLIBRARIES = kcm_kopete_appearanceconfig.la
kcm_kopete_appearanceconfig_la_SOURCES = appearanceconfig_emoticons.ui \ kcm_kopete_appearanceconfig_la_SOURCES = appearanceconfig.cpp \
appearanceconfig_colors.ui appearanceconfig_chatwindow.ui appearanceconfig_contactlist.ui \ appearanceconfig_chatwindow.ui appearanceconfig_colors.ui appearanceconfig_contactlist.ui \
appearanceconfig.cpp tooltipeditwidget.ui tooltipeditdialog.cpp appearanceconfig_emoticons.ui emoticonseditdialog.cpp emoticonseditwidget.ui tooltipeditdialog.cpp \
tooltipeditwidget.ui
kcm_kopete_appearanceconfig_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) \ kcm_kopete_appearanceconfig_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) \
$(all_libraries) $(all_libraries)
@ -18,3 +19,4 @@ service_DATA = kopete_appearanceconfig.desktop
servicedir = $(kde_servicesdir) servicedir = $(kde_servicesdir)
# vim: set noet: # vim: set noet:
noinst_HEADERS = emoticonseditdialog.h

@ -27,6 +27,7 @@
#include "appearanceconfig_contactlist.h" #include "appearanceconfig_contactlist.h"
#include "tooltipeditdialog.h" #include "tooltipeditdialog.h"
#include "emoticonseditdialog.h"
#include <qcheckbox.h> #include <qcheckbox.h>
#include <qdir.h> #include <qdir.h>
@ -204,6 +205,8 @@ AppearanceConfig::AppearanceConfig(QWidget *parent, const char* /*name*/, const
this, SLOT(slotGetEmoticonThemes())); this, SLOT(slotGetEmoticonThemes()));
connect(d->mPrfsEmoticons->btnRemoveTheme, SIGNAL(clicked()), connect(d->mPrfsEmoticons->btnRemoveTheme, SIGNAL(clicked()),
this, SLOT(removeSelectedEmoticonTheme())); this, SLOT(removeSelectedEmoticonTheme()));
connect(d->mPrfsEmoticons->btnEditThemes, SIGNAL(clicked()),
this, SLOT(editSelectedEmoticonTheme()));
d->mAppearanceTabCtl->addTab(d->mPrfsEmoticons, i18n("&Emoticons")); d->mAppearanceTabCtl->addTab(d->mPrfsEmoticons, i18n("&Emoticons"));
@ -866,5 +869,20 @@ void AppearanceConfig::slotEditTooltips()
delete dlg; delete dlg;
} }
void AppearanceConfig::editSelectedEmoticonTheme()
{
QListBoxItem *selected = d->mPrfsEmoticons->icon_theme_list->selectedItem();
if(selected==0)
return;
QString themeName = selected->text();
EmoticonsEditDialog *dlg = new EmoticonsEditDialog(this, themeName);
dlg->exec();
delete dlg;
updateEmoticonlist();
}
#include "appearanceconfig.moc" #include "appearanceconfig.moc"
// vim: set noet ts=4 sts=4 sw=4: // vim: set noet ts=4 sts=4 sw=4:

@ -57,6 +57,7 @@ private slots:
void slotGetChatStyles(); void slotGetChatStyles();
void slotLoadChatStyles(); void slotLoadChatStyles();
void updateEmoticonsButton(bool); void updateEmoticonsButton(bool);
void editSelectedEmoticonTheme();
private: private:
void updateEmoticonlist(); void updateEmoticonlist();
void createPreviewChatSession(); void createPreviewChatSession();

@ -109,6 +109,17 @@
<string>Download emoticon theme from the Internet</string> <string>Download emoticon theme from the Internet</string>
</property> </property>
</widget> </widget>
<widget class="QPushButton">
<property name="name">
<cstring>btnEditThemes</cstring>
</property>
<property name="text">
<string>&amp;Edit Theme...</string>
</property>
<property name="whatsThis" stdset="0">
<string>Edit the selected emoticons theme</string>
</property>
</widget>
<widget class="QPushButton"> <widget class="QPushButton">
<property name="name"> <property name="name">
<cstring>btnInstallTheme</cstring> <cstring>btnInstallTheme</cstring>

@ -51,9 +51,10 @@ int main( int argc, char *argv[] )
{ {
KAboutData aboutData( "kopete", I18N_NOOP("Kopete"), KAboutData aboutData( "kopete", I18N_NOOP("Kopete"),
KOPETE_VERSION_STRING, description, KAboutData::License_GPL, KOPETE_VERSION_STRING, description, KAboutData::License_GPL,
I18N_NOOP("(c) 2001-2004, Duncan Mac-Vicar Prett\n(c) 2002-2005, Kopete Development Team"), "kopete-devel@kde.org", "http://kopete.kde.org"); I18N_NOOP("(c) 2009-2010, Timothy Pearson\n(c) 2001-2004, Duncan Mac-Vicar Prett\n(c) 2002-2005, Kopete Development Team"), "kopete-devel@kde.org", "http://kopete.kde.org");
aboutData.addAuthor ( "Duncan Mac-Vicar Prett", I18N_NOOP("Developer and Project founder"), "duncan@kde.org", "http://www.mac-vicar.org/~duncan" ); aboutData.addAuthor ( "Duncan Mac-Vicar Prett", I18N_NOOP("Developer and Project founder"), "duncan@kde.org", "http://www.mac-vicar.org/~duncan" );
aboutData.addAuthor ( "Timothy Pearson", I18N_NOOP("Developer, maintainer"), "kb9vqf@pearsoncomputing.net" );
aboutData.addAuthor ( "Andre Duffeck", I18N_NOOP("Developer, Yahoo plugin maintainer"), "andre@duffeck.de" ); aboutData.addAuthor ( "Andre Duffeck", I18N_NOOP("Developer, Yahoo plugin maintainer"), "andre@duffeck.de" );
aboutData.addAuthor ( "Andy Goossens", I18N_NOOP("Developer"), "andygoossens@telenet.be" ); aboutData.addAuthor ( "Andy Goossens", I18N_NOOP("Developer"), "andygoossens@telenet.be" );
aboutData.addAuthor ( "Chetan Reddy", I18N_NOOP("Developer, Yahoo"), "chetan13@gmail.com" ); aboutData.addAuthor ( "Chetan Reddy", I18N_NOOP("Developer, Yahoo"), "chetan13@gmail.com" );

@ -549,6 +549,13 @@ QString Emoticons::parse( const QString &message, ParseMode mode )
return result; return result;
} }
void Emoticons::reload()
{
d->emoticonAndPicList.clear();
d->emoticonMap.clear();
initEmoticons( KopetePrefs::prefs()->iconTheme() );
}
} //END namesapce Kopete } //END namesapce Kopete
#include "kopeteemoticons.moc" #include "kopeteemoticons.moc"

@ -132,6 +132,12 @@ public:
*/ */
QMap<QString, QStringList> emoticonAndPicList(); QMap<QString, QStringList> emoticonAndPicList();
public slots:
/**
* reload the current emoticons theme
*/
void reload();
private: private:
/** /**

@ -94,9 +94,7 @@ done
# #
if test -n "`type -p mktemp`" ; then if test -n "`type -p mktemp`" ; then
tmpdir="`mktemp /tmp/tex2imXXXXXX`" tmpdir="`mktemp -d /tmp/tex2imXXXXXX`"
rm $tmpdir
mkdir $tmpdir
else else
tmpdir=/tmp/tex2im$$ tmpdir=/tmp/tex2im$$
if [ -e $tmpdir ] ; then if [ -e $tmpdir ] ; then
@ -171,7 +169,7 @@ fi
#if [ -e "$infile" ]; then #if [ -e "$infile" ]; then
# cat $infile >> $tmpdir/out.tex # cat $infile >> $tmpdir/out.tex
#else #else
echo "$infile" >> $tmpdir/out.tex printf '%s' "$infile" >> $tmpdir/out.tex
#fi #fi
if [ $noformula -eq 1 ]; then if [ $noformula -eq 1 ]; then
@ -222,7 +220,7 @@ else
mv $tmpdir/out.$format.0 $outfile mv $tmpdir/out.$format.0 $outfile
fi fi
let OPTIND=$OPTIND+1 OPTIND=$((${OPTIND}+1))
outfile="" outfile=""
done done

@ -5,8 +5,8 @@ AM_CPPFLAGS = $(KOPETE_INCLUDES) $(XMMS_INCLUDES) $(all_includes)
kde_module_LTLIBRARIES = kopete_nowlistening.la kcm_kopete_nowlistening.la kde_module_LTLIBRARIES = kopete_nowlistening.la kcm_kopete_nowlistening.la
kopete_nowlistening_la_SOURCES = nowlisteningconfig.kcfgc nowlisteningplugin.cpp nlkscd.cpp nlnoatun.cpp nlxmms.cpp nowlisteningguiclient.cpp nljuk.cpp nlamarok.cpp nlkaffeine.cpp kopete_nowlistening_la_SOURCES = nowlisteningconfig.kcfgc nowlisteningplugin.cpp nlkscd.cpp nlnoatun.cpp nlxmms.cpp nowlisteningguiclient.cpp nljuk.cpp nlamarok.cpp nlkaffeine.cpp
kopete_nowlistening_la_LDFLAGS = -module $(KDE_PLUGIN) $(XMMS_LDFLAGS) $(all_libraries) kopete_nowlistening_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries)
kopete_nowlistening_la_LIBADD = ../../libkopete/libkopete.la $(XMMS_LIBS) kopete_nowlistening_la_LIBADD = ../../libkopete/libkopete.la
kcm_kopete_nowlistening_la_SOURCES = nowlisteningprefs.ui nowlisteningpreferences.cpp nowlisteningconfig.kcfgc kcm_kopete_nowlistening_la_SOURCES = nowlisteningprefs.ui nowlisteningpreferences.cpp nowlisteningconfig.kcfgc
kcm_kopete_nowlistening_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) kcm_kopete_nowlistening_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries)

@ -24,6 +24,7 @@
#ifdef HAVE_XMMS #ifdef HAVE_XMMS
#include <dlfcn.h>
#include <kdebug.h> #include <kdebug.h>
#include <xmmsctrl.h> // need to fix Makefile.am for this? #include <xmmsctrl.h> // need to fix Makefile.am for this?
#include "nlmediaplayer.h" #include "nlmediaplayer.h"
@ -32,13 +33,21 @@
NLXmms::NLXmms() : NLMediaPlayer() NLXmms::NLXmms() : NLMediaPlayer()
{ {
m_name = "Xmms"; m_name = "Xmms";
xmmslib = dlopen("libxmms.so.1", RTLD_LAZY | RTLD_GLOBAL);
} }
NLXmms::~NLXmms()
{
if (xmmslib)
dlclose(xmmslib);
}
void NLXmms::update() void NLXmms::update()
{ {
//look for running xmms //look for running xmms
if ( xmms_remote_get_version( 0 ) ) if ( xmmslib &&
xmms_remote_get_version( 0 ) )
{ {
QString newTrack; QString newTrack;
// see if it's playing // see if it's playing

@ -31,7 +31,11 @@ class NLXmms : public NLMediaPlayer
{ {
public: public:
NLXmms(); NLXmms();
~NLXmms();
virtual void update(); virtual void update();
private:
void *xmmslib;
}; };
#endif #endif

@ -29,7 +29,7 @@ TranslatorLanguages::TranslatorLanguages()
{ {
m_lc = 0; m_lc = 0;
m_sc = 0; m_sc = 0;
m_services.insert("babelfish", "BabelFish"); // m_services.insert("babelfish", "BabelFish");
m_services.insert("google", "Google"); m_services.insert("google", "Google");
m_langs.insert("null", i18n("Unknown")); m_langs.insert("null", i18n("Unknown"));
@ -45,29 +45,29 @@ TranslatorLanguages::TranslatorLanguages()
m_langs.insert("es", i18n("Spanish")); m_langs.insert("es", i18n("Spanish"));
/* English to .. */ /* English to .. */
m_supported["babelfish"].append("en_zh"); // m_supported["babelfish"].append("en_zh");
m_supported["babelfish"].append("en_fr"); // m_supported["babelfish"].append("en_fr");
m_supported["babelfish"].append("en_de"); // m_supported["babelfish"].append("en_de");
m_supported["babelfish"].append("en_it"); // m_supported["babelfish"].append("en_it");
m_supported["babelfish"].append("en_ja"); // m_supported["babelfish"].append("en_ja");
m_supported["babelfish"].append("en_ko"); // m_supported["babelfish"].append("en_ko");
m_supported["babelfish"].append("en_pt"); // m_supported["babelfish"].append("en_pt");
m_supported["babelfish"].append("en_es"); // m_supported["babelfish"].append("en_es");
/* Chinese to .. */ /* Chinese to .. */
m_supported["babelfish"].append("zh_en"); // m_supported["babelfish"].append("zh_en");
/* French to ... */ /* French to ... */
m_supported["babelfish"].append("fr_en"); // m_supported["babelfish"].append("fr_en");
m_supported["babelfish"].append("fr_de"); // m_supported["babelfish"].append("fr_de");
/* German to ... */ /* German to ... */
m_supported["babelfish"].append("de_en"); // m_supported["babelfish"].append("de_en");
m_supported["babelfish"].append("de_fr"); // m_supported["babelfish"].append("de_fr");
m_supported["babelfish"].append("it_en"); // m_supported["babelfish"].append("it_en");
m_supported["babelfish"].append("ja_en"); // m_supported["babelfish"].append("ja_en");
m_supported["babelfish"].append("ko_en"); // m_supported["babelfish"].append("ko_en");
m_supported["babelfish"].append("pt_en"); // m_supported["babelfish"].append("pt_en");
m_supported["babelfish"].append("ru_en"); // m_supported["babelfish"].append("ru_en");
m_supported["babelfish"].append("es_en"); // m_supported["babelfish"].append("es_en");
/* Google Service */ /* Google Service */
m_supported["google"].append("en_de"); m_supported["google"].append("en_de");

@ -16,6 +16,8 @@
* (at your option) any later version. * * (at your option) any later version. *
* * * *
************************************************************************* *************************************************************************
Patched by Francesco Rossi <redsh@email.it> in order to support new
google translation page layout (13-sept-2007)
*/ */
#include <qapplication.h> #include <qapplication.h>
@ -290,7 +292,8 @@ QString TranslatorPlugin::googleTranslateMessage( const QString &msg, const QStr
// kdDebug( 14308 ) << k_funcinfo << "Google response:"<< endl << data << endl; // kdDebug( 14308 ) << k_funcinfo << "Google response:"<< endl << data << endl;
QRegExp re( "<textarea name=q rows=5 cols=45 wrap=PHYSICAL>(.*)</textarea>" ); // QRegExp re( "<textarea name=q rows=5 cols=45 wrap=PHYSICAL>(.*)</textarea>" );
QRegExp re( "<textarea name=utrans wrap=PHYSICAL dilr=ltr rows=5 id=suggestion>(.*)</textarea>");
re.setMinimal( true ); re.setMinimal( true );
re.search( data ); re.search( data );
@ -325,7 +328,8 @@ QString TranslatorPlugin::babelTranslateMessage( const QString &msg, const QStri
//kdDebug( 14308 ) << k_funcinfo << "Babelfish response: " << endl << data << endl; //kdDebug( 14308 ) << k_funcinfo << "Babelfish response: " << endl << data << endl;
QRegExp re( "<Div style=padding:10px; lang=..>(.*)</div" ); // QRegExp re( "<Div style=padding:10px; lang=..>(.*)</div" );
QRegExp re( "<div style=padding:10px;>(.*)</div>" );
re.setMinimal( true ); re.setMinimal( true );
re.search( data ); re.search( data );
@ -360,7 +364,7 @@ void TranslatorPlugin::sendTranslation( Kopete::Message &msg, const QString &tra
msg.setBody( translated, msg.format() ); msg.setBody( translated, msg.format() );
break; break;
case ShowOriginal: case ShowOriginal:
msg.setBody( i18n( "%2\nAuto Translated: %1" ).arg( translated, msg.plainBody() ), msg.format() ); msg.setBody( i18n( "%2 \nAuto Translated: \n%1" ).arg( translated, msg.plainBody() ), msg.format() );
break; break;
case ShowDialog: case ShowDialog:
{ {

@ -40,8 +40,20 @@ if test "x$with_external_libgadu" != xno; then
int main() int main()
{ {
#if defined __GG_LIBGADU_HAVE_PTHREAD && defined GG_LOGIN60 #if defined __GG_LIBGADU_HAVE_PTHREAD && defined GG_LOGIN60
int maj, min, date; int maj, min, date, items;
sscanf( gg_libgadu_version(), "%u.%u.%u", &maj,&min,&date ); const char *libgadu_version = gg_libgadu_version();
items = sscanf( libgadu_version, "%u.%u.%u", &maj,&min,&date );
if ( items != 3 ) { /* version in YYYYDDMM format only */
sscanf( libgadu_version, "%u", &date );
if ( date < 20040520 )
return 1;
else
return 0;
}
if ( maj != 1 ) { if ( maj != 1 ) {
return 1; return 1;
} }

@ -2,7 +2,7 @@
/* /*
* (C) Copyright 2001-2002 Wojtek Kaniewski <wojtekka@irc.pl> * (C) Copyright 2001-2002 Wojtek Kaniewski <wojtekka@irc.pl>
* Robert J. Woźny <speedy@ziew.org> * Robert J. Wo<EFBFBD>ny <speedy@ziew.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License Version * it under the terms of the GNU Lesser General Public License Version
@ -44,12 +44,12 @@ FILE *gg_debug_file = NULL;
#ifndef GG_DEBUG_DISABLE #ifndef GG_DEBUG_DISABLE
/* /*
* gg_debug() // funkcja wewnętrzna * gg_debug() // funkcja wewn<EFBFBD>trzna
* *
* wyświetla komunikat o danym poziomie, o ile użytkownik sobie tego życzy. * wy<EFBFBD>wietla komunikat o danym poziomie, o ile u<EFBFBD>ytkownik sobie tego <EFBFBD>yczy.
* *
* - level - poziom wiadomości * - level - poziom wiadomo<EFBFBD>ci
* - format... - treść wiadomości (kompatybilna z printf()) * - format... - tre<EFBFBD><EFBFBD> wiadomo<EFBFBD>ci (kompatybilna z printf())
*/ */
void gg_debug(int level, const char *format, ...) void gg_debug(int level, const char *format, ...)
{ {
@ -79,15 +79,15 @@ cleanup:
/* /*
* gg_vsaprintf() // funkcja pomocnicza * gg_vsaprintf() // funkcja pomocnicza
* *
* robi dokładnie to samo, co vsprintf(), tyle że alokuje sobie wcześniej * robi dok<EFBFBD>adnie to samo, co vsprintf(), tyle <EFBFBD>e alokuje sobie wcze<EFBFBD>niej
* miejsce na dane. powinno działać na tych maszynach, które mają funkcję * miejsce na dane. powinno dzia<EFBFBD>a<EFBFBD> na tych maszynach, kt<EFBFBD>re maj<EFBFBD> funkcj<EFBFBD>
* vsnprintf() zgodną z C99, jak i na wcześniejszych. * vsnprintf() zgodn<EFBFBD> z C99, jak i na wcze<EFBFBD>niejszych.
* *
* - format - opis wyświetlanego tekstu jak dla printf() * - format - opis wy<EFBFBD>wietlanego tekstu jak dla printf()
* - ap - lista argumentów dla printf() * - ap - lista argument<EFBFBD>w dla printf()
* *
* zaalokowany bufor, który należy później zwolnić, lub NULL * zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD>, lub NULL
* jeśli nie udało się wykonać zadania. * je<EFBFBD>li nie uda<EFBFBD>o si<EFBFBD> wykona<EFBFBD> zadania.
*/ */
char *gg_vsaprintf(const char *format, va_list ap) char *gg_vsaprintf(const char *format, va_list ap)
{ {
@ -129,8 +129,8 @@ char *gg_vsaprintf(const char *format, va_list ap)
{ {
char tmp[2]; char tmp[2];
/* libce Solarisa przy buforze NULL zawsze zwracają -1, więc /* libce Solarisa przy buforze NULL zawsze zwracaj<EFBFBD> -1, wi<77>c
* musimy podać coś istniejącego jako cel printf()owania. */ * musimy poda<EFBFBD> co<EFBFBD> istniej<EFBFBD>cego jako cel printf()owania. */
size = vsnprintf(tmp, sizeof(tmp), format, ap); size = vsnprintf(tmp, sizeof(tmp), format, ap);
if (!(buf = malloc(size + 1))) if (!(buf = malloc(size + 1)))
return NULL; return NULL;
@ -157,14 +157,14 @@ char *gg_vsaprintf(const char *format, va_list ap)
/* /*
* gg_saprintf() // funkcja pomocnicza * gg_saprintf() // funkcja pomocnicza
* *
* robi dokładnie to samo, co sprintf(), tyle że alokuje sobie wcześniej * robi dok<EFBFBD>adnie to samo, co sprintf(), tyle <EFBFBD>e alokuje sobie wcze<EFBFBD>niej
* miejsce na dane. powinno działać na tych maszynach, które mają funkcję * miejsce na dane. powinno dzia<EFBFBD>a<EFBFBD> na tych maszynach, kt<EFBFBD>re maj<EFBFBD> funkcj<EFBFBD>
* vsnprintf() zgodną z C99, jak i na wcześniejszych. * vsnprintf() zgodn<EFBFBD> z C99, jak i na wcze<EFBFBD>niejszych.
* *
* - format... - treść taka sama jak w funkcji printf() * - format... - tre<EFBFBD><EFBFBD> taka sama jak w funkcji printf()
* *
* zaalokowany bufor, który należy później zwolnić, lub NULL * zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD>, lub NULL
* jeśli nie udało się wykonać zadania. * je<EFBFBD>li nie uda<EFBFBD>o si<EFBFBD> wykona<EFBFBD> zadania.
*/ */
char *gg_saprintf(const char *format, ...) char *gg_saprintf(const char *format, ...)
{ {
@ -181,19 +181,20 @@ char *gg_saprintf(const char *format, ...)
/* /*
* gg_get_line() // funkcja pomocnicza * gg_get_line() // funkcja pomocnicza
* *
* podaje kolejną linię z bufora tekstowego. niszczy go bezpowrotnie, dzieląc * podaje kolejn<EFBFBD> lini<EFBFBD> z bufora tekstowego. niszczy go bezpowrotnie, dziel<EFBFBD>c
* na kolejne stringi. zdarza się, nie ma potrzeby pisania funkcji dublującej * na kolejne stringi. zdarza si<EFBFBD>, nie ma potrzeby pisania funkcji dubluj<EFBFBD>cej
* bufor żeby tylko mieć nieruszone dane wejściowe, skoro i tak nie będą nam * bufor <EFBFBD>eby tylko mie<EFBFBD> nieruszone dane wej<EFBFBD>ciowe, skoro i tak nie b<EFBFBD>d<EFBFBD> nam
* poźniej potrzebne. obcina `\r\n'. * po<EFBFBD>niej potrzebne. obcina `\r\n'.
* *
* - ptr - wskaźnik do zmiennej, która przechowuje aktualną pozycję * - ptr - wska<EFBFBD>nik do zmiennej, kt<EFBFBD>ra przechowuje aktualn<EFBFBD> pozycj<EFBFBD>
* w przemiatanym buforze * w przemiatanym buforze
* *
* wskaźnik do kolejnej linii tekstu lub NULL, jeśli to już koniec bufora. * wska<EFBFBD>nik do kolejnej linii tekstu lub NULL, je<EFBFBD>li to ju<EFBFBD> koniec bufora.
*/ */
char *gg_get_line(char **ptr) char *gg_get_line(char **ptr)
{ {
char *foo, *res; const char *foo;
char *res;
if (!ptr || !*ptr || !strcmp(*ptr, "")) if (!ptr || !*ptr || !strcmp(*ptr, ""))
return NULL; return NULL;
@ -204,7 +205,6 @@ char *gg_get_line(char **ptr)
*ptr += strlen(*ptr); *ptr += strlen(*ptr);
else { else {
*ptr = foo + 1; *ptr = foo + 1;
*foo = 0;
if (strlen(res) > 1 && res[strlen(res) - 1] == '\r') if (strlen(res) > 1 && res[strlen(res) - 1] == '\r')
res[strlen(res) - 1] = 0; res[strlen(res) - 1] = 0;
} }
@ -215,15 +215,15 @@ char *gg_get_line(char **ptr)
/* /*
* gg_connect() // funkcja pomocnicza * gg_connect() // funkcja pomocnicza
* *
* łączy się z serwerem. pierwszy argument jest typu (void *), żeby nie * <EFBFBD><EFBFBD>czy si<EFBFBD> z serwerem. pierwszy argument jest typu (void *), <EFBFBD>eby nie
* musieć niczego inkludować w libgadu.h i nie psuć jakiś głupich zależności * musie<EFBFBD> niczego inkludowa<EFBFBD> w libgadu.h i nie psu<EFBFBD> jaki<EFBFBD> g<EFBFBD>upich zale<EFBFBD>no<EFBFBD>ci
* na dziwnych systemach. * na dziwnych systemach.
* *
* - addr - adres serwera (struct in_addr *) * - addr - adres serwera (struct in_addr *)
* - port - port serwera * - port - port serwera
* - async - asynchroniczne połączenie * - async - asynchroniczne po<EFBFBD><EFBFBD>czenie
* *
* deskryptor gniazda lub -1 w przypadku błędu (kod błędu w zmiennej errno). * deskryptor gniazda lub -1 w przypadku b<EFBFBD><EFBFBD>du (kod b<EFBFBD><EFBFBD>du w zmiennej errno).
*/ */
int gg_connect(void *addr, int port, int async) int gg_connect(void *addr, int port, int async)
{ {
@ -288,13 +288,13 @@ int gg_connect(void *addr, int port, int async)
/* /*
* gg_read_line() // funkcja pomocnicza * gg_read_line() // funkcja pomocnicza
* *
* czyta jedną linię tekstu z gniazda. * czyta jedn<EFBFBD> lini<EFBFBD> tekstu z gniazda.
* *
* - sock - deskryptor gniazda * - sock - deskryptor gniazda
* - buf - wskaźnik do bufora * - buf - wska<EFBFBD>nik do bufora
* - length - długość bufora * - length - d<EFBFBD>ugo<EFBFBD><EFBFBD> bufora
* *
* jeśli trafi na błąd odczytu lub podano nieprawidłowe parametry, zwraca NULL. * je<EFBFBD>li trafi na b<EFBFBD><EFBFBD>d odczytu lub podano nieprawid<EFBFBD>owe parametry, zwraca NULL.
* inaczej zwraca buf. * inaczej zwraca buf.
*/ */
char *gg_read_line(int sock, char *buf, int length) char *gg_read_line(int sock, char *buf, int length)
@ -330,9 +330,9 @@ char *gg_read_line(int sock, char *buf, int length)
/* /*
* gg_chomp() // funkcja pomocnicza * gg_chomp() // funkcja pomocnicza
* *
* ucina "\r\n" lub "\n" z końca linii. * ucina "\r\n" lub "\n" z ko<EFBFBD>ca linii.
* *
* - line - linia do przycięcia * - line - linia do przyci<EFBFBD>cia
*/ */
void gg_chomp(char *line) void gg_chomp(char *line)
{ {
@ -350,15 +350,15 @@ void gg_chomp(char *line)
} }
/* /*
* gg_urlencode() // funkcja wewnętrzna * gg_urlencode() // funkcja wewn<EFBFBD>trzna
* *
* zamienia podany tekst na ciąg znaków do formularza http. przydaje się * zamienia podany tekst na ci<EFBFBD>g znak<EFBFBD>w do formularza http. przydaje si<EFBFBD>
* przy różnych usługach katalogu publicznego. * przy r<EFBFBD><EFBFBD>nych us<EFBFBD>ugach katalogu publicznego.
* *
* - str - ciąg znaków do zakodowania * - str - ci<EFBFBD>g znak<EFBFBD>w do zakodowania
* *
* zaalokowany bufor, który należy później zwolnić albo NULL * zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD> albo NULL
* w przypadku błędu. * w przypadku b<EFBFBD><EFBFBD>du.
*/ */
char *gg_urlencode(const char *str) char *gg_urlencode(const char *str)
{ {
@ -397,14 +397,14 @@ char *gg_urlencode(const char *str)
} }
/* /*
* gg_http_hash() // funkcja wewnętrzna * gg_http_hash() // funkcja wewn<EFBFBD>trzna
* *
* funkcja licząca hash dla adresu e-mail, hasła i paru innych. * funkcja licz<EFBFBD>ca hash dla adresu e-mail, has<EFBFBD>a i paru innych.
* *
* - format... - format kolejnych parametrów ('s' jeśli dany parametr jest * - format... - format kolejnych parametr<EFBFBD>w ('s' je<EFBFBD>li dany parametr jest
* ciągiem znaków lub 'u' jeśli numerem GG) * ci<EFBFBD>giem znak<EFBFBD>w lub 'u' je<EFBFBD>li numerem GG)
* *
* hash wykorzystywany przy rejestracji i wszelkich manipulacjach własnego * hash wykorzystywany przy rejestracji i wszelkich manipulacjach w<EFBFBD>asnego
* wpisu w katalogu publicznym. * wpisu w katalogu publicznym.
*/ */
int gg_http_hash(const char *format, ...) int gg_http_hash(const char *format, ...)
@ -441,12 +441,12 @@ int gg_http_hash(const char *format, ...)
/* /*
* gg_gethostbyname() // funkcja pomocnicza * gg_gethostbyname() // funkcja pomocnicza
* *
* odpowiednik gethostbyname() troszczący się o współbieżność, gdy mamy do * odpowiednik gethostbyname() troszcz<EFBFBD>cy si<EFBFBD> o wsp<EFBFBD><EFBFBD>bie<EFBFBD>no<EFBFBD><EFBFBD>, gdy mamy do
* dyspozycji funkcję gethostbyname_r(). * dyspozycji funkcj<EFBFBD> gethostbyname_r().
* *
* - hostname - nazwa serwera * - hostname - nazwa serwera
* *
* zwraca wskaźnik na strukturę in_addr, którą należy zwolnić. * zwraca wska<EFBFBD>nik na struktur<EFBFBD> in_addr, kt<EFBFBD>r<EFBFBD> nale<EFBFBD>y zwolni<EFBFBD>.
*/ */
struct in_addr *gg_gethostbyname(const char *hostname) struct in_addr *gg_gethostbyname(const char *hostname)
{ {
@ -540,20 +540,20 @@ struct gg_win32_thread *gg_win32_threads = 0;
/* /*
* gg_win32_thread_socket() // funkcja pomocnicza, tylko dla win32 * gg_win32_thread_socket() // funkcja pomocnicza, tylko dla win32
* *
* zwraca deskryptor gniazda, które było ostatnio tworzone dla wątku * zwraca deskryptor gniazda, kt<EFBFBD>re by<EFBFBD>o ostatnio tworzone dla w<EFBFBD>tku
* o podanym identyfikatorze. * o podanym identyfikatorze.
* *
* jeśli na win32 przy połączeniach synchronicznych zapamiętamy w jakim * je<EFBFBD>li na win32 przy po<EFBFBD><EFBFBD>czeniach synchronicznych zapami<EFBFBD>tamy w jakim
* wątku uruchomiliśmy funkcję, która się z czymkolwiek łączy, to z osobnego * w<EFBFBD>tku uruchomili<EFBFBD>my funkcj<EFBFBD>, kt<EFBFBD>ra si<EFBFBD> z czymkolwiek <EFBFBD><EFBFBD>czy, to z osobnego
* wątku możemy anulować połączenie poprzez gg_win32_thread_socket(watek, -1); * w<EFBFBD>tku mo<EFBFBD>emy anulowa<EFBFBD> po<EFBFBD><EFBFBD>czenie poprzez gg_win32_thread_socket(watek, -1);
* *
* - thread_id - id wątku. jeśli jest równe 0, brany jest aktualny wątek, * - thread_id - id w<EFBFBD>tku. je<EFBFBD>li jest r<EFBFBD>wne 0, brany jest aktualny w<EFBFBD>tek,
* jeśli równe -1, usuwa wpis o podanym sockecie. * je<EFBFBD>li r<EFBFBD>wne -1, usuwa wpis o podanym sockecie.
* - socket - deskryptor gniazda. jeśli równe 0, zwraca deskryptor gniazda * - socket - deskryptor gniazda. je<EFBFBD>li r<EFBFBD>wne 0, zwraca deskryptor gniazda
* dla podanego wątku, jeśli równe -1, usuwa wpis, jeśli coś * dla podanego w<EFBFBD>tku, je<EFBFBD>li r<EFBFBD>wne -1, usuwa wpis, je<EFBFBD>li co<EFBFBD>
* innego, ustawia dla podanego wątku dany numer deskryptora. * innego, ustawia dla podanego w<EFBFBD>tku dany numer deskryptora.
* *
* jeśli socket jest równe 0, zwraca deskryptor gniazda dla podanego wątku. * je<EFBFBD>li socket jest r<EFBFBD>wne 0, zwraca deskryptor gniazda dla podanego w<EFBFBD>tku.
*/ */
int gg_win32_thread_socket(int thread_id, int socket) int gg_win32_thread_socket(int thread_id, int socket)
{ {
@ -608,9 +608,9 @@ static char gg_base64_charset[] =
/* /*
* gg_base64_encode() * gg_base64_encode()
* *
* zapisuje ciąg znaków w base64. * zapisuje ci<EFBFBD>g znak<EFBFBD>w w base64.
* *
* - buf - ciąg znaków. * - buf - ci<EFBFBD>g znak<EFBFBD>w.
* *
* zaalokowany bufor. * zaalokowany bufor.
*/ */
@ -665,14 +665,15 @@ char *gg_base64_encode(const char *buf)
/* /*
* gg_base64_decode() * gg_base64_decode()
* *
* dekoduje ciąg znaków z base64. * dekoduje ci<EFBFBD>g znak<EFBFBD>w z base64.
* *
* - buf - ciąg znaków. * - buf - ci<EFBFBD>g znak<EFBFBD>w.
* *
* zaalokowany bufor. * zaalokowany bufor.
*/ */
char *gg_base64_decode(const char *buf) char *gg_base64_decode(const char *buf)
{ {
const char *foo2;
char *res, *save, *foo, val; char *res, *save, *foo, val;
const char *end; const char *end;
unsigned int index = 0; unsigned int index = 0;
@ -692,8 +693,12 @@ char *gg_base64_decode(const char *buf)
buf++; buf++;
continue; continue;
} }
if (!(foo = strchr(gg_base64_charset, *buf))) if (!(foo2 = strchr(gg_base64_charset, *buf))) {
foo = gg_base64_charset; foo = gg_base64_charset;
}
else {
foo = foo2;
}
val = (int)(foo - gg_base64_charset); val = (int)(foo - gg_base64_charset);
buf++; buf++;
switch (index) { switch (index) {
@ -721,11 +726,11 @@ char *gg_base64_decode(const char *buf)
} }
/* /*
* gg_proxy_auth() // funkcja wewnętrzna * gg_proxy_auth() // funkcja wewn<EFBFBD>trzna
* *
* tworzy nagłówek autoryzacji dla proxy. * tworzy nag<EFBFBD><EFBFBD>wek autoryzacji dla proxy.
* *
* zaalokowany tekst lub NULL, jeśli proxy nie jest włączone lub nie wymaga * zaalokowany tekst lub NULL, je<EFBFBD>li proxy nie jest w<EFBFBD><EFBFBD>czone lub nie wymaga
* autoryzacji. * autoryzacji.
*/ */
char *gg_proxy_auth() char *gg_proxy_auth()
@ -764,7 +769,7 @@ static uint32_t gg_crc32_table[256];
static int gg_crc32_initialized = 0; static int gg_crc32_initialized = 0;
/* /*
* gg_crc32_make_table() // funkcja wewnętrzna * gg_crc32_make_table() // funkcja wewn<EFBFBD>trzna
*/ */
static void gg_crc32_make_table() static void gg_crc32_make_table()
{ {
@ -786,11 +791,11 @@ static void gg_crc32_make_table()
/* /*
* gg_crc32() * gg_crc32()
* *
* wyznacza sumę kontrolną CRC32 danego bloku danych. * wyznacza sum<EFBFBD> kontroln<EFBFBD> CRC32 danego bloku danych.
* *
* - crc - suma kontrola poprzedniego bloku danych lub 0 jeśli pierwszy * - crc - suma kontrola poprzedniego bloku danych lub 0 je<EFBFBD>li pierwszy
* - buf - bufor danych * - buf - bufor danych
* - size - ilość danych * - size - ilo<EFBFBD><EFBFBD> danych
* *
* suma kontrolna CRC32. * suma kontrolna CRC32.
*/ */

@ -2,8 +2,8 @@
/* /*
* (C) Copyright 2001-2006 Wojtek Kaniewski <wojtekka@irc.pl> * (C) Copyright 2001-2006 Wojtek Kaniewski <wojtekka@irc.pl>
* Robert J. Woźny <speedy@ziew.org> * Robert J. Wo<EFBFBD>ny <speedy@ziew.org>
* Arkadiusz Miśkiewicz <arekm@pld-linux.org> * Arkadiusz Mi<EFBFBD>kiewicz <arekm@pld-linux.org>
* Adam Wysocki <gophi@ekg.chmurka.net> * Adam Wysocki <gophi@ekg.chmurka.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -50,9 +50,9 @@
/* /*
* gg_event_free() * gg_event_free()
* *
* zwalnia pamięć zajmowaną przez informację o zdarzeniu. * zwalnia pami<EFBFBD><EFBFBD> zajmowan<EFBFBD> przez informacj<EFBFBD> o zdarzeniu.
* *
* - e - wskaźnik do informacji o zdarzeniu * - e - wska<EFBFBD>nik do informacji o zdarzeniu
*/ */
void gg_event_free(struct gg_event *e) void gg_event_free(struct gg_event *e)
{ {
@ -127,7 +127,7 @@ void gg_event_free(struct gg_event *e)
* *
* - s - sesja * - s - sesja
* - q - kolejka * - q - kolejka
* - freeq - czy zwolnić kolejkę * - freeq - czy zwolni<EFBFBD> kolejk<EFBFBD>
* *
* 0/-1 * 0/-1
*/ */
@ -161,9 +161,9 @@ int gg_image_queue_remove(struct gg_session *s, struct gg_image_queue *q, int fr
} }
/* /*
* gg_image_queue_parse() // funkcja wewnętrzna * gg_image_queue_parse() // funkcja wewn<EFBFBD>trzna
* *
* parsuje przychodzący pakiet z obrazkiem. * parsuje przychodz<EFBFBD>cy pakiet z obrazkiem.
* *
* - e - opis zdarzenia * - e - opis zdarzenia
* - * -
@ -178,7 +178,7 @@ static void gg_image_queue_parse(struct gg_event *e, char *p, unsigned int len,
return; return;
} }
/* znajdź dany obrazek w kolejce danej sesji */ /* znajd<EFBFBD> dany obrazek w kolejce danej sesji */
for (qq = sess->images, q = NULL; qq; qq = qq->next) { for (qq = sess->images, q = NULL; qq; qq = qq->next) {
if (sender == qq->sender && i->size == qq->size && i->crc32 == qq->crc32) { if (sender == qq->sender && i->size == qq->size && i->crc32 == qq->crc32) {
@ -200,7 +200,7 @@ static void gg_image_queue_parse(struct gg_event *e, char *p, unsigned int len,
len -= sizeof(struct gg_msg_image_reply); len -= sizeof(struct gg_msg_image_reply);
p += sizeof(struct gg_msg_image_reply); p += sizeof(struct gg_msg_image_reply);
/* sprawdź, czy mamy tekst zakończony \0 */ /* sprawd<EFBFBD>, czy mamy tekst zako<6B>czony \0 */
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
if (!p[i]) { if (!p[i]) {
@ -232,7 +232,7 @@ static void gg_image_queue_parse(struct gg_event *e, char *p, unsigned int len,
memcpy(q->image + q->done, p, len); memcpy(q->image + q->done, p, len);
q->done += len; q->done += len;
/* jeśli skończono odbierać obrazek, wygeneruj zdarzenie */ /* je<EFBFBD>li sko<6B>czono odbiera<72> obrazek, wygeneruj zdarzenie */
if (q->done >= q->size) { if (q->done >= q->size) {
e->type = GG_EVENT_IMAGE_REPLY; e->type = GG_EVENT_IMAGE_REPLY;
@ -249,12 +249,12 @@ static void gg_image_queue_parse(struct gg_event *e, char *p, unsigned int len,
} }
/* /*
* gg_handle_recv_msg() // funkcja wewnętrzna * gg_handle_recv_msg() // funkcja wewn<EFBFBD>trzna
* *
* obsługuje pakiet z przychodzącą wiadomością, rozbijając go na dodatkowe * obs<EFBFBD>uguje pakiet z przychodz<EFBFBD>c<EFBFBD> wiadomo<EFBFBD>ci<EFBFBD>, rozbijaj<EFBFBD>c go na dodatkowe
* struktury (konferencje, kolorki) w razie potrzeby. * struktury (konferencje, kolorki) w razie potrzeby.
* *
* - h - nagłówek pakietu * - h - nag<EFBFBD><EFBFBD>wek pakietu
* - e - opis zdarzenia * - e - opis zdarzenia
* *
* 0, -1. * 0, -1.
@ -384,7 +384,7 @@ static int gg_handle_recv_msg(struct gg_header *h, struct gg_event *e, struct gg
if (p + sizeof(struct gg_msg_image_reply) == packet_end) { if (p + sizeof(struct gg_msg_image_reply) == packet_end) {
/* pusta odpowiedź - klient po drugiej stronie nie ma żądanego obrazka */ /* pusta odpowied<EFBFBD> - klient po drugiej stronie nie ma <20><>danego obrazka */
e->type = GG_EVENT_IMAGE_REPLY; e->type = GG_EVENT_IMAGE_REPLY;
e->event.image_reply.sender = gg_fix32(r->sender); e->event.image_reply.sender = gg_fix32(r->sender);
@ -438,11 +438,11 @@ fail:
} }
/* /*
* gg_watch_fd_connected() // funkcja wewnętrzna * gg_watch_fd_connected() // funkcja wewn<EFBFBD>trzna
* *
* patrzy na gniazdo, odbiera pakiet i wypełnia strukturę zdarzenia. * patrzy na gniazdo, odbiera pakiet i wype<EFBFBD>nia struktur<EFBFBD> zdarzenia.
* *
* - sess - struktura opisująca sesję * - sess - struktura opisuj<EFBFBD>ca sesj<EFBFBD>
* - e - opis zdarzenia * - e - opis zdarzenia
* *
* 0, -1. * 0, -1.
@ -727,7 +727,7 @@ static int gg_watch_fd_connected(struct gg_session *sess, struct gg_event *e)
if (h->length < 1) if (h->length < 1)
break; break;
/* jeśli odpowiedź na eksport, wywołaj zdarzenie tylko /* je<EFBFBD>li odpowied<65> na eksport, wywo<77>aj zdarzenie tylko
* gdy otrzymano wszystkie odpowiedzi */ * gdy otrzymano wszystkie odpowiedzi */
if (p[0] == GG_USERLIST_PUT_REPLY || p[0] == GG_USERLIST_PUT_MORE_REPLY) { if (p[0] == GG_USERLIST_PUT_REPLY || p[0] == GG_USERLIST_PUT_MORE_REPLY) {
if (--sess->userlist_blocks) if (--sess->userlist_blocks)
@ -780,16 +780,16 @@ fail:
/* /*
* gg_watch_fd() * gg_watch_fd()
* *
* funkcja, którą należy wywołać, gdy coś się stanie z obserwowanym * funkcja, kt<EFBFBD>r<EFBFBD> nale<EFBFBD>y wywo<EFBFBD>a<EFBFBD>, gdy co<EFBFBD> si<EFBFBD> stanie z obserwowanym
* deskryptorem. zwraca klientowi informację o tym, co się dzieje. * deskryptorem. zwraca klientowi informacj<EFBFBD> o tym, co si<EFBFBD> dzieje.
* *
* - sess - opis sesji * - sess - opis sesji
* *
* wskaźnik do struktury gg_event, którą trzeba zwolnić później * wska<EFBFBD>nik do struktury gg_event, kt<EFBFBD>r<EFBFBD> trzeba zwolni<EFBFBD> p<EFBFBD><EFBFBD>niej
* za pomocą gg_event_free(). jesli rodzaj zdarzenia jest równy * za pomoc<EFBFBD> gg_event_free(). jesli rodzaj zdarzenia jest r<EFBFBD>wny
* GG_EVENT_NONE, należy je zignorować. jeśli zwróciło NULL, * GG_EVENT_NONE, nale<EFBFBD>y je zignorowa<EFBFBD>. je<EFBFBD>li zwr<EFBFBD>ci<EFBFBD>o NULL,
* stało się coś niedobrego -- albo zabrakło pamięci albo zerwało * sta<EFBFBD>o si<EFBFBD> co<EFBFBD> niedobrego -- albo zabrak<EFBFBD>o pami<EFBFBD>ci albo zerwa<EFBFBD>o
* połączenie. * po<EFBFBD><EFBFBD>czenie.
*/ */
struct gg_event *gg_watch_fd(struct gg_session *sess) struct gg_event *gg_watch_fd(struct gg_session *sess)
{ {
@ -845,14 +845,14 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
goto fail_resolving; goto fail_resolving;
} }
/* jeśli jesteśmy w resolverze i mamy ustawiony port /* je<EFBFBD>li jeste<74>my w resolverze i mamy ustawiony port
* proxy, znaczy, że resolvowaliśmy proxy. zatem * proxy, znaczy, <EFBFBD>e resolvowali<EFBFBD>my proxy. zatem
* wpiszmy jego adres. */ * wpiszmy jego adres. */
if (sess->proxy_port) if (sess->proxy_port)
sess->proxy_addr = addr.s_addr; sess->proxy_addr = addr.s_addr;
/* zapiszmy sobie adres huba i adres serwera (do /* zapiszmy sobie adres huba i adres serwera (do
* bezpośredniego połączenia, jeśli hub leży) * bezpo<EFBFBD>redniego po<EFBFBD><EFBFBD>czenia, je<EFBFBD>li hub le<EFBFBD>y)
* z resolvera. */ * z resolvera. */
if (sess->proxy_addr && sess->proxy_port) if (sess->proxy_addr && sess->proxy_port)
port = sess->proxy_port; port = sess->proxy_port;
@ -863,17 +863,17 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() resolved, connecting to %s:%d\n", inet_ntoa(addr), port); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() resolved, connecting to %s:%d\n", inet_ntoa(addr), port);
/* łączymy się albo z hubem, albo z proxy, zależnie /* <EFBFBD><EFBFBD>czymy si<73> albo z hubem, albo z proxy, zale<6C>nie
* od tego, co resolvowaliśmy. */ * od tego, co resolvowali<EFBFBD>my. */
if ((sess->fd = gg_connect(&addr, port, sess->async)) == -1) { if ((sess->fd = gg_connect(&addr, port, sess->async)) == -1) {
/* jeśli w trybie asynchronicznym gg_connect() /* je<EFBFBD>li w trybie asynchronicznym gg_connect()
* zwróci błąd, nie ma sensu próbować dalej. */ * zwr<EFBFBD>ci b<EFBFBD><EFBFBD>d, nie ma sensu pr<EFBFBD>bowa<EFBFBD> dalej. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), critical\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), critical\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
} }
/* jeśli podano serwer i łączmy się przez proxy, /* je<EFBFBD>li podano serwer i <20><>czmy si<73> przez proxy,
* jest to bezpośrednie połączenie, inaczej jest * jest to bezpo<EFBFBD>rednie po<EFBFBD><EFBFBD>czenie, inaczej jest
* do huba. */ * do huba. */
sess->state = (sess->proxy_addr && sess->proxy_port && sess->server_addr) ? GG_STATE_CONNECTING_GG : GG_STATE_CONNECTING_HUB; sess->state = (sess->proxy_addr && sess->proxy_port && sess->server_addr) ? GG_STATE_CONNECTING_GG : GG_STATE_CONNECTING_HUB;
sess->check = GG_CHECK_WRITE; sess->check = GG_CHECK_WRITE;
@ -890,11 +890,11 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_HUB\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_HUB\n");
/* jeśli asynchroniczne, sprawdzamy, czy nie wystąpił /* je<EFBFBD>li asynchroniczne, sprawdzamy, czy nie wyst<73>pi<70>
* przypadkiem jakiś błąd. */ * przypadkiem jaki<EFBFBD> b<EFBFBD><EFBFBD>d. */
if (sess->async && (getsockopt(sess->fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res)) { if (sess->async && (getsockopt(sess->fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res)) {
/* no tak, nie udało się połączyć z proxy. nawet /* no tak, nie uda<EFBFBD>o si<73> po<70><6F>czy<7A> z proxy. nawet
* nie próbujemy dalej. */ * nie pr<EFBFBD>bujemy dalej. */
if (sess->proxy_addr && sess->proxy_port) { if (sess->proxy_addr && sess->proxy_port) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", res, strerror(res)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", res, strerror(res));
goto fail_connecting; goto fail_connecting;
@ -905,9 +905,9 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
if ((sess->fd = gg_connect(&sess->hub_addr, GG_DEFAULT_PORT, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->hub_addr, GG_DEFAULT_PORT, sess->async)) == -1) {
/* przy asynchronicznych, gg_connect() /* przy asynchronicznych, gg_connect()
* zwraca -1 przy błędach socket(), * zwraca -1 przy b<EFBFBD><EFBFBD>dach socket(),
* ioctl(), braku routingu itd. dlatego * ioctl(), braku routingu itd. dlatego
* nawet nie próbujemy dalej. */ * nawet nie pr<EFBFBD>bujemy dalej. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() direct connection failed (errno=%d, %s), critical\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() direct connection failed (errno=%d, %s), critical\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
} }
@ -952,7 +952,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
free(client); free(client);
/* zwolnij pamięć po wersji klienta. */ /* zwolnij pami<EFBFBD><EFBFBD> po wersji klienta. */
if (sess->client_version) { if (sess->client_version) {
free(sess->client_version); free(sess->client_version);
sess->client_version = NULL; sess->client_version = NULL;
@ -960,9 +960,9 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "=> -----BEGIN-HTTP-QUERY-----\n%s\n=> -----END-HTTP-QUERY-----\n", buf); gg_debug(GG_DEBUG_MISC, "=> -----BEGIN-HTTP-QUERY-----\n%s\n=> -----END-HTTP-QUERY-----\n", buf);
/* zapytanie jest krótkie, więc zawsze zmieści się /* zapytanie jest kr<EFBFBD>tkie, wi<77>c zawsze zmie<69>ci si<73>
* do bufora gniazda. jeśli write() zwróci mniej, * do bufora gniazda. je<EFBFBD>li write() zwr<EFBFBD>ci mniej,
* stało się coś złego. */ * sta<EFBFBD>o si<EFBFBD> co<EFBFBD> z<EFBFBD>ego. */
if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) { if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() sending query failed\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() sending query failed\n");
@ -989,22 +989,22 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_READING_DATA\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_READING_DATA\n");
/* czytamy linię z gniazda i obcinamy \r\n. */ /* czytamy lini<EFBFBD> z gniazda i obcinamy \r\n. */
gg_read_line(sess->fd, buf, sizeof(buf) - 1); gg_read_line(sess->fd, buf, sizeof(buf) - 1);
gg_chomp(buf); gg_chomp(buf);
gg_debug(GG_DEBUG_TRAFFIC, "// gg_watch_fd() received http header (%s)\n", buf); gg_debug(GG_DEBUG_TRAFFIC, "// gg_watch_fd() received http header (%s)\n", buf);
/* sprawdzamy, czy wszystko w porządku. */ /* sprawdzamy, czy wszystko w porz<EFBFBD>dku. */
if (strncmp(buf, "HTTP/1.", 7) || strncmp(buf + 9, "200", 3)) { if (strncmp(buf, "HTTP/1.", 7) || strncmp(buf + 9, "200", 3)) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() that's not what we've expected, trying direct connection\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() that's not what we've expected, trying direct connection\n");
close(sess->fd); close(sess->fd);
/* jeśli otrzymaliśmy jakieś dziwne informacje, /* je<EFBFBD>li otrzymali<6C>my jakie<69> dziwne informacje,
* próbujemy się łączyć z pominięciem huba. */ * pr<EFBFBD>bujemy si<EFBFBD> <EFBFBD><EFBFBD>czy<EFBFBD> z pomini<EFBFBD>ciem huba. */
if (sess->proxy_addr && sess->proxy_port) { if (sess->proxy_addr && sess->proxy_port) {
if ((sess->fd = gg_connect(&sess->proxy_addr, sess->proxy_port, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->proxy_addr, sess->proxy_port, sess->async)) == -1) {
/* trudno. nie wyszło. */ /* trudno. nie wysz<EFBFBD>o. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
} }
@ -1017,13 +1017,13 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
sess->port = GG_DEFAULT_PORT; sess->port = GG_DEFAULT_PORT;
/* łączymy się na port 8074 huba. */ /* <EFBFBD><EFBFBD>czymy si<73> na port 8074 huba. */
if ((sess->fd = gg_connect(&sess->hub_addr, sess->port, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->hub_addr, sess->port, sess->async)) == -1) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno));
sess->port = GG_HTTPS_PORT; sess->port = GG_HTTPS_PORT;
/* łączymy się na port 443. */ /* <EFBFBD><EFBFBD>czymy si<73> na port 443. */
if ((sess->fd = gg_connect(&sess->hub_addr, sess->port, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->hub_addr, sess->port, sess->async)) == -1) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
@ -1036,16 +1036,16 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
break; break;
} }
/* ignorujemy resztę nagłówka. */ /* ignorujemy reszt<EFBFBD> nag<61><67>wka. */
while (strcmp(buf, "\r\n") && strcmp(buf, "")) while (strcmp(buf, "\r\n") && strcmp(buf, ""))
gg_read_line(sess->fd, buf, sizeof(buf) - 1); gg_read_line(sess->fd, buf, sizeof(buf) - 1);
/* czytamy pierwszą linię danych. */ /* czytamy pierwsz<EFBFBD> lini<6E> danych. */
gg_read_line(sess->fd, buf, sizeof(buf) - 1); gg_read_line(sess->fd, buf, sizeof(buf) - 1);
gg_chomp(buf); gg_chomp(buf);
/* jeśli pierwsza liczba w linii nie jest równa zeru, /* je<EFBFBD>li pierwsza liczba w linii nie jest r<>wna zeru,
* oznacza to, że mamy wiadomość systemową. */ * oznacza to, <EFBFBD>e mamy wiadomo<EFBFBD><EFBFBD> systemow<EFBFBD>. */
if (atoi(buf)) { if (atoi(buf)) {
char tmp[1024], *foo, *sysmsg_buf = NULL; char tmp[1024], *foo, *sysmsg_buf = NULL;
int len = 0; int len = 0;
@ -1088,7 +1088,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
tmp++; tmp++;
*tmp = 0; *tmp = 0;
if ((tmp = strchr(host, ':'))) { if ((tmp = (char*)strchr(host, ':'))) {
*tmp = 0; *tmp = 0;
port = atoi(tmp + 1); port = atoi(tmp + 1);
} }
@ -1103,9 +1103,9 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
sess->server_addr = addr.s_addr; sess->server_addr = addr.s_addr;
if (!gg_proxy_http_only && sess->proxy_addr && sess->proxy_port) { if (!gg_proxy_http_only && sess->proxy_addr && sess->proxy_port) {
/* jeśli mamy proxy, łączymy się z nim. */ /* je<EFBFBD>li mamy proxy, <20><>czymy si<73> z nim. */
if ((sess->fd = gg_connect(&sess->proxy_addr, sess->proxy_port, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->proxy_addr, sess->proxy_port, sess->async)) == -1) {
/* nie wyszło? trudno. */ /* nie wysz<EFBFBD>o? trudno. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
} }
@ -1118,15 +1118,15 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
sess->port = port; sess->port = port;
/* łączymy się z właściwym serwerem. */ /* <EFBFBD><EFBFBD>czymy si<73> z w<>a<EFBFBD>ciwym serwerem. */
if ((sess->fd = gg_connect(&addr, sess->port, sess->async)) == -1) { if ((sess->fd = gg_connect(&addr, sess->port, sess->async)) == -1) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno));
sess->port = GG_HTTPS_PORT; sess->port = GG_HTTPS_PORT;
/* nie wyszło? próbujemy portu 443. */ /* nie wysz<EFBFBD>o? pr<70>bujemy portu 443. */
if ((sess->fd = gg_connect(&addr, GG_HTTPS_PORT, sess->async)) == -1) { if ((sess->fd = gg_connect(&addr, GG_HTTPS_PORT, sess->async)) == -1) {
/* ostatnia deska ratunku zawiodła? /* ostatnia deska ratunku zawiod<EFBFBD>a?
* w takim razie zwijamy manatki. */ * w takim razie zwijamy manatki. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
@ -1146,10 +1146,10 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_GG\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() GG_STATE_CONNECTING_GG\n");
/* jeśli wystąpił błąd podczas łączenia się... */ /* je<EFBFBD>li wyst<73>pi<70> b<><62>d podczas <20><>czenia si<73>... */
if (sess->async && (sess->timeout == 0 || getsockopt(sess->fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res)) { if (sess->async && (sess->timeout == 0 || getsockopt(sess->fd, SOL_SOCKET, SO_ERROR, &res, &res_size) || res)) {
/* jeśli nie udało się połączenie z proxy, /* je<EFBFBD>li nie uda<64>o si<73> po<70><6F>czenie z proxy,
* nie mamy czego próbować więcej. */ * nie mamy czego pr<EFBFBD>bowa<EFBFBD> wi<EFBFBD>cej. */
if (sess->proxy_addr && sess->proxy_port) { if (sess->proxy_addr && sess->proxy_port) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", res, strerror(res)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection to proxy failed (errno=%d, %s)\n", res, strerror(res));
goto fail_connecting; goto fail_connecting;
@ -1164,10 +1164,10 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
#endif #endif
#ifdef __GG_LIBGADU_HAVE_OPENSSL #ifdef __GG_LIBGADU_HAVE_OPENSSL
/* jeśli logujemy się po TLS, nie próbujemy /* je<EFBFBD>li logujemy si<73> po TLS, nie pr<70>bujemy
* się łączyć już z niczym innym w przypadku * si<EFBFBD> <EFBFBD><EFBFBD>czy<EFBFBD> ju<EFBFBD> z niczym innym w przypadku
* błędu. nie dość, że nie ma sensu, to i * b<EFBFBD><EFBFBD>du. nie do<EFBFBD><EFBFBD>, <EFBFBD>e nie ma sensu, to i
* trzeba by się bawić w tworzenie na nowo * trzeba by si<EFBFBD> bawi<EFBFBD> w tworzenie na nowo
* SSL i SSL_CTX. */ * SSL i SSL_CTX. */
if (sess->ssl) { if (sess->ssl) {
@ -1180,7 +1180,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
sess->port = GG_HTTPS_PORT; sess->port = GG_HTTPS_PORT;
/* próbujemy na port 443. */ /* pr<EFBFBD>bujemy na port 443. */
if ((sess->fd = gg_connect(&sess->server_addr, sess->port, sess->async)) == -1) { if ((sess->fd = gg_connect(&sess->server_addr, sess->port, sess->async)) == -1) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno)); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting; goto fail_connecting;
@ -1192,7 +1192,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
if (gg_proxy_http_only) if (gg_proxy_http_only)
sess->proxy_port = 0; sess->proxy_port = 0;
/* jeśli mamy proxy, wyślijmy zapytanie. */ /* je<EFBFBD>li mamy proxy, wy<77>lijmy zapytanie. */
if (sess->proxy_addr && sess->proxy_port) { if (sess->proxy_addr && sess->proxy_port) {
char buf[100], *auth = gg_proxy_auth(); char buf[100], *auth = gg_proxy_auth();
struct in_addr addr; struct in_addr addr;
@ -1206,9 +1206,9 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() proxy request:\n// %s", buf); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() proxy request:\n// %s", buf);
/* wysyłamy zapytanie. jest ono na tyle krótkie, /* wysy<EFBFBD>amy zapytanie. jest ono na tyle kr<6B>tkie,
* że musi się zmieścić w buforze gniazda. jeśli * <EFBFBD>e musi si<EFBFBD> zmie<EFBFBD>ci<EFBFBD> w buforze gniazda. je<EFBFBD>li
* write() zawiedzie, stało się coś złego. */ * write() zawiedzie, sta<EFBFBD>o si<EFBFBD> co<EFBFBD> z<EFBFBD>ego. */
if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) { if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() can't send proxy request\n"); gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() can't send proxy request\n");
if (auth) if (auth)
@ -1344,8 +1344,8 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
memset(&l, 0, sizeof(l)); memset(&l, 0, sizeof(l));
l.dunno2 = 0xbe; l.dunno2 = 0xbe;
/* XXX bardzo, bardzo, bardzo głupi pomysł na pozbycie /* XXX bardzo, bardzo, bardzo g<EFBFBD>upi pomys<79> na pozbycie
* się tekstu wrzucanego przez proxy. */ * si<EFBFBD> tekstu wrzucanego przez proxy. */
if (sess->proxy_addr && sess->proxy_port) { if (sess->proxy_addr && sess->proxy_port) {
char buf[100]; char buf[100];
@ -1362,7 +1362,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
} }
/* XXX niech czeka jeszcze raz w tej samej /* XXX niech czeka jeszcze raz w tej samej
* fazie. głupio, ale działa. */ * fazie. g<EFBFBD>upio, ale dzia<EFBFBD>a. */
sess->proxy_port = 0; sess->proxy_port = 0;
break; break;

@ -44,17 +44,17 @@
/* /*
* gg_http_connect() // funkcja pomocnicza * gg_http_connect() // funkcja pomocnicza
* *
* rozpoczyna połączenie po http. * rozpoczyna po<EFBFBD><EFBFBD>czenie po http.
* *
* - hostname - adres serwera * - hostname - adres serwera
* - port - port serwera * - port - port serwera
* - async - asynchroniczne połączenie * - async - asynchroniczne po<EFBFBD><EFBFBD>czenie
* - method - metoda http (GET, POST, cokolwiek) * - method - metoda http (GET, POST, cokolwiek)
* - path - ścieżka do zasobu (musi być poprzedzona ,,/'') * - path - <EFBFBD>cie<EFBFBD>ka do zasobu (musi by<EFBFBD> poprzedzona ,,/'')
* - header - nagłówek zapytania plus ewentualne dane dla POST * - header - nag<EFBFBD><EFBFBD>wek zapytania plus ewentualne dane dla POST
* *
* zaalokowana struct gg_http, którą poźniej należy * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y
* zwolnić funkcją gg_http_free(), albo NULL jeśli wystąpił błąd. * zwolni<EFBFBD> funkcj<EFBFBD> gg_http_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_http_connect(const char *hostname, int port, int async, const char *method, const char *path, const char *header) struct gg_http *gg_http_connect(const char *hostname, int port, int async, const char *method, const char *path, const char *header)
{ {
@ -166,14 +166,14 @@ struct gg_http *gg_http_connect(const char *hostname, int port, int async, const
/* /*
* gg_http_watch_fd() * gg_http_watch_fd()
* *
* przy asynchronicznej obsłudze HTTP funkcję tą należy wywołać, jeśli * przy asynchronicznej obs<EFBFBD>udze HTTP funkcj<EFBFBD> t<EFBFBD> nale<EFBFBD>y wywo<EFBFBD>a<EFBFBD>, je<EFBFBD>li
* zmieniło się coś na obserwowanym deskryptorze. * zmieni<EFBFBD>o si<EFBFBD> co<EFBFBD> na obserwowanym deskryptorze.
* *
* - h - struktura opisująca połączenie * - h - struktura opisuj<EFBFBD>ca po<EFBFBD><EFBFBD>czenie
* *
* jeśli wszystko poszło dobrze to 0, inaczej -1. połączenie będzie * je<EFBFBD>li wszystko posz<EFBFBD>o dobrze to 0, inaczej -1. po<EFBFBD><EFBFBD>czenie b<EFBFBD>dzie
* zakończone, jeśli h->state == GG_STATE_PARSING. jeśli wystąpi jakiś * zako<EFBFBD>czone, je<EFBFBD>li h->state == GG_STATE_PARSING. je<EFBFBD>li wyst<EFBFBD>pi jaki<EFBFBD>
* błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error. * b<EFBFBD><EFBFBD>d, to b<EFBFBD>dzie tam GG_STATE_ERROR i odpowiedni kod b<EFBFBD><EFBFBD>du w h->error.
*/ */
int gg_http_watch_fd(struct gg_http *h) int gg_http_watch_fd(struct gg_http *h)
{ {
@ -339,7 +339,7 @@ int gg_http_watch_fd(struct gg_http *h)
if (!strncasecmp(line, "Content-length: ", 16)) { if (!strncasecmp(line, "Content-length: ", 16)) {
h->body_size = atoi(line + 16); h->body_size = atoi(line + 16);
} }
line = strchr(line, '\n'); line = (char*)strchr(line, '\n');
if (line) if (line)
line++; line++;
} }
@ -451,9 +451,9 @@ int gg_http_watch_fd(struct gg_http *h)
/* /*
* gg_http_stop() * gg_http_stop()
* *
* jeśli połączenie jest w trakcie, przerywa je. nie zwalnia h->data. * je<EFBFBD>li po<EFBFBD><EFBFBD>czenie jest w trakcie, przerywa je. nie zwalnia h->data.
* *
* - h - struktura opisująca połączenie * - h - struktura opisuj<EFBFBD>ca po<EFBFBD><EFBFBD>czenie
*/ */
void gg_http_stop(struct gg_http *h) void gg_http_stop(struct gg_http *h)
{ {
@ -469,7 +469,7 @@ void gg_http_stop(struct gg_http *h)
} }
/* /*
* gg_http_free_fields() // funkcja wewnętrzna * gg_http_free_fields() // funkcja wewn<EFBFBD>trzna
* *
* zwalnia pola struct gg_http, ale nie zwalnia samej struktury. * zwalnia pola struct gg_http, ale nie zwalnia samej struktury.
*/ */
@ -497,9 +497,9 @@ void gg_http_free_fields(struct gg_http *h)
/* /*
* gg_http_free() * gg_http_free()
* *
* próbuje zamknąć połączenie i zwalnia pamięć po nim. * pr<EFBFBD>buje zamkn<EFBFBD><EFBFBD> po<EFBFBD><EFBFBD>czenie i zwalnia pami<EFBFBD><EFBFBD> po nim.
* *
* - h - struktura, którą należy zlikwidować * - h - struktura, kt<EFBFBD>r<EFBFBD> nale<EFBFBD>y zlikwidowa<EFBFBD>
*/ */
void gg_http_free(struct gg_http *h) void gg_http_free(struct gg_http *h)
{ {

@ -33,17 +33,17 @@
/* /*
* gg_register3() * gg_register3()
* *
* rozpoczyna rejestrację użytkownika protokołem GG 6.0. wymaga wcześniejszego * rozpoczyna rejestracj<EFBFBD> u<EFBFBD>ytkownika protoko<EFBFBD>em GG 6.0. wymaga wcze<EFBFBD>niejszego
* pobrania tokenu za pomocą funkcji gg_token(). * pobrania tokenu za pomoc<EFBFBD> funkcji gg_token().
* *
* - email - adres e-mail klienta * - email - adres e-mail klienta
* - password - hasło klienta * - password - has<EFBFBD>o klienta
* - tokenid - identyfikator tokenu * - tokenid - identyfikator tokenu
* - tokenval - wartość tokenu * - tokenval - warto<EFBFBD><EFBFBD> tokenu
* - async - połączenie asynchroniczne * - async - po<EFBFBD><EFBFBD>czenie asynchroniczne
* *
* zaalokowana struct gg_http, którą poźniej należy zwolnić * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y zwolni<EFBFBD>
* funkcją gg_register_free(), albo NULL jeśli wystąpił błąd. * funkcj<EFBFBD> gg_register_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_register3(const char *email, const char *password, const char *tokenid, const char *tokenval, int async) struct gg_http *gg_register3(const char *email, const char *password, const char *tokenid, const char *tokenval, int async)
{ {
@ -125,16 +125,16 @@ struct gg_http *gg_register3(const char *email, const char *password, const char
/* /*
* gg_unregister3() * gg_unregister3()
* *
* usuwa konto użytkownika z serwera protokołem GG 6.0 * usuwa konto u<EFBFBD>ytkownika z serwera protoko<EFBFBD>em GG 6.0
* *
* - uin - numerek GG * - uin - numerek GG
* - password - hasło klienta * - password - has<EFBFBD>o klienta
* - tokenid - identyfikator tokenu * - tokenid - identyfikator tokenu
* - tokenval - wartość tokenu * - tokenval - warto<EFBFBD><EFBFBD> tokenu
* - async - połączenie asynchroniczne * - async - po<EFBFBD><EFBFBD>czenie asynchroniczne
* *
* zaalokowana struct gg_http, którą poźniej należy zwolnić * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y zwolni<EFBFBD>
* funkcją gg_unregister_free(), albo NULL jeśli wystąpił błąd. * funkcj<EFBFBD> gg_unregister_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_unregister3(uin_t uin, const char *password, const char *tokenid, const char *tokenval, int async) struct gg_http *gg_unregister3(uin_t uin, const char *password, const char *tokenid, const char *tokenval, int async)
{ {
@ -214,19 +214,19 @@ struct gg_http *gg_unregister3(uin_t uin, const char *password, const char *toke
/* /*
* gg_change_passwd4() * gg_change_passwd4()
* *
* wysyła żądanie zmiany hasła zgodnie z protokołem GG 6.0. wymaga * wysy<EFBFBD>a <EFBFBD><EFBFBD>danie zmiany has<EFBFBD>a zgodnie z protoko<EFBFBD>em GG 6.0. wymaga
* wcześniejszego pobrania tokenu za pomocą funkcji gg_token(). * wcze<EFBFBD>niejszego pobrania tokenu za pomoc<EFBFBD> funkcji gg_token().
* *
* - uin - numer * - uin - numer
* - email - adres e-mail * - email - adres e-mail
* - passwd - stare hasło * - passwd - stare has<EFBFBD>o
* - newpasswd - nowe hasło * - newpasswd - nowe has<EFBFBD>o
* - tokenid - identyfikator tokenu * - tokenid - identyfikator tokenu
* - tokenval - wartość tokenu * - tokenval - warto<EFBFBD><EFBFBD> tokenu
* - async - połączenie asynchroniczne * - async - po<EFBFBD><EFBFBD>czenie asynchroniczne
* *
* zaalokowana struct gg_http, którą poźniej należy zwolnić * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y zwolni<EFBFBD>
* funkcją gg_change_passwd_free(), albo NULL jeśli wystąpił błąd. * funkcj<EFBFBD> gg_change_passwd_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_change_passwd4(uin_t uin, const char *email, const char *passwd, const char *newpasswd, const char *tokenid, const char *tokenval, int async) struct gg_http *gg_change_passwd4(uin_t uin, const char *email, const char *passwd, const char *newpasswd, const char *tokenid, const char *tokenval, int async)
{ {
@ -313,16 +313,16 @@ struct gg_http *gg_change_passwd4(uin_t uin, const char *email, const char *pass
/* /*
* gg_remind_passwd3() * gg_remind_passwd3()
* *
* wysyła żądanie przypomnienia hasła e-mailem. * wysy<EFBFBD>a <EFBFBD><EFBFBD>danie przypomnienia has<EFBFBD>a e-mailem.
* *
* - uin - numer * - uin - numer
* - email - adres e-mail taki, jak ten zapisany na serwerze * - email - adres e-mail taki, jak ten zapisany na serwerze
* - async - połączenie asynchroniczne * - async - po<EFBFBD><EFBFBD>czenie asynchroniczne
* - tokenid - identyfikator tokenu * - tokenid - identyfikator tokenu
* - tokenval - wartość tokenu * - tokenval - warto<EFBFBD><EFBFBD> tokenu
* *
* zaalokowana struct gg_http, którą poźniej należy zwolnić * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y zwolni<EFBFBD>
* funkcją gg_remind_passwd_free(), albo NULL jeśli wystąpił błąd. * funkcj<EFBFBD> gg_remind_passwd_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_remind_passwd3(uin_t uin, const char *email, const char *tokenid, const char *tokenval, int async) struct gg_http *gg_remind_passwd3(uin_t uin, const char *email, const char *tokenid, const char *tokenval, int async)
{ {
@ -400,14 +400,14 @@ struct gg_http *gg_remind_passwd3(uin_t uin, const char *email, const char *toke
/* /*
* gg_pubdir_watch_fd() * gg_pubdir_watch_fd()
* *
* przy asynchronicznych operacjach na katalogu publicznym należy wywoływać * przy asynchronicznych operacjach na katalogu publicznym nale<EFBFBD>y wywo<EFBFBD>ywa<EFBFBD>
* tę funkcję przy zmianach na obserwowanym deskryptorze. * t<EFBFBD> funkcj<EFBFBD> przy zmianach na obserwowanym deskryptorze.
* *
* - h - struktura opisująca połączenie * - h - struktura opisuj<EFBFBD>ca po<EFBFBD><EFBFBD>czenie
* *
* jeśli wszystko poszło dobrze to 0, inaczej -1. operacja będzie * je<EFBFBD>li wszystko posz<EFBFBD>o dobrze to 0, inaczej -1. operacja b<EFBFBD>dzie
* zakończona, jeśli h->state == GG_STATE_DONE. jeśli wystąpi jakiś * zako<EFBFBD>czona, je<EFBFBD>li h->state == GG_STATE_DONE. je<EFBFBD>li wyst<EFBFBD>pi jaki<EFBFBD>
* błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error. * b<EFBFBD><EFBFBD>d, to b<EFBFBD>dzie tam GG_STATE_ERROR i odpowiedni kod b<EFBFBD><EFBFBD>du w h->error.
*/ */
int gg_pubdir_watch_fd(struct gg_http *h) int gg_pubdir_watch_fd(struct gg_http *h)
{ {
@ -466,7 +466,7 @@ int gg_pubdir_watch_fd(struct gg_http *h)
/* /*
* gg_pubdir_free() * gg_pubdir_free()
* *
* zwalnia pamięć po efektach operacji na katalogu publicznym. * zwalnia pami<EFBFBD><EFBFBD> po efektach operacji na katalogu publicznym.
* *
* - h - zwalniana struktura * - h - zwalniana struktura
*/ */
@ -482,11 +482,11 @@ void gg_pubdir_free(struct gg_http *h)
/* /*
* gg_token() * gg_token()
* *
* pobiera z serwera token do autoryzacji zakładania konta, usuwania * pobiera z serwera token do autoryzacji zak<EFBFBD>adania konta, usuwania
* konta i zmiany hasła. * konta i zmiany has<EFBFBD>a.
* *
* zaalokowana struct gg_http, którą poźniej należy zwolnić * zaalokowana struct gg_http, kt<EFBFBD>r<EFBFBD> po<EFBFBD>niej nale<EFBFBD>y zwolni<EFBFBD>
* funkcją gg_token_free(), albo NULL jeśli wystąpił błąd. * funkcj<EFBFBD> gg_token_free(), albo NULL je<EFBFBD>li wyst<EFBFBD>pi<EFBFBD> b<EFBFBD><EFBFBD>d.
*/ */
struct gg_http *gg_token(int async) struct gg_http *gg_token(int async)
{ {
@ -519,14 +519,14 @@ struct gg_http *gg_token(int async)
/* /*
* gg_token_watch_fd() * gg_token_watch_fd()
* *
* przy asynchronicznych operacjach związanych z tokenem należy wywoływać * przy asynchronicznych operacjach zwi<EFBFBD>zanych z tokenem nale<EFBFBD>y wywo<EFBFBD>ywa<EFBFBD>
* tę funkcję przy zmianach na obserwowanym deskryptorze. * t<EFBFBD> funkcj<EFBFBD> przy zmianach na obserwowanym deskryptorze.
* *
* - h - struktura opisująca połączenie * - h - struktura opisuj<EFBFBD>ca po<EFBFBD><EFBFBD>czenie
* *
* jeśli wszystko poszło dobrze to 0, inaczej -1. operacja będzie * je<EFBFBD>li wszystko posz<EFBFBD>o dobrze to 0, inaczej -1. operacja b<EFBFBD>dzie
* zakończona, jeśli h->state == GG_STATE_DONE. jeśli wystąpi jakiś * zako<EFBFBD>czona, je<EFBFBD>li h->state == GG_STATE_DONE. je<EFBFBD>li wyst<EFBFBD>pi jaki<EFBFBD>
* błąd, to będzie tam GG_STATE_ERROR i odpowiedni kod błędu w h->error. * b<EFBFBD><EFBFBD>d, to b<EFBFBD>dzie tam GG_STATE_ERROR i odpowiedni kod b<EFBFBD><EFBFBD>du w h->error.
*/ */
int gg_token_watch_fd(struct gg_http *h) int gg_token_watch_fd(struct gg_http *h)
{ {
@ -552,8 +552,8 @@ int gg_token_watch_fd(struct gg_http *h)
if (h->state != GG_STATE_PARSING) if (h->state != GG_STATE_PARSING)
return 0; return 0;
/* jeśli h->data jest puste, to ściągaliśmy tokenid i url do niego, /* je<EFBFBD>li h->data jest puste, to <20>ci<63>gali<6C>my tokenid i url do niego,
* ale jeśli coś tam jest, to znaczy, że mamy drugi etap polegający * ale je<EFBFBD>li co<EFBFBD> tam jest, to znaczy, <EFBFBD>e mamy drugi etap polegaj<EFBFBD>cy
* na pobieraniu tokenu. */ * na pobieraniu tokenu. */
if (!h->data) { if (!h->data) {
int width, height, length; int width, height, length;
@ -578,14 +578,14 @@ int gg_token_watch_fd(struct gg_http *h)
return -1; return -1;
} }
/* dostaliśmy tokenid i wszystkie niezbędne informacje, /* dostali<EFBFBD>my tokenid i wszystkie niezb<7A>dne informacje,
* więc pobierzmy obrazek z tokenem */ * wi<EFBFBD>c pobierzmy obrazek z tokenem */
if (strncmp(url, "http://", 7)) { if (strncmp(url, "http://", 7)) {
path = gg_saprintf("%s?tokenid=%s", url, tokenid); path = gg_saprintf("%s?tokenid=%s", url, tokenid);
host = GG_REGISTER_HOST; host = GG_REGISTER_HOST;
} else { } else {
char *slash = strchr(url + 7, '/'); char *slash = (char*)strchr(url + 7, '/');
if (slash) { if (slash) {
path = gg_saprintf("%s?tokenid=%s", slash, tokenid); path = gg_saprintf("%s?tokenid=%s", slash, tokenid);
@ -660,7 +660,7 @@ int gg_token_watch_fd(struct gg_http *h)
/* /*
* gg_token_free() * gg_token_free()
* *
* zwalnia pamięć po efektach pobierania tokenu. * zwalnia pami<EFBFBD><EFBFBD> po efektach pobierania tokenu.
* *
* - h - zwalniana struktura * - h - zwalniana struktura
*/ */

@ -2235,7 +2235,7 @@ void Level::setText(const char *str)
FontDef& def = p->fonts[m_nFont-1]; FontDef& def = p->fonts[m_nFont-1];
char *pp = strchr(str, ';'); const char *pp = strchr(str, ';');
unsigned size; unsigned size;
if (pp != NULL) if (pp != NULL)
size = (pp - str); size = (pp - str);

@ -570,7 +570,7 @@ void Level::setText(const char *str)
FontDef& def = p->fonts[m_nFont-1]; FontDef& def = p->fonts[m_nFont-1];
char *pp = strchr(str, ';'); const char *pp = strchr(str, ';');
unsigned size; unsigned size;
if (pp != NULL) if (pp != NULL)
size = (pp - str); size = (pp - str);

@ -2131,7 +2131,7 @@ void Level::setText(const char *str)
FontDef& def = p->fonts[m_nFont-1]; FontDef& def = p->fonts[m_nFont-1];
char *pp = strchr(str, ';'); const char *pp = strchr(str, ';');
unsigned size; unsigned size;
if (pp != NULL) if (pp != NULL)
size = (pp - str); size = (pp - str);

@ -568,7 +568,7 @@ void Level::setText(const char *str)
FontDef& def = p->fonts[m_nFont-1]; FontDef& def = p->fonts[m_nFont-1];
char *pp = strchr(str, ';'); const char *pp = strchr(str, ';');
unsigned size; unsigned size;
if (pp != NULL) if (pp != NULL)
size = (pp - str); size = (pp - str);

@ -150,7 +150,7 @@ void authresp_0x0b(const char *seed, const char *sn, const char *password, char
magic_ptr = (unsigned char *)seed; magic_ptr = (unsigned char *)seed;
while (*magic_ptr != (int)NULL) { while (*magic_ptr != (int)NULL) {
char *loc; const char *loc;
/* Ignore parentheses. */ /* Ignore parentheses. */

@ -1253,6 +1253,7 @@ bool ConnectWidget::execppp() {
command += " " + gpppdata.speed(); command += " " + gpppdata.speed();
command += " -detach"; command += " -detach";
command += " call kppp-options";
if(gpppdata.ipaddr() != "0.0.0.0" || if(gpppdata.ipaddr() != "0.0.0.0" ||
gpppdata.gateway() != "0.0.0.0") { gpppdata.gateway() != "0.0.0.0") {

@ -37,41 +37,56 @@ static const char *devices[] = {
"/dev/dtyU3", "/dev/dtyU3",
#elif defined (__linux__) #elif defined (__linux__)
"/dev/modem", "/dev/modem",
"/dev/modem0",
"/dev/modem1",
"/dev/modem2",
"/dev/modem3",
"/dev/ttyS0", "/dev/ttyS0",
"/dev/ttyS1", "/dev/ttyS1",
"/dev/ttyS2", "/dev/ttyS2",
"/dev/ttyS3", "/dev/ttyS3",
"/dev/ttyS4", "/dev/ttyS4",
#ifdef ISDNSUPPORT "/dev/ttyS5",
"/dev/ttyI0", "/dev/ttyS6",
"/dev/ttyI1", "/dev/ttyS7",
"/dev/ttyI2", "/dev/ttyS8",
"/dev/ttyI3", "/dev/ttyS9",
#endif "/dev/ttyS10",
"/dev/ttyS11",
"/dev/ttyS12",
"/dev/ttyS13",
"/dev/ttyS14",
"/dev/ttyS15",
"/dev/ttyS16",
"/dev/ttyS17",
"/dev/noz0",
"/dev/noz1",
"/dev/noz2",
"/dev/noz3",
"/dev/ttyACM0",
"/dev/ttyACM1",
"/dev/ttyACM2",
"/dev/ttyACM3",
"/dev/usb/ttyACM0", /* USB stuff modems */ "/dev/usb/ttyACM0", /* USB stuff modems */
"/dev/usb/ttyACM1", "/dev/usb/ttyACM1",
"/dev/usb/ttyACM2", "/dev/usb/ttyACM2",
"/dev/usb/ttyACM3", "/dev/usb/ttyACM3",
"/dev/usb/ttyUSB0", /* USB stuff modems */
"/dev/usb/ttyUSB1",
"/dev/usb/ttyUSB2",
"/dev/usb/ttyUSB3",
"/dev/ttyACM0", /* USB stuff modems with udev */
"/dev/ttyACM1",
"/dev/ttyACM2",
"/dev/ttyACM3",
"/dev/ttyUSB0", "/dev/ttyUSB0",
"/dev/ttyUSB1", "/dev/ttyUSB1",
"/dev/ttyUSB2", "/dev/ttyUSB2",
"/dev/ttyUSB3", "/dev/ttyUSB3",
"/dev/usb/tts/0", /* USB stuff modems with devfs*/ "/dev/usb/ttyUSB0", /* USB stuff modems */
"/dev/usb/tts/1", "/dev/usb/ttyUSB1",
"/dev/usb/tts/2", "/dev/usb/ttyUSB2",
"/dev/usb/tts/3", "/dev/usb/ttyUSB3",
"/dev/rfcomm0", /* BlueTooth */ "/dev/rfcomm0", /* BlueTooth */
"/dev/rfcomm1", "/dev/rfcomm1",
"/dev/rfcomm2", "/dev/rfcomm2",
"/dev/rfcomm3", "/dev/rfcomm3",
"/dev/bluetooth/rfcomm/0",
"/dev/bluetooth/rfcomm/1",
"/dev/bluetooth/rfcomm/2",
"/dev/bluetooth/rfcomm/3",
"/dev/ircomm0", /* IrDA */ "/dev/ircomm0", /* IrDA */
"/dev/ircomm1", "/dev/ircomm1",
"/dev/ircomm2", "/dev/ircomm2",
@ -84,6 +99,16 @@ static const char *devices[] = {
"/dev/ttySHSF1", "/dev/ttySHSF1",
"/dev/ttySHSF2", "/dev/ttySHSF2",
"/dev/ttySHSF3", /* necessary for conexant modem which use hsfserial commercial module */ "/dev/ttySHSF3", /* necessary for conexant modem which use hsfserial commercial module */
"/dev/ttySLT0", /* Lucent winmodem devices */
"/dev/ttySLT1",
"/dev/ttySLT2",
"/dev/ttySLT3",
#ifdef ISDNSUPPORT
"/dev/ttyI0",
"/dev/ttyI1",
"/dev/ttyI2",
"/dev/ttyI3",
#endif
#elif defined(__svr4__) #elif defined(__svr4__)
"/dev/cua/a", "/dev/cua/a",
"/dev/cua/b", "/dev/cua/b",

@ -75,3 +75,4 @@ Type=Application
Terminal=false Terminal=false
X-DCOP-ServiceType=Multi X-DCOP-ServiceType=Multi
Categories=Qt;KDE;Network;X-KDE-More;Dialup; Categories=Qt;KDE;Network;X-KDE-More;Dialup;
NoDisplay=true

@ -72,8 +72,6 @@ extern "C" int _Precvmsg(int, void*, int);
# include <net/ppp_layer/ppp_defs.h> # include <net/ppp_layer/ppp_defs.h>
# include <net/if.h> # include <net/if.h>
# include <net/ppp/if_ppp.h> # include <net/ppp/if_ppp.h>
# elif defined HAVE_LINUX_IF_PPP_H
# include <linux/if_ppp.h>
# endif # endif
#else #else
# include <net/ppp_defs.h> # include <net/ppp_defs.h>

@ -188,7 +188,10 @@ void PPPL_AnalyseLog(QStringList &list, QStringList &result) {
} }
if (result.isEmpty()) if (result.isEmpty())
{
result.append(i18n("Unable to provide help.")); result.append(i18n("Unable to provide help."));
result.append("Please refer to /usr/share/doc/kppp/README.Debian for more information.");
}
} }

@ -71,10 +71,7 @@
#endif #endif
#include <sys/socket.h> /* *BSD, Linux, NeXT, Ultrix etc. */ #include <sys/socket.h> /* *BSD, Linux, NeXT, Ultrix etc. */
#ifndef HAVE_NET_IF_PPP_H #ifndef HAVE_NET_IF_PPP_H
#ifdef HAVE_LINUX_IF_PPP_H #if defined(__DragonFly__)
#include <linux/if.h>
#include <linux/if_ppp.h>
#elif defined(__DragonFly__)
#include <net/if.h> #include <net/if.h>
#include <net/ppp/if_ppp.h> #include <net/ppp/if_ppp.h>
#endif #endif

@ -119,6 +119,7 @@ bool KRDC::start()
QString userName, password; QString userName, password;
QString serverHost; QString serverHost;
int serverPort = 5900; int serverPort = 5900;
int ret_status;
if (!m_host.isNull() && if (!m_host.isNull() &&
(m_host != "vnc:/") && (m_host != "vnc:/") &&
@ -204,7 +205,9 @@ bool KRDC::start()
connect(m_keyCaptureDialog, SIGNAL(keyPressed(XEvent*)), connect(m_keyCaptureDialog, SIGNAL(keyPressed(XEvent*)),
m_view, SLOT(pressKey(XEvent*))); m_view, SLOT(pressKey(XEvent*)));
return m_view->start(); ret_status = m_view->start();
return ret_status;
} }
void KRDC::changeProgress(RemoteViewStatus s) { void KRDC::changeProgress(RemoteViewStatus s) {
@ -244,6 +247,10 @@ void KRDC::changeProgress(RemoteViewStatus s) {
this, SIGNAL(disconnectedError())); this, SIGNAL(disconnectedError()));
connect(m_view, SIGNAL(disconnectedError()), connect(m_view, SIGNAL(disconnectedError()),
SIGNAL(disconnected())); SIGNAL(disconnected()));
if (m_view->startFullscreen()) {
// m_view instance is asking to start in fullscreen mode
enableFullscreen(true);
}
} }
else if (m_isFullscreen == WINDOW_MODE_FULLSCREEN) else if (m_isFullscreen == WINDOW_MODE_FULLSCREEN)
switchToNormal(m_view->scaling()); switchToNormal(m_view->scaling());
@ -462,6 +469,7 @@ void KRDC::switchToFullscreen(bool scaling)
KToolBar *t = new KToolBar(m_fsToolbar); KToolBar *t = new KToolBar(m_fsToolbar);
m_fsToolbarWidget = t; m_fsToolbarWidget = t;
t->setIconSize(KIcon::Panel);
QIconSet pinIconSet; QIconSet pinIconSet;
pinIconSet.setPixmap(m_pinup, QIconSet::Automatic, QIconSet::Normal, QIconSet::On); pinIconSet.setPixmap(m_pinup, QIconSet::Automatic, QIconSet::Normal, QIconSet::On);
@ -471,8 +479,7 @@ void KRDC::switchToFullscreen(bool scaling)
pinButton->setIconSet(pinIconSet); pinButton->setIconSet(pinIconSet);
QToolTip::add(pinButton, i18n("Autohide on/off")); QToolTip::add(pinButton, i18n("Autohide on/off"));
t->setToggle(FS_AUTOHIDE_ID); t->setToggle(FS_AUTOHIDE_ID);
t->setButton(FS_AUTOHIDE_ID, false); t->addConnection(FS_AUTOHIDE_ID, SIGNAL(toggled(bool)), this, SLOT(setFsToolbarAutoHide(bool)));
t->addConnection(FS_AUTOHIDE_ID, SIGNAL(clicked()), this, SLOT(toggleFsToolbarAutoHide()));
t->insertButton("window_nofullscreen", FS_FULLSCREEN_ID); t->insertButton("window_nofullscreen", FS_FULLSCREEN_ID);
KToolBarButton *fullscreenButton = t->getButton(FS_FULLSCREEN_ID); KToolBarButton *fullscreenButton = t->getButton(FS_FULLSCREEN_ID);
@ -485,7 +492,6 @@ void KRDC::switchToFullscreen(bool scaling)
t->insertButton("configure", FS_ADVANCED_ID, m_popup, true, i18n("Advanced options")); t->insertButton("configure", FS_ADVANCED_ID, m_popup, true, i18n("Advanced options"));
KToolBarButton *advancedButton = t->getButton(FS_ADVANCED_ID); KToolBarButton *advancedButton = t->getButton(FS_ADVANCED_ID);
QToolTip::add(advancedButton, i18n("Advanced options")); QToolTip::add(advancedButton, i18n("Advanced options"));
//advancedButton->setPopupDelay(0);
QLabel *hostLabel = new QLabel(t); QLabel *hostLabel = new QLabel(t);
hostLabel->setName("kde toolbar widget"); hostLabel->setName("kde toolbar widget");
@ -516,7 +522,6 @@ void KRDC::switchToFullscreen(bool scaling)
m_fsToolbar->setChild(t); m_fsToolbar->setChild(t);
repositionView(true); repositionView(true);
showFullScreen();
setMaximumSize(m_fullscreenResolution.width(), setMaximumSize(m_fullscreenResolution.width(),
m_fullscreenResolution.height()); m_fullscreenResolution.height());
@ -525,8 +530,12 @@ void KRDC::switchToFullscreen(bool scaling)
KWin::setState(winId(), NET::StaysOnTop); KWin::setState(winId(), NET::StaysOnTop);
m_ftAutoHide = !m_ftAutoHide; if (m_ftAutoHide == false) {
setFsToolbarAutoHide(!m_ftAutoHide); showFullscreenToolbar();
}
else {
t->setButton(FS_AUTOHIDE_ID, true);
}
if (!fromFullscreen) { if (!fromFullscreen) {
if (m_oldResolution.valid) if (m_oldResolution.valid)
@ -534,6 +543,8 @@ void KRDC::switchToFullscreen(bool scaling)
m_view->grabKeyboard(); m_view->grabKeyboard();
} }
showFullScreen();
m_view->switchFullscreen( true ); m_view->switchFullscreen( true );
} }
@ -603,7 +614,6 @@ void KRDC::switchToNormal(bool scaling)
t->insertButton("configure", 3, m_popup, true, i18n("Advanced")); t->insertButton("configure", 3, m_popup, true, i18n("Advanced"));
KToolBarButton *advancedButton = t->getButton(3); KToolBarButton *advancedButton = t->getButton(3);
QToolTip::add(advancedButton, i18n("Advanced options")); QToolTip::add(advancedButton, i18n("Advanced options"));
//advancedButton->setPopupDelay(0);
if (m_layout) if (m_layout)
delete m_layout; delete m_layout;
@ -683,7 +693,7 @@ void KRDC::toolbarChanged() {
bool KRDC::event(QEvent *e) { bool KRDC::event(QEvent *e) {
/* used to change resolution when fullscreen was minimized */ /* used to change resolution when fullscreen was minimized */
if ((!m_fullscreenMinimized) || (e->type() != QEvent::WindowActivate)) if ((!m_fullscreenMinimized) || (e->type() != QEvent::WindowActivate))
return QWidget::event(e); return QWidget::event(e);

@ -123,6 +123,11 @@ public:
*/ */
virtual bool viewOnly() = 0; virtual bool viewOnly() = 0;
/**
* Checks whether the view is requesting full screen mode.
*/
virtual bool startFullscreen() = 0;
/** /**
* Returns the resolution of the remote framebuffer. * Returns the resolution of the remote framebuffer.
* It should return a null @ref QSize when the size * It should return a null @ref QSize when the size

@ -74,13 +74,15 @@ int main(int argc, char *argv[])
{ {
KAboutData aboutData( "krdc", I18N_NOOP("Remote Desktop Connection"), KAboutData aboutData( "krdc", I18N_NOOP("Remote Desktop Connection"),
VERSION, description, KAboutData::License_GPL, VERSION, description, KAboutData::License_GPL,
"(c) 2001-2003, Tim Jansen" "(c) 2009-2010, Timothy Pearson\n"
"(c) 2002-2003, Arend van Beelen jr." "(c) 2001-2003, Tim Jansen\n"
"(c) 2002-2003, Arend van Beelen jr.\n"
"(c) 2000-2002, Const Kaplinsky\n" "(c) 2000-2002, Const Kaplinsky\n"
"(c) 2000, Tridia Corporation\n" "(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Cambridge\n" "(c) 1999, AT&T Laboratories Cambridge\n"
"(c) 1999-2003, Matthew Chapman\n", 0, 0, "(c) 1999-2003, Matthew Chapman\n", 0, 0,
"tim@tjansen.de"); "tim@tjansen.de");
aboutData.addAuthor("Timothy Pearson",0, "kb9vqf@pearsoncomputing.net");
aboutData.addAuthor("Tim Jansen",0, "tim@tjansen.de"); aboutData.addAuthor("Tim Jansen",0, "tim@tjansen.de");
aboutData.addAuthor("Arend van Beelen jr.", aboutData.addAuthor("Arend van Beelen jr.",
I18N_NOOP("RDP backend"), "arend@auton.nl"); I18N_NOOP("RDP backend"), "arend@auton.nl");

@ -19,6 +19,7 @@
For any questions, comments or whatever, you may mail me at: arend@auton.nl For any questions, comments or whatever, you may mail me at: arend@auton.nl
*/ */
#include <kapplication.h>
#include <kdialogbase.h> #include <kdialogbase.h>
#include <klocale.h> #include <klocale.h>
#include <kmessagebox.h> #include <kmessagebox.h>
@ -38,6 +39,7 @@
#include "rdphostpref.h" #include "rdphostpref.h"
#include "rdpprefs.h" #include "rdpprefs.h"
bool launch_Fullscreen_rdp = false;
bool rdpAppDataConfigured = false; bool rdpAppDataConfigured = false;
extern KWallet::Wallet *wallet; extern KWallet::Wallet *wallet;
@ -188,6 +190,7 @@ bool KRdpView::editPreferences( HostPrefPtr host )
wv = prefs->rdpWidth(); wv = prefs->rdpWidth();
hv = prefs->rdpHeight(); hv = prefs->rdpHeight();
kl = int2keymap( prefs->kbLayout() ); kl = int2keymap( prefs->kbLayout() );
hp->setAskOnConnect( prefs->showPrefs() ); hp->setAskOnConnect( prefs->showPrefs() );
hp->setWidth(wv); hp->setWidth(wv);
@ -206,6 +209,8 @@ bool KRdpView::start()
SmartPtr<RdpHostPref> hp, rdpDefaults; SmartPtr<RdpHostPref> hp, rdpDefaults;
bool useKWallet = false; bool useKWallet = false;
QWidget *desktop = QApplication::desktop();
if(!rdpAppDataConfigured) if(!rdpAppDataConfigured)
{ {
HostPreferences *hps = HostPreferences::instance(); HostPreferences *hps = HostPreferences::instance();
@ -225,7 +230,19 @@ bool KRdpView::start()
m_process = new KProcess(m_container); m_process = new KProcess(m_container);
*m_process << "rdesktop"; *m_process << "rdesktop";
// Check for fullscreen mode
if ((hp->width() == 0) && (hp->height() == 0)) {
launch_Fullscreen_rdp = true;
*m_process << "-g" << (QString::number(desktop->width()) + "x" + QString::number((desktop->height()-2)));
}
else {
if ((hp->height() > (desktop->height()-2)) && (hp->height() <= (desktop->height()))) {
*m_process << "-g" << (QString::number(hp->width()) + "x" + QString::number(desktop->height()-2));
}
else {
*m_process << "-g" << (QString::number(hp->width()) + "x" + QString::number(hp->height())); *m_process << "-g" << (QString::number(hp->width()) + "x" + QString::number(hp->height()));
}
}
*m_process << "-k" << hp->layout(); *m_process << "-k" << hp->layout();
if(!m_user.isEmpty()) { *m_process << "-u" << m_user; } if(!m_user.isEmpty()) { *m_process << "-u" << m_user; }
@ -311,6 +328,11 @@ bool KRdpView::viewOnly()
return m_container->m_viewOnly; return m_container->m_viewOnly;
} }
bool KRdpView::startFullscreen()
{
return launch_Fullscreen_rdp;
}
void KRdpView::setViewOnly(bool s) void KRdpView::setViewOnly(bool s)
{ {
m_container->m_viewOnly = s; m_container->m_viewOnly = s;

@ -69,6 +69,7 @@ class KRdpView : public KRemoteView
virtual QSize framebufferSize(); // returns the size of the remote view virtual QSize framebufferSize(); // returns the size of the remote view
QSize sizeHint(); // returns the suggested size QSize sizeHint(); // returns the suggested size
virtual bool viewOnly(); virtual bool viewOnly();
virtual bool startFullscreen();
// functions regarding the connection // functions regarding the connection
virtual void startQuitting(); // start closing the connection virtual void startQuitting(); // start closing the connection

@ -25,9 +25,9 @@ const QString RdpHostPref::RdpType = "RDP";
RdpHostPref::RdpHostPref(KConfig *conf, const QString &host, const QString &type) : RdpHostPref::RdpHostPref(KConfig *conf, const QString &host, const QString &type) :
HostPref(conf, host, type), HostPref(conf, host, type),
m_width(800), m_width(0),
m_height(600), m_height(0),
m_colorDepth(8), m_colorDepth(24),
m_layout("en-us"), m_layout("en-us"),
m_askOnConnect(true), m_askOnConnect(true),
m_useKWallet(true) m_useKWallet(true)
@ -70,9 +70,9 @@ void RdpHostPref::load()
{ {
m_config->setGroup("PerHostSettings"); m_config->setGroup("PerHostSettings");
QString p = prefix(); QString p = prefix();
m_width = m_config->readNumEntry(p+"width", 800); m_width = m_config->readNumEntry(p+"width", 0);
m_height = m_config->readNumEntry(p+"height", 600); m_height = m_config->readNumEntry(p+"height", 0);
m_colorDepth = m_config->readNumEntry(p+"colorDepth", 8); m_colorDepth = m_config->readNumEntry(p+"colorDepth", 24);
m_layout = m_config->readEntry(p+"layout", "en-us"); m_layout = m_config->readEntry(p+"layout", "en-us");
m_askOnConnect = m_config->readBoolEntry(p+"askOnConnect", true); m_askOnConnect = m_config->readBoolEntry(p+"askOnConnect", true);
m_useKWallet = m_config->readBoolEntry(p+"useKWallet", true); m_useKWallet = m_config->readBoolEntry(p+"useKWallet", true);
@ -99,9 +99,9 @@ void RdpHostPref::remove()
void RdpHostPref::setDefaults() void RdpHostPref::setDefaults()
{ {
m_config->setGroup("RdpDefaultSettings"); m_config->setGroup("RdpDefaultSettings");
m_width = m_config->readNumEntry("rdpWidth", 800); m_width = m_config->readNumEntry("rdpWidth", 0);
m_height = m_config->readNumEntry("rdpHeight", 600); m_height = m_config->readNumEntry("rdpHeight", 0);
m_colorDepth = m_config->readNumEntry("rdpColorDepth", 8); m_colorDepth = m_config->readNumEntry("rdpColorDepth", 24);
m_layout = m_config->readEntry("rdpKeyboardLayout", "en-us"); m_layout = m_config->readEntry("rdpKeyboardLayout", "en-us");
m_askOnConnect = m_config->readBoolEntry("rdpShowHostPreferences", true); m_askOnConnect = m_config->readBoolEntry("rdpShowHostPreferences", true);
m_useKWallet = m_config->readBoolEntry("rdpUseKWallet", true); m_useKWallet = m_config->readBoolEntry("rdpUseKWallet", true);

@ -68,6 +68,11 @@
<string>Custom (...)</string> <string>Custom (...)</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>Full Screen (Maximized)</string>
</property>
</item>
<property name="name"> <property name="name">
<cstring>cmbResolution</cstring> <cstring>cmbResolution</cstring>
</property> </property>
@ -86,7 +91,7 @@
</size> </size>
</property> </property>
<property name="currentItem"> <property name="currentItem">
<number>1</number> <number>5</number>
</property> </property>
<property name="whatsThis" stdset="0"> <property name="whatsThis" stdset="0">
<string>Here you can specify the resolution of the remote desktop. This resolution determines the size of the desktop that will be presented to you.</string> <string>Here you can specify the resolution of the remote desktop. This resolution determines the size of the desktop that will be presented to you.</string>

@ -34,6 +34,13 @@ void RdpPrefs::resolutionChanged( int selection )
break; break;
case 3: case 3:
break;
case 4:
spinWidth->setValue(0);
spinHeight->setValue(0);
break;
default: default:
break; break;
} }
@ -115,6 +122,15 @@ void RdpPrefs::setResolution()
{ {
cmbResolution->setCurrentItem(2); cmbResolution->setCurrentItem(2);
} }
else if (cmbResolution->currentItem()==4)
{
// Fullscreen selected
}
else if (rdpWidth()==0 && rdpHeight()==0)
{
// Fullscreen selected
cmbResolution->setCurrentItem(4);
}
else else
{ {
cmbResolution->setCurrentItem(3); cmbResolution->setCurrentItem(3);

@ -40,6 +40,8 @@
#include <X11/Xlib.h> #include <X11/Xlib.h>
bool launch_Fullscreen_vnc = false;
/* /*
* appData is our application-specific data which can be set by the user with * appData is our application-specific data which can be set by the user with
* application resource specs. The AppData structure is defined in the header * application resource specs. The AppData structure is defined in the header
@ -324,6 +326,11 @@ bool KVncView::viewOnly() {
return m_viewOnly; return m_viewOnly;
} }
bool KVncView::startFullscreen()
{
return launch_Fullscreen_vnc;
}
QSize KVncView::framebufferSize() { QSize KVncView::framebufferSize() {
return m_framebufferSize; return m_framebufferSize;
} }

@ -104,6 +104,7 @@ public:
virtual bool start(); virtual bool start();
virtual bool viewOnly(); virtual bool viewOnly();
virtual bool startFullscreen();
static bool editPreferences( HostPrefPtr ); static bool editPreferences( HostPrefPtr );

@ -189,4 +189,4 @@ Keywords[uk]=спільні стільниці,krfb,vnc,спільний,rdp,krd
Keywords[zh_CN]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,桌面共享,共享,远程桌面连接,邀请,端口,未邀请 Keywords[zh_CN]=desktop sharing,krfb,vnc,sharing,krdc,remote desktop connection,invitation,port,slp,uninvited,桌面共享,共享,远程桌面连接,邀请,端口,未邀请
Keywords[zh_TW]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,rdp,桌面分享,分享,遠端桌面連線,invitation,port,slp,uninvited Keywords[zh_TW]=desktop sharing,krfb,vnc,sharing,rdp,krdc,remote desktop connection,rdp,桌面分享,分享,遠端桌面連線,invitation,port,slp,uninvited
Categories=Qt;KDE;X-KDE-settings-network;Settings; Categories=Qt;KDE;X-KDE-settings-network;

@ -61,4 +61,4 @@ GenericName[uz@cyrillic]=Иш столи билан бўлишиш
GenericName[zh_CN]=桌面共享 GenericName[zh_CN]=桌面共享
GenericName[zh_HK]=桌面分享 GenericName[zh_HK]=桌面分享
GenericName[zh_TW]=桌面分享 GenericName[zh_TW]=桌面分享
Categories=Qt;KDE;System;RemoteAccess;Network; Categories=Qt;KDE;RemoteAccess;Network;

@ -398,11 +398,11 @@ void RFBController::startServer(int inetdFd, bool xtestGrab)
int h = framebufferImage->height; int h = framebufferImage->height;
char *fb = framebufferImage->data; char *fb = framebufferImage->data;
int bpp = framebufferImage->bits_per_pixel >> 3;
if (bpp != 1 && bpp != 2 && bpp != 4) bpp = 4;
rfbLogEnable(0); rfbLogEnable(0);
server = rfbGetScreen(0, 0, w, h, server = rfbGetScreen(0, 0, w, h, (bpp*8), 8, bpp);
framebufferImage->bits_per_pixel,
8,
framebufferImage->bits_per_pixel/8);
server->paddedWidthInBytes = framebufferImage->bytes_per_line; server->paddedWidthInBytes = framebufferImage->bytes_per_line;

@ -67,7 +67,7 @@ typedef unsigned long KeySym;
#include "rfbproto.h" #include "rfbproto.h"
#ifdef __linux__ #if defined(__linux__) || defined(__GLIBC__)
#include <endian.h> #include <endian.h>
#elif defined(__APPLE__) || defined(__FreeBSD__) #elif defined(__APPLE__) || defined(__FreeBSD__)
#include <sys/types.h> #include <sys/types.h>

@ -101,7 +101,7 @@
<string>unlimited</string> <string>unlimited</string>
</property> </property>
<property name="maxValue"> <property name="maxValue">
<number>1000</number> <number>10000</number>
</property> </property>
<property name="toolTip" stdset="0"> <property name="toolTip" stdset="0">
<string>Stores up to this many lines of chat from each window as history</string> <string>Stores up to this many lines of chat from each window as history</string>

@ -114,8 +114,8 @@ $set{"IRCNAME"}=$opt_i || $ENV{"SIRCNAME"} || $ENV{"IRCNAME"} || "sirc user";
$nick=$opt_n || $ARGV[0] || $ENV{"SIRCNICK"} || $ENV{"IRCNICK"} || $username; $nick=$opt_n || $ARGV[0] || $ENV{"SIRCNICK"} || $ENV{"IRCNICK"} || $username;
$set{"FINGER"}=$ENV{"IRCFINGER"} || "keep your fingers to yourself"; $set{"FINGER"}=$ENV{"IRCFINGER"} || "keep your fingers to yourself";
$set{"USERINFO"}=$ENV{"USERINFO"} || "yep, I'm a user"; $set{"USERINFO"}=$ENV{"USERINFO"} || "yep, I'm a user";
if ($server =~ /^\[([^\]]+)\]:([0-9]*):?([^:]*)$/ if ($server =~ /^\[([^\]]+)\]:([0-9]*):?(.*)$/
or $server =~ /^([^:]+):([0-9]*):?([^:]*)$/) or $server =~ /^([^:]+):([0-9]*):?(.*)$/)
{ {
($server, $port, $pass)=($1, $2, $3); ($server, $port, $pass)=($1, $2, $3);
} }

@ -32,7 +32,8 @@ AC_FIND_USER_METHOD
AM_CONDITIONAL(KDE_INSTALLED, test "$have_kde" = "yes") AM_CONDITIONAL(KDE_INSTALLED, test "$have_kde" = "yes")
dnl Check for utmp file dnl Check for utmp file
AC_CHECK_UTMP_FILE([], [DO_NOT_COMPILE="$DO_NOT_COMPILE ktalkd"]) dnl breaks compilation on ubuntu dapper chroot, jriddell 2006-03-24
dnl AC_CHECK_UTMP_FILE([], [DO_NOT_COMPILE="$DO_NOT_COMPILE ktalkd"])
AC_LANG_C AC_LANG_C
dnl Checks for libraries. dnl Checks for libraries.

@ -131,4 +131,4 @@ GenericName[uz@cyrillic]=Симсиз тармоқ бошқарувчиси
GenericName[zh_CN]=无线局域网管理器 GenericName[zh_CN]=无线局域网管理器
GenericName[zh_HK]=無線網絡管理員 GenericName[zh_HK]=無線網絡管理員
GenericName[zh_TW]=無線網路管理者 GenericName[zh_TW]=無線網路管理者
Categories=Qt;KDE;Network;X-KDE-More;System;Monitor; Categories=Qt;KDE;Network;System;Monitor;

Loading…
Cancel
Save