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-RootOnly=true
X-KDE-ParentApp=kcontrol
Categories=Qt;KDE;X-KDE-settings-network;Settings;
Categories=Qt;KDE;X-KDE-settings-network;
OnlyShowIn=KDE;
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
{
// 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();
if (lname == "browsable") return "browseable";

@ -24,7 +24,7 @@
<cstring>infoLbl</cstring>
</property>
<property name="margin">
<number>11</number>
<number>5</number>
</property>
<property name="text">
<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())
{
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->sharedFoldersGroupBox->setDisabled(true);
}

@ -166,4 +166,4 @@ Keywords[tr]=Paylaş
Keywords[uk]=Спільний ресурс
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-DCOP-ServiceType=Unique
Categories=Qt;KDE;Network;X-KDE-More;News;
NoDisplay=true

@ -43,6 +43,7 @@
#include <dom/html_base.h>
#include <dom/html_document.h>
#include <dom/html_inline.h>
#include <qurloperator.h>
// KDE includes
@ -60,8 +61,10 @@
#include <ktempfile.h>
#include <kurldrag.h>
#include <kio/netaccess.h>
#include <kio/job.h>
#include <kstandarddirs.h>
#include <kiconloader.h>
#include <kinputdialog.h>
// Kopete includes
#include "chatmemberslistwidget.h"
@ -144,6 +147,7 @@ public:
KAction *printAction;
KAction *closeAction;
KAction *copyURLAction;
KAction *importEmoticon;
ChatWindowStyle *currentChatStyle;
Kopete::Contact *latestContact;
@ -259,6 +263,7 @@ ChatMessagePart::ChatMessagePart( Kopete::ChatSession *mgr, QWidget *parent, con
d->saveAction = KStdAction::saveAs( this, SLOT(save()), actionCollection() );
d->printAction = KStdAction::print( this, SLOT(print()),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() );
// read formatting override flags
@ -281,6 +286,53 @@ void ChatMessagePart::slotScrollingTo( int /*x*/, int y )
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()
{
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 );
chatWindowPopup->insertSeparator();
}
kdDebug() << "ChatMessagePart::slotRightClick(): " << d->activeElement.tagName().lower() << endl;
d->copyAction->setEnabled( hasSelection() );
d->copyAction->plug( chatWindowPopup );
d->saveAction->plug( chatWindowPopup );
d->printAction->plug( chatWindowPopup );
if( d->activeElement.tagName().lower() == "img" ) d->importEmoticon->plug( chatWindowPopup );
chatWindowPopup->insertSeparator();
d->closeAction->plug( chatWindowPopup );

@ -148,6 +148,7 @@ private slots:
void slotCopyURL();
void slotCloseView( bool force = false );
void slotImportEmoticon();
/**
* 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
kcm_kopete_appearanceconfig_la_SOURCES = appearanceconfig_emoticons.ui \
appearanceconfig_colors.ui appearanceconfig_chatwindow.ui appearanceconfig_contactlist.ui \
appearanceconfig.cpp tooltipeditwidget.ui tooltipeditdialog.cpp
kcm_kopete_appearanceconfig_la_SOURCES = appearanceconfig.cpp \
appearanceconfig_chatwindow.ui appearanceconfig_colors.ui appearanceconfig_contactlist.ui \
appearanceconfig_emoticons.ui emoticonseditdialog.cpp emoticonseditwidget.ui tooltipeditdialog.cpp \
tooltipeditwidget.ui
kcm_kopete_appearanceconfig_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) \
$(all_libraries)
@ -18,3 +19,4 @@ service_DATA = kopete_appearanceconfig.desktop
servicedir = $(kde_servicesdir)
# vim: set noet:
noinst_HEADERS = emoticonseditdialog.h

@ -27,6 +27,7 @@
#include "appearanceconfig_contactlist.h"
#include "tooltipeditdialog.h"
#include "emoticonseditdialog.h"
#include <qcheckbox.h>
#include <qdir.h>
@ -204,6 +205,8 @@ AppearanceConfig::AppearanceConfig(QWidget *parent, const char* /*name*/, const
this, SLOT(slotGetEmoticonThemes()));
connect(d->mPrfsEmoticons->btnRemoveTheme, SIGNAL(clicked()),
this, SLOT(removeSelectedEmoticonTheme()));
connect(d->mPrfsEmoticons->btnEditThemes, SIGNAL(clicked()),
this, SLOT(editSelectedEmoticonTheme()));
d->mAppearanceTabCtl->addTab(d->mPrfsEmoticons, i18n("&Emoticons"));
@ -866,5 +869,20 @@ void AppearanceConfig::slotEditTooltips()
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"
// vim: set noet ts=4 sts=4 sw=4:

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

@ -109,6 +109,17 @@
<string>Download emoticon theme from the Internet</string>
</property>
</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">
<property name="name">
<cstring>btnInstallTheme</cstring>

@ -51,9 +51,10 @@ int main( int argc, char *argv[] )
{
KAboutData aboutData( "kopete", I18N_NOOP("Kopete"),
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 ( "Timothy Pearson", I18N_NOOP("Developer, maintainer"), "kb9vqf@pearsoncomputing.net" );
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 ( "Chetan Reddy", I18N_NOOP("Developer, Yahoo"), "chetan13@gmail.com" );

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

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

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

@ -5,8 +5,8 @@ AM_CPPFLAGS = $(KOPETE_INCLUDES) $(XMMS_INCLUDES) $(all_includes)
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_LDFLAGS = -module $(KDE_PLUGIN) $(XMMS_LDFLAGS) $(all_libraries)
kopete_nowlistening_la_LIBADD = ../../libkopete/libkopete.la $(XMMS_LIBS)
kopete_nowlistening_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries)
kopete_nowlistening_la_LIBADD = ../../libkopete/libkopete.la
kcm_kopete_nowlistening_la_SOURCES = nowlisteningprefs.ui nowlisteningpreferences.cpp nowlisteningconfig.kcfgc
kcm_kopete_nowlistening_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries)

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

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

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

@ -16,6 +16,8 @@
* (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>
@ -290,7 +292,8 @@ QString TranslatorPlugin::googleTranslateMessage( const QString &msg, const QStr
// 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.search( data );
@ -325,7 +328,8 @@ QString TranslatorPlugin::babelTranslateMessage( const QString &msg, const QStri
//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.search( data );
@ -360,7 +364,7 @@ void TranslatorPlugin::sendTranslation( Kopete::Message &msg, const QString &tra
msg.setBody( translated, msg.format() );
break;
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;
case ShowDialog:
{

@ -40,8 +40,20 @@ if test "x$with_external_libgadu" != xno; then
int main()
{
#if defined __GG_LIBGADU_HAVE_PTHREAD && defined GG_LOGIN60
int maj, min, date;
sscanf( gg_libgadu_version(), "%u.%u.%u", &maj,&min,&date );
int maj, min, date, items;
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 ) {
return 1;
}

@ -2,7 +2,7 @@
/*
* (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
* 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
/*
* 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
* - format... - treść wiadomości (kompatybilna z printf())
* - level - poziom wiadomo<EFBFBD>ci
* - format... - tre<EFBFBD><EFBFBD> wiadomo<EFBFBD>ci (kompatybilna z printf())
*/
void gg_debug(int level, const char *format, ...)
{
@ -79,15 +79,15 @@ cleanup:
/*
* gg_vsaprintf() // funkcja pomocnicza
*
* robi dokładnie to samo, co vsprintf(), tyle że alokuje sobie wcześniej
* miejsce na dane. powinno działać na tych maszynach, które mają funkcję
* vsnprintf() zgodną z C99, jak i na wcześniejszych.
* robi dok<EFBFBD>adnie to samo, co vsprintf(), tyle <EFBFBD>e alokuje sobie wcze<EFBFBD>niej
* miejsce na dane. powinno dzia<EFBFBD>a<EFBFBD> na tych maszynach, kt<EFBFBD>re maj<EFBFBD> funkcj<EFBFBD>
* vsnprintf() zgodn<EFBFBD> z C99, jak i na wcze<EFBFBD>niejszych.
*
* - format - opis wyświetlanego tekstu jak dla printf()
* - ap - lista argumentów dla printf()
* - format - opis wy<EFBFBD>wietlanego tekstu jak dla printf()
* - ap - lista argument<EFBFBD>w dla printf()
*
* zaalokowany bufor, który należy później zwolnić, lub NULL
* jeśli nie udało się wykonać zadania.
* zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD>, lub NULL
* je<EFBFBD>li nie uda<EFBFBD>o si<EFBFBD> wykona<EFBFBD> zadania.
*/
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];
/* libce Solarisa przy buforze NULL zawsze zwracają -1, więc
* musimy podać coś istniejącego jako cel printf()owania. */
/* libce Solarisa przy buforze NULL zawsze zwracaj<EFBFBD> -1, wi<77>c
* musimy poda<EFBFBD> co<EFBFBD> istniej<EFBFBD>cego jako cel printf()owania. */
size = vsnprintf(tmp, sizeof(tmp), format, ap);
if (!(buf = malloc(size + 1)))
return NULL;
@ -157,14 +157,14 @@ char *gg_vsaprintf(const char *format, va_list ap)
/*
* gg_saprintf() // funkcja pomocnicza
*
* robi dokładnie to samo, co sprintf(), tyle że alokuje sobie wcześniej
* miejsce na dane. powinno działać na tych maszynach, które mają funkcję
* vsnprintf() zgodną z C99, jak i na wcześniejszych.
* robi dok<EFBFBD>adnie to samo, co sprintf(), tyle <EFBFBD>e alokuje sobie wcze<EFBFBD>niej
* miejsce na dane. powinno dzia<EFBFBD>a<EFBFBD> na tych maszynach, kt<EFBFBD>re maj<EFBFBD> funkcj<EFBFBD>
* 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
* jeśli nie udało się wykonać zadania.
* zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD>, lub NULL
* je<EFBFBD>li nie uda<EFBFBD>o si<EFBFBD> wykona<EFBFBD> zadania.
*/
char *gg_saprintf(const char *format, ...)
{
@ -181,19 +181,20 @@ char *gg_saprintf(const char *format, ...)
/*
* gg_get_line() // funkcja pomocnicza
*
* podaje kolejną linię z bufora tekstowego. niszczy go bezpowrotnie, dzieląc
* na kolejne stringi. zdarza się, nie ma potrzeby pisania funkcji dublującej
* bufor żeby tylko mieć nieruszone dane wejściowe, skoro i tak nie będą nam
* poźniej potrzebne. obcina `\r\n'.
* podaje kolejn<EFBFBD> lini<EFBFBD> z bufora tekstowego. niszczy go bezpowrotnie, dziel<EFBFBD>c
* na kolejne stringi. zdarza si<EFBFBD>, nie ma potrzeby pisania funkcji dubluj<EFBFBD>cej
* bufor <EFBFBD>eby tylko mie<EFBFBD> nieruszone dane wej<EFBFBD>ciowe, skoro i tak nie b<EFBFBD>d<EFBFBD> nam
* 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
*
* 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 *foo, *res;
const char *foo;
char *res;
if (!ptr || !*ptr || !strcmp(*ptr, ""))
return NULL;
@ -204,7 +205,6 @@ char *gg_get_line(char **ptr)
*ptr += strlen(*ptr);
else {
*ptr = foo + 1;
*foo = 0;
if (strlen(res) > 1 && res[strlen(res) - 1] == '\r')
res[strlen(res) - 1] = 0;
}
@ -215,15 +215,15 @@ char *gg_get_line(char **ptr)
/*
* gg_connect() // funkcja pomocnicza
*
* łączy się z serwerem. pierwszy argument jest typu (void *), żeby nie
* musieć niczego inkludować w libgadu.h i nie psuć jakiś głupich zależności
* <EFBFBD><EFBFBD>czy si<EFBFBD> z serwerem. pierwszy argument jest typu (void *), <EFBFBD>eby nie
* 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.
*
* - addr - adres serwera (struct in_addr *)
* - 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)
{
@ -288,13 +288,13 @@ int gg_connect(void *addr, int port, int async)
/*
* gg_read_line() // funkcja pomocnicza
*
* czyta jedną linię tekstu z gniazda.
* czyta jedn<EFBFBD> lini<EFBFBD> tekstu z gniazda.
*
* - sock - deskryptor gniazda
* - buf - wskaźnik do bufora
* - length - długość bufora
* - buf - wska<EFBFBD>nik do 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.
*/
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
*
* 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)
{
@ -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ę
* przy różnych usługach katalogu publicznego.
* zamienia podany tekst na ci<EFBFBD>g znak<EFBFBD>w do formularza http. przydaje si<EFBFBD>
* 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
* w przypadku błędu.
* zaalokowany bufor, kt<EFBFBD>ry nale<EFBFBD>y p<EFBFBD><EFBFBD>niej zwolni<EFBFBD> albo NULL
* w przypadku b<EFBFBD><EFBFBD>du.
*/
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
* ciągiem znaków lub 'u' jeśli numerem GG)
* - format... - format kolejnych parametr<EFBFBD>w ('s' je<EFBFBD>li dany parametr jest
* 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.
*/
int gg_http_hash(const char *format, ...)
@ -441,12 +441,12 @@ int gg_http_hash(const char *format, ...)
/*
* gg_gethostbyname() // funkcja pomocnicza
*
* odpowiednik gethostbyname() troszczący się o współbieżność, gdy mamy do
* dyspozycji funkcję gethostbyname_r().
* odpowiednik gethostbyname() troszcz<EFBFBD>cy si<EFBFBD> o wsp<EFBFBD><EFBFBD>bie<EFBFBD>no<EFBFBD><EFBFBD>, gdy mamy do
* dyspozycji funkcj<EFBFBD> gethostbyname_r().
*
* - 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)
{
@ -540,20 +540,20 @@ struct gg_win32_thread *gg_win32_threads = 0;
/*
* 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.
*
* jeśli na win32 przy połączeniach synchronicznych zapamiętamy w jakim
* wątku uruchomiliśmy funkcję, która się z czymkolwiek łączy, to z osobnego
* wątku możemy anulować połączenie poprzez gg_win32_thread_socket(watek, -1);
* je<EFBFBD>li na win32 przy po<EFBFBD><EFBFBD>czeniach synchronicznych zapami<EFBFBD>tamy w jakim
* w<EFBFBD>tku uruchomili<EFBFBD>my funkcj<EFBFBD>, kt<EFBFBD>ra si<EFBFBD> z czymkolwiek <EFBFBD><EFBFBD>czy, to z osobnego
* 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,
* jeśli równe -1, usuwa wpis o podanym sockecie.
* - socket - deskryptor gniazda. jeśli równe 0, zwraca deskryptor gniazda
* dla podanego wątku, jeśli równe -1, usuwa wpis, jeśli coś
* innego, ustawia dla podanego wątku dany numer deskryptora.
* - thread_id - id w<EFBFBD>tku. je<EFBFBD>li jest r<EFBFBD>wne 0, brany jest aktualny w<EFBFBD>tek,
* je<EFBFBD>li r<EFBFBD>wne -1, usuwa wpis o podanym sockecie.
* - socket - deskryptor gniazda. je<EFBFBD>li r<EFBFBD>wne 0, zwraca deskryptor gniazda
* dla podanego w<EFBFBD>tku, je<EFBFBD>li r<EFBFBD>wne -1, usuwa wpis, je<EFBFBD>li co<EFBFBD>
* 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)
{
@ -608,9 +608,9 @@ static char gg_base64_charset[] =
/*
* 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.
*/
@ -665,14 +665,15 @@ char *gg_base64_encode(const char *buf)
/*
* 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.
*/
char *gg_base64_decode(const char *buf)
{
const char *foo2;
char *res, *save, *foo, val;
const char *end;
unsigned int index = 0;
@ -692,8 +693,12 @@ char *gg_base64_decode(const char *buf)
buf++;
continue;
}
if (!(foo = strchr(gg_base64_charset, *buf)))
if (!(foo2 = strchr(gg_base64_charset, *buf))) {
foo = gg_base64_charset;
}
else {
foo = foo2;
}
val = (int)(foo - gg_base64_charset);
buf++;
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.
*/
char *gg_proxy_auth()
@ -764,7 +769,7 @@ static uint32_t gg_crc32_table[256];
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()
{
@ -786,11 +791,11 @@ static void gg_crc32_make_table()
/*
* 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
* - size - ilość danych
* - size - ilo<EFBFBD><EFBFBD> danych
*
* suma kontrolna CRC32.
*/

@ -2,8 +2,8 @@
/*
* (C) Copyright 2001-2006 Wojtek Kaniewski <wojtekka@irc.pl>
* Robert J. Woźny <speedy@ziew.org>
* Arkadiusz Miśkiewicz <arekm@pld-linux.org>
* Robert J. Wo<EFBFBD>ny <speedy@ziew.org>
* Arkadiusz Mi<EFBFBD>kiewicz <arekm@pld-linux.org>
* Adam Wysocki <gophi@ekg.chmurka.net>
*
* This program is free software; you can redistribute it and/or modify
@ -50,9 +50,9 @@
/*
* 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)
{
@ -127,7 +127,7 @@ void gg_event_free(struct gg_event *e)
*
* - s - sesja
* - q - kolejka
* - freeq - czy zwolnić kolejkę
* - freeq - czy zwolni<EFBFBD> kolejk<EFBFBD>
*
* 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
* -
@ -178,7 +178,7 @@ static void gg_image_queue_parse(struct gg_event *e, char *p, unsigned int len,
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) {
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);
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++) {
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);
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) {
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.
*
* - h - nagłówek pakietu
* - h - nag<EFBFBD><EFBFBD>wek pakietu
* - e - opis zdarzenia
*
* 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) {
/* 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->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
*
* 0, -1.
@ -727,7 +727,7 @@ static int gg_watch_fd_connected(struct gg_session *sess, struct gg_event *e)
if (h->length < 1)
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 */
if (p[0] == GG_USERLIST_PUT_REPLY || p[0] == GG_USERLIST_PUT_MORE_REPLY) {
if (--sess->userlist_blocks)
@ -780,16 +780,16 @@ fail:
/*
* gg_watch_fd()
*
* funkcja, którą należy wywołać, gdy coś się stanie z obserwowanym
* deskryptorem. zwraca klientowi informację o tym, co się dzieje.
* funkcja, kt<EFBFBD>r<EFBFBD> nale<EFBFBD>y wywo<EFBFBD>a<EFBFBD>, gdy co<EFBFBD> si<EFBFBD> stanie z obserwowanym
* deskryptorem. zwraca klientowi informacj<EFBFBD> o tym, co si<EFBFBD> dzieje.
*
* - sess - opis sesji
*
* wskaźnik do struktury gg_event, którą trzeba zwolnić później
* za pomocą gg_event_free(). jesli rodzaj zdarzenia jest równy
* GG_EVENT_NONE, należy je zignorować. jeśli zwróciło NULL,
* stało się coś niedobrego -- albo zabrakło pamięci albo zerwało
* połączenie.
* wska<EFBFBD>nik do struktury gg_event, kt<EFBFBD>r<EFBFBD> trzeba zwolni<EFBFBD> p<EFBFBD><EFBFBD>niej
* za pomoc<EFBFBD> gg_event_free(). jesli rodzaj zdarzenia jest r<EFBFBD>wny
* GG_EVENT_NONE, nale<EFBFBD>y je zignorowa<EFBFBD>. je<EFBFBD>li zwr<EFBFBD>ci<EFBFBD>o NULL,
* sta<EFBFBD>o si<EFBFBD> co<EFBFBD> niedobrego -- albo zabrak<EFBFBD>o pami<EFBFBD>ci albo zerwa<EFBFBD>o
* po<EFBFBD><EFBFBD>czenie.
*/
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;
}
/* jeśli jesteśmy w resolverze i mamy ustawiony port
* proxy, znaczy, że resolvowaliśmy proxy. zatem
/* je<EFBFBD>li jeste<74>my w resolverze i mamy ustawiony port
* proxy, znaczy, <EFBFBD>e resolvowali<EFBFBD>my proxy. zatem
* wpiszmy jego adres. */
if (sess->proxy_port)
sess->proxy_addr = addr.s_addr;
/* 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. */
if (sess->proxy_addr && 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);
/* łączymy się albo z hubem, albo z proxy, zależnie
* od tego, co resolvowaliśmy. */
/* <EFBFBD><EFBFBD>czymy si<73> albo z hubem, albo z proxy, zale<6C>nie
* od tego, co resolvowali<EFBFBD>my. */
if ((sess->fd = gg_connect(&addr, port, sess->async)) == -1) {
/* jeśli w trybie asynchronicznym gg_connect()
* zwróci błąd, nie ma sensu próbować dalej. */
/* je<EFBFBD>li w trybie asynchronicznym gg_connect()
* 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));
goto fail_connecting;
}
/* jeśli podano serwer i łączmy się przez proxy,
* jest to bezpośrednie połączenie, inaczej jest
/* je<EFBFBD>li podano serwer i <20><>czmy si<73> przez proxy,
* jest to bezpo<EFBFBD>rednie po<EFBFBD><EFBFBD>czenie, inaczej jest
* do huba. */
sess->state = (sess->proxy_addr && sess->proxy_port && sess->server_addr) ? GG_STATE_CONNECTING_GG : GG_STATE_CONNECTING_HUB;
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");
/* jeśli asynchroniczne, sprawdzamy, czy nie wystąpił
* przypadkiem jakiś błąd. */
/* je<EFBFBD>li asynchroniczne, sprawdzamy, czy nie wyst<73>pi<70>
* przypadkiem jaki<EFBFBD> b<EFBFBD><EFBFBD>d. */
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
* nie próbujemy dalej. */
/* no tak, nie uda<EFBFBD>o si<73> po<70><6F>czy<7A> z proxy. nawet
* nie pr<EFBFBD>bujemy dalej. */
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));
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) {
/* przy asynchronicznych, gg_connect()
* zwraca -1 przy błędach socket(),
* zwraca -1 przy b<EFBFBD><EFBFBD>dach socket(),
* 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));
goto fail_connecting;
}
@ -952,7 +952,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
free(client);
/* zwolnij pamięć po wersji klienta. */
/* zwolnij pami<EFBFBD><EFBFBD> po wersji klienta. */
if (sess->client_version) {
free(sess->client_version);
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);
/* zapytanie jest krótkie, więc zawsze zmieści się
* do bufora gniazda. jeśli write() zwróci mniej,
* stało się coś złego. */
/* zapytanie jest kr<EFBFBD>tkie, wi<77>c zawsze zmie<69>ci si<73>
* do bufora gniazda. je<EFBFBD>li write() zwr<EFBFBD>ci mniej,
* sta<EFBFBD>o si<EFBFBD> co<EFBFBD> z<EFBFBD>ego. */
if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) {
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");
/* 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_chomp(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)) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() that's not what we've expected, trying direct connection\n");
close(sess->fd);
/* jeśli otrzymaliśmy jakieś dziwne informacje,
* próbujemy się łączyć z pominięciem huba. */
/* je<EFBFBD>li otrzymali<6C>my jakie<69> dziwne informacje,
* pr<EFBFBD>bujemy si<EFBFBD> <EFBFBD><EFBFBD>czy<EFBFBD> z pomini<EFBFBD>ciem huba. */
if (sess->proxy_addr && sess->proxy_port) {
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));
goto fail_connecting;
}
@ -1017,13 +1017,13 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
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) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno));
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) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting;
@ -1036,16 +1036,16 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
break;
}
/* ignorujemy resztę nagłówka. */
/* ignorujemy reszt<EFBFBD> nag<61><67>wka. */
while (strcmp(buf, "\r\n") && strcmp(buf, ""))
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_chomp(buf);
/* jeśli pierwsza liczba w linii nie jest równa zeru,
* oznacza to, że mamy wiadomość systemową. */
/* je<EFBFBD>li pierwsza liczba w linii nie jest r<>wna zeru,
* oznacza to, <EFBFBD>e mamy wiadomo<EFBFBD><EFBFBD> systemow<EFBFBD>. */
if (atoi(buf)) {
char tmp[1024], *foo, *sysmsg_buf = NULL;
int len = 0;
@ -1088,7 +1088,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
tmp++;
*tmp = 0;
if ((tmp = strchr(host, ':'))) {
if ((tmp = (char*)strchr(host, ':'))) {
*tmp = 0;
port = atoi(tmp + 1);
}
@ -1103,9 +1103,9 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
sess->server_addr = addr.s_addr;
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) {
/* 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));
goto fail_connecting;
}
@ -1118,15 +1118,15 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
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) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s), trying https\n", errno, strerror(errno));
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) {
/* ostatnia deska ratunku zawiodła?
/* ostatnia deska ratunku zawiod<EFBFBD>a?
* w takim razie zwijamy manatki. */
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
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");
/* 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)) {
/* jeśli nie udało się połączenie z proxy,
* nie mamy czego próbować więcej. */
/* je<EFBFBD>li nie uda<64>o si<73> po<70><6F>czenie z proxy,
* nie mamy czego pr<EFBFBD>bowa<EFBFBD> wi<EFBFBD>cej. */
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));
goto fail_connecting;
@ -1164,10 +1164,10 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
#endif
#ifdef __GG_LIBGADU_HAVE_OPENSSL
/* jeśli logujemy się po TLS, nie próbujemy
* się łączyć już z niczym innym w przypadku
* błędu. nie dość, że nie ma sensu, to i
* trzeba by się bawić w tworzenie na nowo
/* je<EFBFBD>li logujemy si<73> po TLS, nie pr<70>bujemy
* si<EFBFBD> <EFBFBD><EFBFBD>czy<EFBFBD> ju<EFBFBD> z niczym innym w przypadku
* b<EFBFBD><EFBFBD>du. nie do<EFBFBD><EFBFBD>, <EFBFBD>e nie ma sensu, to i
* trzeba by si<EFBFBD> bawi<EFBFBD> w tworzenie na nowo
* SSL i SSL_CTX. */
if (sess->ssl) {
@ -1180,7 +1180,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
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) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() connection failed (errno=%d, %s)\n", errno, strerror(errno));
goto fail_connecting;
@ -1192,7 +1192,7 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
if (gg_proxy_http_only)
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) {
char buf[100], *auth = gg_proxy_auth();
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);
/* wysyłamy zapytanie. jest ono na tyle krótkie,
* że musi się zmieścić w buforze gniazda. jeśli
* write() zawiedzie, stało się coś złego. */
/* wysy<EFBFBD>amy zapytanie. jest ono na tyle kr<6B>tkie,
* <EFBFBD>e musi si<EFBFBD> zmie<EFBFBD>ci<EFBFBD> w buforze gniazda. je<EFBFBD>li
* write() zawiedzie, sta<EFBFBD>o si<EFBFBD> co<EFBFBD> z<EFBFBD>ego. */
if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) {
gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() can't send proxy request\n");
if (auth)
@ -1344,8 +1344,8 @@ struct gg_event *gg_watch_fd(struct gg_session *sess)
memset(&l, 0, sizeof(l));
l.dunno2 = 0xbe;
/* XXX bardzo, bardzo, bardzo głupi pomysł na pozbycie
* się tekstu wrzucanego przez proxy. */
/* XXX bardzo, bardzo, bardzo g<EFBFBD>upi pomys<79> na pozbycie
* si<EFBFBD> tekstu wrzucanego przez proxy. */
if (sess->proxy_addr && sess->proxy_port) {
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
* fazie. głupio, ale działa. */
* fazie. g<EFBFBD>upio, ale dzia<EFBFBD>a. */
sess->proxy_port = 0;
break;

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

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

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

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

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

@ -568,7 +568,7 @@ void Level::setText(const char *str)
FontDef& def = p->fonts[m_nFont-1];
char *pp = strchr(str, ';');
const char *pp = strchr(str, ';');
unsigned size;
if (pp != NULL)
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;
while (*magic_ptr != (int)NULL) {
char *loc;
const char *loc;
/* Ignore parentheses. */

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

@ -37,41 +37,56 @@ static const char *devices[] = {
"/dev/dtyU3",
#elif defined (__linux__)
"/dev/modem",
"/dev/modem0",
"/dev/modem1",
"/dev/modem2",
"/dev/modem3",
"/dev/ttyS0",
"/dev/ttyS1",
"/dev/ttyS2",
"/dev/ttyS3",
"/dev/ttyS4",
#ifdef ISDNSUPPORT
"/dev/ttyI0",
"/dev/ttyI1",
"/dev/ttyI2",
"/dev/ttyI3",
#endif
"/dev/ttyS5",
"/dev/ttyS6",
"/dev/ttyS7",
"/dev/ttyS8",
"/dev/ttyS9",
"/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/ttyACM1",
"/dev/usb/ttyACM2",
"/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/ttyUSB1",
"/dev/ttyUSB2",
"/dev/ttyUSB3",
"/dev/usb/tts/0", /* USB stuff modems with devfs*/
"/dev/usb/tts/1",
"/dev/usb/tts/2",
"/dev/usb/tts/3",
"/dev/usb/ttyUSB0", /* USB stuff modems */
"/dev/usb/ttyUSB1",
"/dev/usb/ttyUSB2",
"/dev/usb/ttyUSB3",
"/dev/rfcomm0", /* BlueTooth */
"/dev/rfcomm1",
"/dev/rfcomm2",
"/dev/rfcomm3",
"/dev/bluetooth/rfcomm/0",
"/dev/bluetooth/rfcomm/1",
"/dev/bluetooth/rfcomm/2",
"/dev/bluetooth/rfcomm/3",
"/dev/ircomm0", /* IrDA */
"/dev/ircomm1",
"/dev/ircomm2",
@ -84,6 +99,16 @@ static const char *devices[] = {
"/dev/ttySHSF1",
"/dev/ttySHSF2",
"/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__)
"/dev/cua/a",
"/dev/cua/b",

@ -75,3 +75,4 @@ Type=Application
Terminal=false
X-DCOP-ServiceType=Multi
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/if.h>
# include <net/ppp/if_ppp.h>
# elif defined HAVE_LINUX_IF_PPP_H
# include <linux/if_ppp.h>
# endif
#else
# include <net/ppp_defs.h>

@ -188,7 +188,10 @@ void PPPL_AnalyseLog(QStringList &list, QStringList &result) {
}
if (result.isEmpty())
{
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
#include <sys/socket.h> /* *BSD, Linux, NeXT, Ultrix etc. */
#ifndef HAVE_NET_IF_PPP_H
#ifdef HAVE_LINUX_IF_PPP_H
#include <linux/if.h>
#include <linux/if_ppp.h>
#elif defined(__DragonFly__)
#if defined(__DragonFly__)
#include <net/if.h>
#include <net/ppp/if_ppp.h>
#endif

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

@ -123,6 +123,11 @@ public:
*/
virtual bool viewOnly() = 0;
/**
* Checks whether the view is requesting full screen mode.
*/
virtual bool startFullscreen() = 0;
/**
* Returns the resolution of the remote framebuffer.
* 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"),
VERSION, description, KAboutData::License_GPL,
"(c) 2001-2003, Tim Jansen"
"(c) 2002-2003, Arend van Beelen jr."
"(c) 2009-2010, Timothy Pearson\n"
"(c) 2001-2003, Tim Jansen\n"
"(c) 2002-2003, Arend van Beelen jr.\n"
"(c) 2000-2002, Const Kaplinsky\n"
"(c) 2000, Tridia Corporation\n"
"(c) 1999, AT&T Laboratories Cambridge\n"
"(c) 1999-2003, Matthew Chapman\n", 0, 0,
"tim@tjansen.de");
aboutData.addAuthor("Timothy Pearson",0, "kb9vqf@pearsoncomputing.net");
aboutData.addAuthor("Tim Jansen",0, "tim@tjansen.de");
aboutData.addAuthor("Arend van Beelen jr.",
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
*/
#include <kapplication.h>
#include <kdialogbase.h>
#include <klocale.h>
#include <kmessagebox.h>
@ -38,6 +39,7 @@
#include "rdphostpref.h"
#include "rdpprefs.h"
bool launch_Fullscreen_rdp = false;
bool rdpAppDataConfigured = false;
extern KWallet::Wallet *wallet;
@ -188,6 +190,7 @@ bool KRdpView::editPreferences( HostPrefPtr host )
wv = prefs->rdpWidth();
hv = prefs->rdpHeight();
kl = int2keymap( prefs->kbLayout() );
hp->setAskOnConnect( prefs->showPrefs() );
hp->setWidth(wv);
@ -206,6 +209,8 @@ bool KRdpView::start()
SmartPtr<RdpHostPref> hp, rdpDefaults;
bool useKWallet = false;
QWidget *desktop = QApplication::desktop();
if(!rdpAppDataConfigured)
{
HostPreferences *hps = HostPreferences::instance();
@ -225,7 +230,19 @@ bool KRdpView::start()
m_process = new KProcess(m_container);
*m_process << "rdesktop";
*m_process << "-g" << (QString::number(hp->width()) + "x" + QString::number(hp->height()));
// 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 << "-k" << hp->layout();
if(!m_user.isEmpty()) { *m_process << "-u" << m_user; }
@ -311,6 +328,11 @@ bool KRdpView::viewOnly()
return m_container->m_viewOnly;
}
bool KRdpView::startFullscreen()
{
return launch_Fullscreen_rdp;
}
void KRdpView::setViewOnly(bool s)
{
m_container->m_viewOnly = s;

@ -69,6 +69,7 @@ class KRdpView : public KRemoteView
virtual QSize framebufferSize(); // returns the size of the remote view
QSize sizeHint(); // returns the suggested size
virtual bool viewOnly();
virtual bool startFullscreen();
// functions regarding 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) :
HostPref(conf, host, type),
m_width(800),
m_height(600),
m_colorDepth(8),
m_width(0),
m_height(0),
m_colorDepth(24),
m_layout("en-us"),
m_askOnConnect(true),
m_useKWallet(true)
@ -70,9 +70,9 @@ void RdpHostPref::load()
{
m_config->setGroup("PerHostSettings");
QString p = prefix();
m_width = m_config->readNumEntry(p+"width", 800);
m_height = m_config->readNumEntry(p+"height", 600);
m_colorDepth = m_config->readNumEntry(p+"colorDepth", 8);
m_width = m_config->readNumEntry(p+"width", 0);
m_height = m_config->readNumEntry(p+"height", 0);
m_colorDepth = m_config->readNumEntry(p+"colorDepth", 24);
m_layout = m_config->readEntry(p+"layout", "en-us");
m_askOnConnect = m_config->readBoolEntry(p+"askOnConnect", true);
m_useKWallet = m_config->readBoolEntry(p+"useKWallet", true);
@ -99,9 +99,9 @@ void RdpHostPref::remove()
void RdpHostPref::setDefaults()
{
m_config->setGroup("RdpDefaultSettings");
m_width = m_config->readNumEntry("rdpWidth", 800);
m_height = m_config->readNumEntry("rdpHeight", 600);
m_colorDepth = m_config->readNumEntry("rdpColorDepth", 8);
m_width = m_config->readNumEntry("rdpWidth", 0);
m_height = m_config->readNumEntry("rdpHeight", 0);
m_colorDepth = m_config->readNumEntry("rdpColorDepth", 24);
m_layout = m_config->readEntry("rdpKeyboardLayout", "en-us");
m_askOnConnect = m_config->readBoolEntry("rdpShowHostPreferences", true);
m_useKWallet = m_config->readBoolEntry("rdpUseKWallet", true);

@ -68,6 +68,11 @@
<string>Custom (...)</string>
</property>
</item>
<item>
<property name="text">
<string>Full Screen (Maximized)</string>
</property>
</item>
<property name="name">
<cstring>cmbResolution</cstring>
</property>
@ -86,7 +91,7 @@
</size>
</property>
<property name="currentItem">
<number>1</number>
<number>5</number>
</property>
<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>

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

@ -40,6 +40,8 @@
#include <X11/Xlib.h>
bool launch_Fullscreen_vnc = false;
/*
* 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
@ -324,6 +326,11 @@ bool KVncView::viewOnly() {
return m_viewOnly;
}
bool KVncView::startFullscreen()
{
return launch_Fullscreen_vnc;
}
QSize KVncView::framebufferSize() {
return m_framebufferSize;
}

@ -104,6 +104,7 @@ public:
virtual bool start();
virtual bool viewOnly();
virtual bool startFullscreen();
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_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_HK]=桌面分享
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;
char *fb = framebufferImage->data;
int bpp = framebufferImage->bits_per_pixel >> 3;
if (bpp != 1 && bpp != 2 && bpp != 4) bpp = 4;
rfbLogEnable(0);
server = rfbGetScreen(0, 0, w, h,
framebufferImage->bits_per_pixel,
8,
framebufferImage->bits_per_pixel/8);
server = rfbGetScreen(0, 0, w, h, (bpp*8), 8, bpp);
server->paddedWidthInBytes = framebufferImage->bytes_per_line;

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

@ -101,7 +101,7 @@
<string>unlimited</string>
</property>
<property name="maxValue">
<number>1000</number>
<number>10000</number>
</property>
<property name="toolTip" stdset="0">
<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;
$set{"FINGER"}=$ENV{"IRCFINGER"} || "keep your fingers to yourself";
$set{"USERINFO"}=$ENV{"USERINFO"} || "yep, I'm a user";
if ($server =~ /^\[([^\]]+)\]:([0-9]*):?([^:]*)$/
or $server =~ /^([^:]+):([0-9]*):?([^:]*)$/)
if ($server =~ /^\[([^\]]+)\]:([0-9]*):?(.*)$/
or $server =~ /^([^:]+):([0-9]*):?(.*)$/)
{
($server, $port, $pass)=($1, $2, $3);
}

@ -32,7 +32,8 @@ AC_FIND_USER_METHOD
AM_CONDITIONAL(KDE_INSTALLED, test "$have_kde" = "yes")
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
dnl Checks for libraries.

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

Loading…
Cancel
Save