Index: Makefile
===================================================================
--- Makefile	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ Makefile	(revision a949b43ed657154d4ff8492bbdb16202a1a9f22d)
@@ -19,5 +19,5 @@
 subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o)
 
-all: $(OUTFILE) $(OTR_PI) $(SKYPE_PI) doc systemd
+all: $(OUTFILE) $(OTR_PI) doc systemd
 
 doc:
@@ -53,7 +53,4 @@
 	rm -f *.o $(OUTFILE) core utils/bitlbeed init/bitlbee*.service
 	$(MAKE) -C tests clean
-ifdef SKYPE_PI
-	$(MAKE) -C protocols/skype clean
-endif
 
 distclean: clean $(subdirs)
@@ -79,14 +76,8 @@
 	$(MAKE) -C doc install
 endif
-ifdef SKYPE_PI
-	$(MAKE) -C protocols/skype install-doc
-endif
 
 uninstall-doc:
 ifdef DOC
 	$(MAKE) -C doc uninstall
-endif
-ifdef SKYPE_PI
-	$(MAKE) -C protocols/skype uninstall-doc
 endif
 
@@ -128,5 +119,5 @@
 	-rmdir $(DESTDIR)$(ETCDIR)
 
-install-plugins: install-plugin-otr install-plugin-skype
+install-plugins: install-plugin-otr
 
 install-plugin-otr:
@@ -134,15 +125,4 @@
 	mkdir -p $(DESTDIR)$(PLUGINDIR)
 	$(INSTALL) -m 0755 otr.so $(DESTDIR)$(PLUGINDIR)
-endif
-
-install-plugin-skype:
-ifdef SKYPE_PI
-	mkdir -p $(DESTDIR)$(PLUGINDIR)
-	$(INSTALL) -m 0755 skype.so $(DESTDIR)$(PLUGINDIR)
-	mkdir -p $(DESTDIR)$(ETCDIR)/../skyped $(DESTDIR)$(BINDIR)
-	$(INSTALL) -m 0644 $(_SRCDIR_)protocols/skype/skyped.cnf $(DESTDIR)$(ETCDIR)/../skyped/skyped.cnf
-	$(INSTALL) -m 0644 $(_SRCDIR_)protocols/skype/skyped.conf.dist $(DESTDIR)$(ETCDIR)/../skyped/skyped.conf
-	$(INSTALL) -m 0755 $(_SRCDIR_)protocols/skype/skyped.py $(DESTDIR)$(BINDIR)/skyped
-	$(MAKE) -C protocols/skype install-doc
 endif
 
@@ -177,8 +157,4 @@
 	$(VERBOSE) $(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS)
 
-$(SKYPE_PI): $(_SRCDIR_)protocols/skype/skype.c
-	@echo '*' Building plugin skype
-	$(VERBOSE) $(CC) $(CFLAGS) $(LDFLAGS) $(SKYPEFLAGS) $< -o $@
-
 $(objects): %.o: $(_SRCDIR_)%.c
 	@echo '*' Compiling $<
Index: configure
===================================================================
--- configure	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ configure	(revision a949b43ed657154d4ff8492bbdb16202a1a9f22d)
@@ -47,5 +47,4 @@
 plugins=1
 otr=0
-skype=0
 
 events=glib
@@ -148,6 +147,4 @@
 --otr=0/1/auto/plugin
 		Disable/enable OTR encryption support	$otr
---skype=0/1/plugin
-		Disable/enable Skype support		$skype
 
 --events=...	Event handler (glib, libevent)		$events
@@ -751,14 +748,4 @@
 	echo "CFLAGS+=$($PKG_CONFIG --cflags libotr) $(libgcrypt-config --cflags)" >> Makefile.settings
 	echo 'OTR_PI=otr.so' >> Makefile.settings
-fi
-
-if [ "$skype" = "1" -o "$skype" = "plugin" ]; then
-	if [ "$arch" = "Darwin" ]; then
-		echo "SKYPEFLAGS=-dynamiclib -undefined dynamic_lookup" >> Makefile.settings
-	else
-		echo "SKYPEFLAGS=-fPIC -shared" >> Makefile.settings
-	fi
-	echo 'SKYPE_PI=skype.so' >> Makefile.settings
-	protocols_mods="$protocol_mods skype(plugin)"
 fi
 
Index: otocols/skype/.bzrignore
===================================================================
--- protocols/skype/.bzrignore	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,19 +1,0 @@
-Changelog
-HEADER.html
-*.gz
-*.asc
-.htaccess
-shot
-*.swp
-aclocal.m4
-autom4te.cache
-config.log
-config.mak
-config.status
-configure
-etc
-install-sh
-skype.so
-skyped.conf
-skyped.conf.dist
-skype.dylib*
Index: otocols/skype/HACKING
===================================================================
--- protocols/skype/HACKING	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,80 +1,0 @@
-== Tabs
-
-I use the following tabs during the development:
-
-1) bitlbee-skype:
-
-vim, make, etc.
-
-2) bitlbee:
-
-gdb --args ./bitlbee -v -n -D
-run
-
-3) skyped:
-
-python skyped.py -n -d
-
-4) irssi
-
-
-== Tests
-
-The plugin is tested with a mocked IRC client and a mocked skyped.
-
-=== Requirements
-
-Python pexpect module is required to run the tests.
-
-To run tests with bitlbee built in a development tree and not (the one)
-installed in the system (e.g. /usr), make sure to specify --plugindir= option to
-./configure script during the build process:
-
-bitlbee% ./configure --skype=1 --plugindir="$(realpath .)"
-
-Otherwise bitlbee will try to load skype.so (among other things) from /usr/lib,
-which is probably not what you want to test, or produce "Unknown protocol"
-error.
-
-=== Running
-
-Tests can be run by running test.py script in this ("protocols/skype")
-directory.
-
-For more control over how/which tests are being run from there, use "python -m
-unittest" command:
-
-bitlbee/protocols/skype% python -m unittest test
-bitlbee/protocols/skype% python -m unittest -f test
-bitlbee/protocols/skype% python -m unittest test.Test.testMsg
-
-If bitlbee crashes during tests with SIGSEGV (segmentation fault), it's likely
-that there is some problem with skype.c plugin.
-To get a backtrace of such crash, use:
-
-bitlbee/protocols/skype% ATTACH_GDB=true python -m unittest test.Test.testMsg
-
-Example shows running "testMsg" test with gdb attached to bitlbee, which will
-produce full backtrace in "t/gdb-<pid>.log" files (see pid in pexpect error
-output of the test).
-
-=== Adding new tests
-
-To add a new test, the following steps are necessary:
-
-1) Add a new -skyped.mock file: just do the test manually, copy&paste the
-skyped output and clean it up, so Alice talks to Bob.  You can test the created
-mock file by starting skyped with the -m option, and testing it from an IRC
-client manually.
-
-2) Add a new -bitlbee.mock file: do the test manually from irssi, and use:
-
-/connect -rawlog rawlog localhost
-
-Then clean up the rawlog: the input lines are parsed as matching patterns, so
-boring prefix/suffix text can be left out, non-interesting lines can be
-deleted. The output lines still have to be strict IRC commands, as usual.
-
-3) Add the new test to test.py and run it!
-
-// vim: ft=asciidoc
Index: otocols/skype/Makefile
===================================================================
--- protocols/skype/Makefile	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,27 +1,0 @@
--include ../../Makefile.settings
-ifdef _SRCDIR_
-_SRCDIR_ := $(_SRCDIR_)protocols/skype/
-endif
-
-DATE := $(shell date +%Y-%m-%d)
-INSTALL = install
-
-all:
-clean:
-
-# take this from the kernel
-check:
-	perl checkpatch.pl --show-types --ignore LONG_LINE,CAMELCASE --no-tree --file skype.c
-
-test: all
-	./test.py
-
-install-doc:
-	$(INSTALL) -d $(DESTDIR)$(MANDIR)/man1
-	$(INSTALL) -m644 $(_SRCDIR_)skyped.1 $(DESTDIR)$(MANDIR)/man1
-
-uninstall-doc:
-	rm -f $(DESTDIR)$(MANDIR)/man1/skyped.1*
-
-%.1: $(_SRCDIR_)%.txt $(_SRCDIR_)asciidoc.conf
-	a2x --asciidoc-opts="-f $(_SRCDIR_)asciidoc.conf" -a bee_date=$(DATE) -f manpage $<
Index: otocols/skype/NEWS
===================================================================
--- protocols/skype/NEWS	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,131 +1,0 @@
-VERSION         DESCRIPTION
------------------------------------------------------------------------------
-0.9.0         - merge support for building the plugin on OpenBSD
-	      - merge support for running skyped without gobject and
-	        pygnutls/pyopenssl - as a side effect this adds Windows support
-	      - add /ctcp call|hangup support (you need BitlBee from bzr to use
-	        this)
-              - add group support (see http://wiki.bitlbee.org/UiFix)
-0.8.4         - now using python2.7 directly in case python would point to python3k
-              - merge patch to avoid a crash when failing to connect to skyped
-              - merge support for building the plugin on NetBSD
-              - merge Debian patches
-0.8.3         - support for BitlBee 1.3dev
-              - fixed --debug switch (-d was fine)
-              - documentation fixes
-0.8.2         - building documentation is now optional
-              - new settings: test_join and show_moods
-              - '~' in skyped.conf is now expanded to the user's home directory
-	      - groupchat channel names are now persistent (requires
-	        BitlBee-1.2.6)
-0.8.1         - support for BitlBee 1.2.5
-              - support for Skype 2.1.0.81 and Skype4Py 1.0.32.0
-              - the plugin part now supports FreeBSD
-              - fix for edited messages, the prefix can now be configured
-0.8.0         - fix build on x86_64 (-fPIC usage)
-              - debug messages now have a timestamp
-              - more work on having the default config under ~/.skyped
-              - added a manual page for skyped
-0.7.2         - add --log option to skyped to allow logging while it the
-                daemon is in the background.
-              - prefer config files from ~/.skyped over /etc/skyped
-              - handle the case when LANG and LC_ALL env vars are empty
-0.7.1         - mostly internal changes, the monster read callback is
-                now replaced by tiny parser functions
-0.7.0         - made 'make config' more portable
-              - add 'skypeconsole' buddy for debugging purposes
-              - support autojoin for bookmarked groupchats
-              - skyped: make hardwired '/dev/null' portable and fix
-                Python-2.6 warnings
-0.6.3         - various osx-specific improvements (see the new screenshot!)
-              - added python-gnutls install instructions
-              - bitlbee.pc is now searched under
-                /usr/local/lib/pkgconfig by default to help LFS monkeys ;)
-0.6.2         - bugfix: make install required the plugin even in case
-                its build was disabled
-0.6.1         - added keepalive traffic to avoid disconnects in bitlbee
-                when there is no traffic for a long time
-              - now the plugin or skyped is automatically disabled if
-		the dependencies are not available; useful in case the
-		plugin is to be installed on a public server, or the
-		skyped is to be used with a public server only
-0.6.0         - works with BitlBee 1.2.1
-0.5.1         - configure now automatically detects the right prefix to
-                match witl BitlBee's one
-              - minor documentation improvements (public chats, bug
-                reporting address)
-0.5.0         - skyped now uses gnutls if possible, which seem to be
-                more stable, compared to openssl.
-              - skyped now tries to handle all read/write errors from/to
-                clients, and always just warn about failures, never exit.
-              - installation for Debian users should be more simple
-              - improved documentation
-              - this .0 release should be quite stable, only about 100
-                lines of new code
-0.4.2         - skyped should be now more responsive
-              - new skypeout_offline setting for hiding/showing SkypeOut
-                contacts
-              - support for SkypeOut calls
-              - support for querying the balance from Skype
-              - all setting should be documented now
-0.4.1         - support for building the plugin on Mac OSX
-              - tested with BitlBee 1.2 and Skype 2.0.0.63
-              - avoid ${prefix} (by autoconf) in the config file as we
-                don't handle such a variable
-              - now you can call echo123 (patch by Riskó Gergely)
-0.4.0         - support for starting, accepting and rejecting calls
-              - also updated documentation (the key is the account set
-                skype/call command)
-	      - as usual with the .0 releases, be careful, ~200 lines of
-	        new code
-0.3.2         - support for Skype 2.0.0.43
-              - skyped now automatically starts/shuts down skype
-              - improved 'make prepare' to handle more automake versions
-              - documentation improvements
-0.3.1         - beautify output when skyped is interrupted using ^C
-              - 'nick skype foo' now really sets display name, not the mood
-                text
-              - documentation fixups
-              - this version should be again as stable as 0.2.6 was
-0.3.0         - authentication support in skyped via ssl
-              - ~200 lines of new code, so be careful :)
-	      - upgraders: please read the documentation about how to set up
-	        your config the ssl certificate, this was no necessary till now
-0.2.6         - the server setting has a default value, 'localhost' so in most
-		cases you no longer have to set it explicitly
-	      - support for receiving emoted messages, ie. when the user types
-	        '/me foo'
-	      - support for setting the display name (nick 0 "foo bar") - it
-	        sets the mood text
-0.2.5         - now bitlbee's info command is supported (it displays full name,
-		birthday, homepage, age, etc.)
-0.2.4         - improve documentation based on feedback from people on #bitlbee
-	      - fixed for Skype4Py >= 0.9.28.4
-	      - tested with latest Skype beta, too (the one which supports
-	        video)
-0.2.3         - fixed that annoying "creating groupchat failed" warning
-0.2.2         - don't change the topic if skype does not report a successful
-                topic change
-              - fixed for the recent bitlbee API changes
-0.2.1         - topic support in group chats
-              - bugfixes for multiline messages
-              - this version should be again as stable as 0.1.4 was
-0.2.0         - group chat support
-              - ~300 lines of new code, so be careful :)
-              - the version number mentions that this is not a minor change
-0.1.4         - documentation: mention the version of all deps (requirements
-                section)
-              - fix sending / sending accents
-              - don't use internal functions of skype4py
-              - skyped no longer dies when skype is killed
-0.1.3         - support for edited messages
-              - ignore empty messages (skype does the same)
-              - support for multiline messages
-              - switch to the x11 api instead of dbus (it's much more stable)
-0.1.2         - notification when a new call arrives in
-              - more documentation (vnc)
-              - first release which works with unpatched bitlbee
-0.1.1         - skyped now runs as daemon in the background by default
-              - skyped now automatically reconnects on Skype restarts
-0.1.0         - initial release
-              - see README for major features
Index: otocols/skype/README
===================================================================
--- protocols/skype/README	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,359 +1,0 @@
-= Skype plugin for BitlBee
-Miklos Vajna <vmiklos-at-vmiklos-dot-hu>
-
-== Status
-
-[quote, Wilmer van der Gaast (author of BitlBee)]
-____
-Okay, this exists now, with lots of thanks to vmiklos for his *excellent*
-work!!
-
-It's not in the main BitlBee and it'll never be for various reasons, but
-because it's a plugin that shouldn't be a problem.
-____
-
-One day I browsed the BitlBee bugtracker and found
-http://bugs.bitlbee.org/bitlbee/ticket/82[this] ticket. Then after a while I
-returned and saw that it was still open. So I wrote it.
-
-It's pretty stable (one day I wanted to restart it because of an upgrade
-and just noticed it was running for 2+ months without crashing), I use
-it for my daily work. Being a plug-in, no patching is required, you can
-just install it after installing BitlBee itself.
-
-NOTE: You will see that this implementation of the Skype plug-in still requires
-a Skype instance to be running. This is because I'm not motivated to reverse
-engineer Skype's
-http://en.wikipedia.org/wiki/Skype_Protocol#Obfuscation_Layer[obfuscation
-layer]. (Not mentioning that you should ask your lawyer about if it is legal or
-not..)
-
-== Requirements
-
-* Skype >= 1.4.0.99. The latest version I've tested is 4.1.0.20.
-* BitlBee >= 3.0. The latest version I've tested is @BITLBEE_VERSION@. Use
-  old versions (see the NEWS file about which one) if you have older BitlBee
-  installed.
-* Skype4Py >= 0.9.28.7. Previous versions won't work due to API changes.
-  The latest version I've tested is 1.0.32.0.
-
-* Python >= 2.5. Skype4Py does not work with 2.4.
-
-* OS: `bitlbee-skype` has been tested under Linux and Mac OS X. The plugin part
-  has been tested under Free/Open/NetBSD as well. The daemon part has been
-  tested on Windows, too.
-
-== How to set it up
-
-Before you start. The setup is the following: BitlBee can't connect directly to
-Skype servers (the company's ones). It needs a running Skype client to do so.
-In fact BitlBee will connect to `skyped` (a tcp server, provided in this
-package) and `skyped` will connect to to your Skype client.
-
-The benefit of this architecture is that you can run Skype and `skyped`
-on a machine different to the one where you run BitlBee (it can be even
-a public server) and/or your IRC client.
-
-NOTE: The order is important. First `skyped` starts Skype. Then `skyped`
-connects to Skype, finally BitlBee can connect to `skyped`.
-
-=== Installing
-
-Either use your package manager to install the Skype plugin, using something
-like:
-
-----
-# apt-get install skyped bitlbee-plugin-skype
-----
-
-Or install http://sourceforge.net/projects/skype4py/[Skype4Py], and build
-BitlBee with `--skype=1`.
-
-=== Configuring
-
-See the manpage of `skyped`.
-
-== Setting up Skype in a VNC server (optional)
-
-Optionally, if you want to run Skype on a server, you might want to setup up
-a `VNC` server as well. I used `tightvnc` but probably other `VNC` servers will
-work, too.
-
-First run
-
-----
-$ vncpasswd ~/.vnc/passwd
-----
-
-and create a password. You will need it at least once.
-
-Now create `~/.vnc/xstartup` with the following contents:
-
-----
-#!/bin/sh
-
-blackbox
-----
-
-Adjust the permissions:
-
-----
-$ chmod +x ~/.vnc/xstartup
-----
-
-Then start the server:
-
-----
-$ vncserver
-----
-
-Then connect to it, start an `xterm`, set up Skype (username, password,
-enable X11 API and allow the `Skype4Py` client), quit from Skype, and
-start `skyped`. If you want to watch its traffic, enable debug messages
-and foreground mode:
-
-----
-$ skyped -n -d
-----
-
-== Features
-
-- Download nicks and away statuses from Skype
-
-- Noticing joins / parts while we're connected
-
-- Sending messages
-
-- Receiving messages
-
-- Receiving away status changes
-
-- `skyped` (the tcp daemon that is a gateway between Skype and tcp)
-
-- Error handling when `skyped` is not running and when it exits
-
-- Marking received messages as seen so that Skype won't say there are unread messages
-
-- Adding / removing contacts
-
-- Set away state when you do a `/away`.
-
-- When you `account off`, Skype will set status to `Offline`
-
-- When you `account on`, Skype will set status to `Online`
-
-- Detect when somebody wants to add you and ask for confirmation
-
-- Detect when somebody wants to transfer a file
-
-- Group chat support:
-
-  * Detect if we're invited
-
-  * Send / receive group chat messages
-
-  * Invite others (using `/invite <nick>`)
-
-  * Part from group chats
-
-  * Starting a group chat (using `/j #nick`)
-
-- Topic changes in group chats:
-
-  * Show the current topic (if any) on join
-
-  * Notice when someone changes the topic
-
-  * Support changing the topic using `/topic`
-
-- Viewing the profile using the `info` command.
-
-- Handling skype actions (when the `CHATMESSAGE` has `EMOTED` type)
-
-- Setting your display name using the `nick` command.
-
-- Running Skype on a machine different to BitlBee is possible, the
-  communication is encrypted.
-
-- Managing outgoing calls (with call duration at the end):
-
-  * `/ctcp nick call`
-  * `/ctcp nick hangup`
-
-- Managing outgoing SkypeOut or conference calls:
-
-  * `account skype set call +18005551234`
-  * `account skype set call nick1 nick2`
-  * `account skype set -del call`
-
-- Managing incoming calls via questions, just like when you add / remove
-  contacts.
-
-- Querying the current SkypeOut balance:
-
-  * `account skype set balance query`
-
-- For debug purposes, it's possible to send any command to `skyped`. To
-  achieve this, you need to:
-
-  * `account skype set skypeconsole true`
-
-  * then writing `skypeconsole: <command>` will work in the control
-    channel.
-
-  * `account skype set skypeconsole_receive true` will make the
-    `skypeconsole` account dump all the received raw traffic for you
-
-- If you want to automatically join bookmarked groupchats right after
-  you logged in, do:
-
-  * `account skype set auto_join true`
-
-- Edited messages are shown with the `EDIT:` prefix. If you don't like
-  this, you can set your own prefix using:
-
-  * `account skype set edit_prefix "updated message:"`
-
-- The `echo123` test account is hidden by default. If you want to see it:
-
-  * `account skype set test_join true`
-
-- Mood texts are not shown by default.
-
-  * If you want to see them: `account skype set show_moods true`
-  * If you want to change your mood text: `account skype set mood_text 'foo bar'`
-
-- Group support:
-
-  * To enable: `account skype set read_groups true`
-  * Skype groups are told to BitlBee
-  * The usual `/invite` in a group channel adds the buddy to the group in skype
-    as well (and if necessary, it creates a new group in Skype)
-
-== What needs to be done (aka. TODO)
-
-- Notice if foo invites bar. Currently you can see only that bar joined.
-
-- Public chats. See
-  link:https://developer.skype.com/jira/browse/SCL-381[this feature
-  request], this is because it is still not possible (under Linux) to
-  `join_chat` to a public chat..
-
-- Add yasrd (Yet Another Skype-Related Daemon) to allow using a public
-  server for users who are behind NAT.
-
-== I would like to have support for ...
-
-If something does not work and it's not in the TODO section, then please
-contact me! Please also try the bzr version before reporting a bug, your
-problem may be already fixed there.
-
-In fact, of course, I wrote this documentation after figured out how to do this
-setup, so maybe I left out some steps. If you needed 'any' additional tricks,
-then it would be nice to include them here.
-
-== Known bugs
-
-- File transfers are view-only from BitlBee. Quoting the
-  https://developer.skype.com/Docs/ApiDoc/FILETRANSFER_object[relevant
-  documentation]: 'File transfers cannot be initiated nor accepted via
-  API commands.' So it's not something I can add support for, sadly.
-
-== Screenshots
-
-You can reach some screenshots link:shot[here].
-
-== Additional resources
-
-The Skype API documentation is
-http://developer.skype.com/resources/public_api_ref.zip[here] if you're
-interested.
-
-== Testimonials
-
-----
-00:56 < scathe> I like your skype plugin :)
-----
-
-----
-It's really working great so far.
-
-Good Job and thank you!
-Sebastian
-----
-
-----
-Big respect for your work, i really appreciate it.
-
-Martin
-----
-
-----
-Thanks for bitlbee-skype. As a blind Linux user, I cannot use the
-skype GUI client because qt apps ar not accessible yet with the
-available screen readers. bitlbee-skype allows me to make use of skype
-without having to interact much with the GUI client, which helps me a
-lot.
-
-Lukas
-----
-
-----
-02:12 < newton> i must say, i love this little bee ;)
-02:15 < newton> tried it out today with the skype plugin, good work!
-----
-
-----
-18:10 < miCSu> it works fine
-----
-
-----
-13:56 < seo> i just want to thank you :)
-13:56 < seo> for bitlbee-skype
-13:57 < seo> it's working very well, so, again, thank you for your work, and for sharing it
-----
-
-----
-22:16 < ecraven> vmiklos: thanks a lot for the skype plugin for bitlbee!
-----
-
-----
-I'm blind and so I have to use a screen reader, in my case Gnome-Orca.
-But since Skype is written in QT, while Orca uses gtk+, I have no direct
-access to the Skype interface. That's why I desided to use Skyped and
-Erc.
-The text console is fully accessible.
-Thank you very much.
-
-Hermann
-----
-
-----
-i love that bitlbeeplugin. big thx for that.
-
-michael
-----
-
-----
-23:47 < krisfremen> thanks for creating this fabulous piece of software vmiklos :)
-----
-
-== Thanks
-
-to the following people:
-
-* people in link:AUTHORS[AUTHORS] for their contributions
-
-* Arkadiusz Wahlig, author of skype4py, for making suggestions to skyped
-
-* Gabor Adam Toth (tg), for noticing extra code is needed to handle multiline
-  messages
-
-* Cristobal Palmer (tarheelcoxn), for helping to testing the plugin in a
-  timezone different to mine
-
-* people on `#bitlbee` for feedback
-
-Back to my link:/projects[projects page].
-
-// vim: ft=asciidoc
Index: otocols/skype/asciidoc.conf
===================================================================
--- protocols/skype/asciidoc.conf	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,20 +1,0 @@
-ifdef::doctype-manpage[]
-ifdef::backend-docbook[]
-[header]
-template::[header-declarations]
-<refentry>
-	<refentryinfo>
-		<date>{bee_date}</date>
-	</refentryinfo>
-	<refmeta>
-		<refentrytitle>{mantitle}</refentrytitle>
-		<manvolnum>{manvolnum}</manvolnum>
-		<refmiscinfo class="source">BitlBee</refmiscinfo>
-		<refmiscinfo class="manual">BitlBee manual</refmiscinfo>
-	</refmeta>
-	<refnamediv>
-		<refname>{manname}</refname>
-		<refpurpose>{manpurpose}</refpurpose>
-	</refnamediv>
-endif::backend-docbook[]
-endif::doctype-manpage[]
Index: otocols/skype/client.sh
===================================================================
--- protocols/skype/client.sh	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,1 +1,0 @@
-openssl s_client -host localhost -port 2727 -verify 0
Index: otocols/skype/skype.c
===================================================================
--- protocols/skype/skype.c	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,1778 +1,0 @@
-/*
- *  skype.c - Skype plugin for BitlBee
- *
- *  Copyright (c) 2007-2013 by Miklos Vajna <vmiklos@vmiklos.hu>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- *  USA.
- */
-
-#define _XOPEN_SOURCE
-#include <poll.h>
-#include <stdio.h>
-#include <bitlbee.h>
-#include <ssl_client.h>
-
-#define SKYPE_DEFAULT_SERVER "localhost"
-#define SKYPE_DEFAULT_PORT "2727"
-#define IRC_LINE_SIZE 16384
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
-
-/*
- * Enumerations
- */
-
-enum {
-	SKYPE_CALL_RINGING = 1,
-	SKYPE_CALL_MISSED,
-	SKYPE_CALL_CANCELLED,
-	SKYPE_CALL_FINISHED,
-	SKYPE_CALL_REFUSED
-};
-
-enum {
-	SKYPE_FILETRANSFER_NEW = 1,
-	SKYPE_FILETRANSFER_TRANSFERRING,
-	SKYPE_FILETRANSFER_COMPLETED,
-	SKYPE_FILETRANSFER_FAILED
-};
-
-/*
- * Structures
- */
-
-struct skype_data {
-	struct im_connection *ic;
-	char *username;
-	/* The effective file descriptor. We store it here so any function can
-	 * write() to it. */
-	int fd;
-	/* File descriptor returned by bitlbee. we store it so we know when
-	 * we're connected and when we aren't. */
-	int bfd;
-	/* ssl_getfd() uses this to get the file desciptor. */
-	void *ssl;
-	/* When we receive a new message id, we query the properties, finally
-	 * the chatname. Store the properties here so that we can use
-	 * imcb_buddy_msg() when we got the chatname. */
-	char *handle;
-	/* List, because of multiline messages. */
-	GList *body;
-	char *type;
-	/* This is necessary because we send a notification when we get the
-	 * handle. So we store the state here and then we can send a
-	 * notification about the handle is in a given status. */
-	int call_status;
-	char *call_id;
-	char *call_duration;
-	/* If the call is outgoing or not */
-	int call_out;
-	/* Same for file transfers. */
-	int filetransfer_status;
-	/* Path of the file being transferred. */
-	char *filetransfer_path;
-	/* Using /j #nick we want to have a groupchat with two people. Usually
-	 * not (default). */
-	char *groupchat_with;
-	/* The user who invited us to the chat. */
-	char *adder;
-	/* If we are waiting for a confirmation about we changed the topic. */
-	int topic_wait;
-	/* These are used by the info command. */
-	char *info_fullname;
-	char *info_phonehome;
-	char *info_phoneoffice;
-	char *info_phonemobile;
-	char *info_nrbuddies;
-	char *info_tz;
-	char *info_seen;
-	char *info_birthday;
-	char *info_sex;
-	char *info_language;
-	char *info_country;
-	char *info_province;
-	char *info_city;
-	char *info_homepage;
-	char *info_about;
-	/* When a call fails, we get the reason and later we get the failure
-	 * event, so store the failure code here till then */
-	int failurereason;
-	/* If this is just an update of an already received message. */
-	int is_edit;
-	/* List of struct skype_group* */
-	GList *groups;
-	/* Pending user which has to be added to the next group which is
-	 * created. */
-	char *pending_user;
-	/* If the info command was used, to determine what to do with FULLNAME result. */
-	int is_info;
-};
-
-struct skype_away_state {
-	char *code;
-	char *full_name;
-};
-
-struct skype_buddy_ask_data {
-	struct im_connection *ic;
-	/* This is also used for call IDs for simplicity */
-	char *handle;
-};
-
-struct skype_group {
-	int id;
-	char *name;
-	GList *users;
-};
-
-/*
- * Tables
- */
-
-const struct skype_away_state skype_away_state_list[] = {
-	{ "AWAY", "Away" },
-	{ "NA", "Not available" },
-	{ "DND", "Do Not Disturb" },
-	{ "INVISIBLE", "Invisible" },
-	{ "OFFLINE", "Offline" },
-	{ "SKYPEME", "Skype Me" },
-	{ "ONLINE", "Online" },
-	{ NULL, NULL }
-};
-
-/*
- * Functions
- */
-
-int skype_write(struct im_connection *ic, char *buf, int len)
-{
-	struct skype_data *sd = ic->proto_data;
-	struct pollfd pfd[1];
-
-	if (!sd->ssl) {
-		return FALSE;
-	}
-
-	pfd[0].fd = sd->fd;
-	pfd[0].events = POLLOUT;
-
-	/* This poll is necessary or we'll get a SIGPIPE when we write() to
-	 * sd->fd. */
-	poll(pfd, 1, 1000);
-	if (pfd[0].revents & POLLHUP) {
-		imc_logout(ic, TRUE);
-		return FALSE;
-	}
-	ssl_write(sd->ssl, buf, len);
-
-	return TRUE;
-}
-
-int skype_printf(struct im_connection *ic, char *fmt, ...)
-{
-	va_list args;
-	char str[IRC_LINE_SIZE];
-
-	va_start(args, fmt);
-	g_vsnprintf(str, IRC_LINE_SIZE, fmt, args);
-	va_end(args);
-
-	return skype_write(ic, str, strlen(str));
-}
-
-static void skype_buddy_ask_yes(void *data)
-{
-	struct skype_buddy_ask_data *bla = data;
-
-	skype_printf(bla->ic, "SET USER %s ISAUTHORIZED TRUE\n",
-	             bla->handle);
-	g_free(bla->handle);
-	g_free(bla);
-}
-
-static void skype_buddy_ask_no(void *data)
-{
-	struct skype_buddy_ask_data *bla = data;
-
-	skype_printf(bla->ic, "SET USER %s ISAUTHORIZED FALSE\n",
-	             bla->handle);
-	g_free(bla->handle);
-	g_free(bla);
-}
-
-void skype_buddy_ask(struct im_connection *ic, char *handle, char *message)
-{
-	struct skype_buddy_ask_data *bla = g_new0(struct skype_buddy_ask_data,
-	                                          1);
-	char *buf;
-
-	bla->ic = ic;
-	bla->handle = g_strdup(handle);
-
-	buf = g_strdup_printf("The user %s wants to add you to his/her buddy list, saying: '%s'.", handle, message);
-	imcb_ask(ic, buf, bla, skype_buddy_ask_yes, skype_buddy_ask_no);
-	g_free(buf);
-}
-
-static void skype_call_ask_yes(void *data)
-{
-	struct skype_buddy_ask_data *bla = data;
-
-	skype_printf(bla->ic, "SET CALL %s STATUS INPROGRESS\n",
-	             bla->handle);
-	g_free(bla->handle);
-	g_free(bla);
-}
-
-static void skype_call_ask_no(void *data)
-{
-	struct skype_buddy_ask_data *bla = data;
-
-	skype_printf(bla->ic, "SET CALL %s STATUS FINISHED\n",
-	             bla->handle);
-	g_free(bla->handle);
-	g_free(bla);
-}
-
-void skype_call_ask(struct im_connection *ic, char *call_id, char *message)
-{
-	struct skype_buddy_ask_data *bla = g_new0(struct skype_buddy_ask_data,
-	                                          1);
-
-	bla->ic = ic;
-	bla->handle = g_strdup(call_id);
-
-	imcb_ask(ic, message, bla, skype_call_ask_yes, skype_call_ask_no);
-}
-
-static char *skype_call_strerror(int err)
-{
-	switch (err) {
-	case 1:
-		return "Miscellaneous error";
-	case 2:
-		return "User or phone number does not exist.";
-	case 3:
-		return "User is offline";
-	case 4:
-		return "No proxy found";
-	case 5:
-		return "Session terminated.";
-	case 6:
-		return "No common codec found.";
-	case 7:
-		return "Sound I/O error.";
-	case 8:
-		return "Problem with remote sound device.";
-	case 9:
-		return "Call blocked by recipient.";
-	case 10:
-		return "Recipient not a friend.";
-	case 11:
-		return "Current user not authorized by recipient.";
-	case 12:
-		return "Sound recording error.";
-	default:
-		return "Unknown error";
-	}
-}
-
-static char *skype_group_by_username(struct im_connection *ic, char *username)
-{
-	struct skype_data *sd = ic->proto_data;
-	int i, j;
-
-	/* NEEDSWORK: we just search for the first group of the user, multiple
-	 * groups / user is not yet supported by BitlBee. */
-
-	for (i = 0; i < g_list_length(sd->groups); i++) {
-		struct skype_group *sg = g_list_nth_data(sd->groups, i);
-		for (j = 0; j < g_list_length(sg->users); j++) {
-			if (!strcmp(g_list_nth_data(sg->users, j), username)) {
-				return sg->name;
-			}
-		}
-	}
-	return NULL;
-}
-
-static struct skype_group *skype_group_by_name(struct im_connection *ic, char *name)
-{
-	struct skype_data *sd = ic->proto_data;
-	int i;
-
-	for (i = 0; i < g_list_length(sd->groups); i++) {
-		struct skype_group *sg = g_list_nth_data(sd->groups, i);
-		if (!strcmp(sg->name, name)) {
-			return sg;
-		}
-	}
-	return NULL;
-}
-
-static struct groupchat *skype_chat_get_or_create(struct im_connection *ic, char *id)
-{
-	struct skype_data *sd = ic->proto_data;
-	struct groupchat *gc = bee_chat_by_title(ic->bee, ic, id);
-
-	if (!gc) {
-		gc = imcb_chat_new(ic, id);
-		imcb_chat_name_hint(gc, id);
-		imcb_chat_add_buddy(gc, sd->username);
-
-		skype_printf(ic, "GET CHAT %s ADDER\n", id);
-		skype_printf(ic, "GET CHAT %s TOPIC\n", id);
-		skype_printf(ic, "GET CHAT %s ACTIVEMEMBERS\n", id);
-	}
-
-	return gc;
-}
-
-static void skype_parse_users(struct im_connection *ic, char *line)
-{
-	char **i, **nicks;
-
-	nicks = g_strsplit(line + 6, ", ", 0);
-	for (i = nicks; *i; i++) {
-		skype_printf(ic, "GET USER %s ONLINESTATUS\n", *i);
-		skype_printf(ic, "GET USER %s FULLNAME\n", *i);
-	}
-	g_strfreev(nicks);
-}
-
-static void skype_parse_user(struct im_connection *ic, char *line)
-{
-	int flags = 0;
-	char *ptr;
-	struct skype_data *sd = ic->proto_data;
-	char *user = strchr(line, ' ');
-	char *status = strrchr(line, ' ');
-
-	status++;
-	ptr = strchr(++user, ' ');
-	if (!ptr) {
-		return;
-	}
-	*ptr = '\0';
-	ptr++;
-	if (!strncmp(ptr, "ONLINESTATUS ", 13)) {
-		if (!strlen(user) || !strcmp(user, sd->username)) {
-			return;
-		}
-		if (!set_getbool(&ic->acc->set, "test_join")
-		    && !strcmp(user, "echo123")) {
-			return;
-		}
-		ptr = g_strdup_printf("%s@skype.com", user);
-		imcb_add_buddy(ic, ptr, skype_group_by_username(ic, user));
-		if (strcmp(status, "OFFLINE") && (strcmp(status, "SKYPEOUT") ||
-		                                  !set_getbool(&ic->acc->set, "skypeout_offline"))) {
-			flags |= OPT_LOGGED_IN;
-		}
-		if (strcmp(status, "ONLINE") && strcmp(status, "SKYPEME")) {
-			flags |= OPT_AWAY;
-		}
-		imcb_buddy_status(ic, ptr, flags, NULL, NULL);
-		g_free(ptr);
-	} else if (!strncmp(ptr, "RECEIVEDAUTHREQUEST ", 20)) {
-		char *message = ptr + 20;
-		if (strlen(message)) {
-			skype_buddy_ask(ic, user, message);
-		}
-	} else if (!strncmp(ptr, "BUDDYSTATUS ", 12)) {
-		char *st = ptr + 12;
-		if (!strcmp(st, "3")) {
-			char *buf = g_strdup_printf("%s@skype.com", user);
-			imcb_add_buddy(ic, buf, skype_group_by_username(ic, user));
-			g_free(buf);
-		}
-	} else if (!strncmp(ptr, "MOOD_TEXT ", 10)) {
-		char *buf = g_strdup_printf("%s@skype.com", user);
-		bee_user_t *bu = bee_user_by_handle(ic->bee, ic, buf);
-		g_free(buf);
-		buf = ptr + 10;
-		if (bu) {
-			imcb_buddy_status(ic, bu->handle, bu->flags, NULL,
-			                  *buf ? buf : NULL);
-		}
-		if (set_getbool(&ic->acc->set, "show_moods")) {
-			imcb_log(ic, "User `%s' changed mood text to `%s'", user, buf);
-		}
-	} else if (!strncmp(ptr, "FULLNAME ", 9)) {
-		char *name = ptr + 9;
-		if (sd->is_info) {
-			sd->is_info = FALSE;
-			sd->info_fullname = g_strdup(name);
-		} else {
-			char *buf = g_strdup_printf("%s@skype.com", user);
-			imcb_rename_buddy(ic, buf, name);
-			g_free(buf);
-		}
-	} else if (!strncmp(ptr, "PHONE_HOME ", 11)) {
-		sd->info_phonehome = g_strdup(ptr + 11);
-	} else if (!strncmp(ptr, "PHONE_OFFICE ", 13)) {
-		sd->info_phoneoffice = g_strdup(ptr + 13);
-	} else if (!strncmp(ptr, "PHONE_MOBILE ", 13)) {
-		sd->info_phonemobile = g_strdup(ptr + 13);
-	} else if (!strncmp(ptr, "NROF_AUTHED_BUDDIES ", 20)) {
-		sd->info_nrbuddies = g_strdup(ptr + 20);
-	} else if (!strncmp(ptr, "TIMEZONE ", 9)) {
-		sd->info_tz = g_strdup(ptr + 9);
-	} else if (!strncmp(ptr, "LASTONLINETIMESTAMP ", 20)) {
-		sd->info_seen = g_strdup(ptr + 20);
-	} else if (!strncmp(ptr, "SEX ", 4)) {
-		sd->info_sex = g_strdup(ptr + 4);
-	} else if (!strncmp(ptr, "LANGUAGE ", 9)) {
-		sd->info_language = g_strdup(ptr + 9);
-	} else if (!strncmp(ptr, "COUNTRY ", 8)) {
-		sd->info_country = g_strdup(ptr + 8);
-	} else if (!strncmp(ptr, "PROVINCE ", 9)) {
-		sd->info_province = g_strdup(ptr + 9);
-	} else if (!strncmp(ptr, "CITY ", 5)) {
-		sd->info_city = g_strdup(ptr + 5);
-	} else if (!strncmp(ptr, "HOMEPAGE ", 9)) {
-		sd->info_homepage = g_strdup(ptr + 9);
-	} else if (!strncmp(ptr, "ABOUT ", 6)) {
-		/* Support multiple about lines. */
-		if (!sd->info_about) {
-			sd->info_about = g_strdup(ptr + 6);
-		} else {
-			GString *st = g_string_new(sd->info_about);
-			g_string_append_printf(st, "\n%s", ptr + 6);
-			g_free(sd->info_about);
-			sd->info_about = g_strdup(st->str);
-			g_string_free(st, TRUE);
-		}
-	} else if (!strncmp(ptr, "BIRTHDAY ", 9)) {
-		sd->info_birthday = g_strdup(ptr + 9);
-
-		GString *st = g_string_new("Contact Information\n");
-		g_string_append_printf(st, "Skype Name: %s\n", user);
-		if (sd->info_fullname) {
-			if (strlen(sd->info_fullname)) {
-				g_string_append_printf(st, "Full Name: %s\n",
-				                       sd->info_fullname);
-			}
-			g_free(sd->info_fullname);
-			sd->info_fullname = NULL;
-		}
-		if (sd->info_phonehome) {
-			if (strlen(sd->info_phonehome)) {
-				g_string_append_printf(st, "Home Phone: %s\n",
-				                       sd->info_phonehome);
-			}
-			g_free(sd->info_phonehome);
-			sd->info_phonehome = NULL;
-		}
-		if (sd->info_phoneoffice) {
-			if (strlen(sd->info_phoneoffice)) {
-				g_string_append_printf(st, "Office Phone: %s\n",
-				                       sd->info_phoneoffice);
-			}
-			g_free(sd->info_phoneoffice);
-			sd->info_phoneoffice = NULL;
-		}
-		if (sd->info_phonemobile) {
-			if (strlen(sd->info_phonemobile)) {
-				g_string_append_printf(st, "Mobile Phone: %s\n",
-				                       sd->info_phonemobile);
-			}
-			g_free(sd->info_phonemobile);
-			sd->info_phonemobile = NULL;
-		}
-		g_string_append_printf(st, "Personal Information\n");
-		if (sd->info_nrbuddies) {
-			if (strlen(sd->info_nrbuddies)) {
-				g_string_append_printf(st,
-				                       "Contacts: %s\n", sd->info_nrbuddies);
-			}
-			g_free(sd->info_nrbuddies);
-			sd->info_nrbuddies = NULL;
-		}
-		if (sd->info_tz) {
-			if (strlen(sd->info_tz)) {
-				char ib[256];
-				time_t t = time(NULL);
-				t += atoi(sd->info_tz) - (60 * 60 * 24);
-				struct tm *gt = gmtime(&t);
-				strftime(ib, 256, "%H:%M:%S", gt);
-				g_string_append_printf(st,
-				                       "Local Time: %s\n", ib);
-			}
-			g_free(sd->info_tz);
-			sd->info_tz = NULL;
-		}
-		if (sd->info_seen) {
-			if (strlen(sd->info_seen)) {
-				char ib[256];
-				time_t it = atoi(sd->info_seen);
-				struct tm *tm = localtime(&it);
-				strftime(ib, 256, ("%Y. %m. %d. %H:%M"), tm);
-				g_string_append_printf(st,
-				                       "Last Seen: %s\n", ib);
-			}
-			g_free(sd->info_seen);
-			sd->info_seen = NULL;
-		}
-		if (sd->info_birthday) {
-			if (strlen(sd->info_birthday) &&
-			    strcmp(sd->info_birthday, "0")) {
-				char ib[256];
-				struct tm tm;
-				strptime(sd->info_birthday, "%Y%m%d", &tm);
-				strftime(ib, 256, "%B %d, %Y", &tm);
-				g_string_append_printf(st,
-				                       "Birthday: %s\n", ib);
-
-				strftime(ib, 256, "%Y", &tm);
-				int year = atoi(ib);
-				time_t t = time(NULL);
-				struct tm *lt = localtime(&t);
-				g_string_append_printf(st,
-				                       "Age: %d\n", lt->tm_year + 1900 - year);
-			}
-			g_free(sd->info_birthday);
-			sd->info_birthday = NULL;
-		}
-		if (sd->info_sex) {
-			if (strlen(sd->info_sex)) {
-				char *iptr = sd->info_sex;
-				while (*iptr++) {
-					*iptr = g_ascii_tolower(*iptr);
-				}
-				g_string_append_printf(st,
-				                       "Gender: %s\n", sd->info_sex);
-			}
-			g_free(sd->info_sex);
-			sd->info_sex = NULL;
-		}
-		if (sd->info_language) {
-			if (strlen(sd->info_language)) {
-				char *iptr = strchr(sd->info_language, ' ');
-				if (iptr) {
-					iptr++;
-				} else {
-					iptr = sd->info_language;
-				}
-				g_string_append_printf(st,
-				                       "Language: %s\n", iptr);
-			}
-			g_free(sd->info_language);
-			sd->info_language = NULL;
-		}
-		if (sd->info_country) {
-			if (strlen(sd->info_country)) {
-				char *iptr = strchr(sd->info_country, ' ');
-				if (iptr) {
-					iptr++;
-				} else {
-					iptr = sd->info_country;
-				}
-				g_string_append_printf(st,
-				                       "Country: %s\n", iptr);
-			}
-			g_free(sd->info_country);
-			sd->info_country = NULL;
-		}
-		if (sd->info_province) {
-			if (strlen(sd->info_province)) {
-				g_string_append_printf(st,
-				                       "Region: %s\n", sd->info_province);
-			}
-			g_free(sd->info_province);
-			sd->info_province = NULL;
-		}
-		if (sd->info_city) {
-			if (strlen(sd->info_city)) {
-				g_string_append_printf(st,
-				                       "City: %s\n", sd->info_city);
-			}
-			g_free(sd->info_city);
-			sd->info_city = NULL;
-		}
-		if (sd->info_homepage) {
-			if (strlen(sd->info_homepage)) {
-				g_string_append_printf(st,
-				                       "Homepage: %s\n", sd->info_homepage);
-			}
-			g_free(sd->info_homepage);
-			sd->info_homepage = NULL;
-		}
-		if (sd->info_about) {
-			if (strlen(sd->info_about)) {
-				g_string_append_printf(st, "%s\n",
-				                       sd->info_about);
-			}
-			g_free(sd->info_about);
-			sd->info_about = NULL;
-		}
-		imcb_log(ic, "%s", st->str);
-		g_string_free(st, TRUE);
-	}
-}
-
-static void skype_parse_chatmessage_said_emoted(struct im_connection *ic, struct groupchat *gc, char *body)
-{
-	struct skype_data *sd = ic->proto_data;
-	char buf[IRC_LINE_SIZE];
-
-	if (!strcmp(sd->type, "SAID")) {
-		if (!sd->is_edit) {
-			g_snprintf(buf, IRC_LINE_SIZE, "%s", body);
-		} else {
-			g_snprintf(buf, IRC_LINE_SIZE, "%s %s", set_getstr(&ic->acc->set, "edit_prefix"), body);
-			sd->is_edit = 0;
-		}
-	} else {
-		g_snprintf(buf, IRC_LINE_SIZE, "/me %s", body);
-	}
-	if (!gc) {
-		/* Private message */
-		imcb_buddy_msg(ic, sd->handle, buf, 0, 0);
-	} else {
-		/* Groupchat message */
-		imcb_chat_msg(gc, sd->handle, buf, 0, 0);
-	}
-}
-
-static void skype_parse_chatmessage(struct im_connection *ic, char *line)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *id = strchr(line, ' ');
-
-	if (!++id) {
-		return;
-	}
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-	if (!strcmp(info, "STATUS RECEIVED") || !strncmp(info, "EDITED_TIMESTAMP", 16)) {
-		/* New message ID:
-		 * (1) Request its from field
-		 * (2) Request its body
-		 * (3) Request its type
-		 * (4) Query chatname
-		 */
-		skype_printf(ic, "GET CHATMESSAGE %s FROM_HANDLE\n", id);
-		if (!strcmp(info, "STATUS RECEIVED")) {
-			skype_printf(ic, "GET CHATMESSAGE %s BODY\n", id);
-		} else {
-			sd->is_edit = 1;
-		}
-		skype_printf(ic, "GET CHATMESSAGE %s TYPE\n", id);
-		skype_printf(ic, "GET CHATMESSAGE %s CHATNAME\n", id);
-	} else if (!strncmp(info, "FROM_HANDLE ", 12)) {
-		info += 12;
-		/* New from field value. Store
-		 * it, then we can later use it
-		 * when we got the message's
-		 * body. */
-		g_free(sd->handle);
-		sd->handle = g_strdup_printf("%s@skype.com", info);
-	} else if (!strncmp(info, "EDITED_BY ", 10)) {
-		info += 10;
-		/* This is the same as
-		 * FROM_HANDLE, except that we
-		 * never request these lines
-		 * from Skype, we just get
-		 * them. */
-		g_free(sd->handle);
-		sd->handle = g_strdup_printf("%s@skype.com", info);
-	} else if (!strncmp(info, "BODY ", 5)) {
-		info += 5;
-		sd->body = g_list_append(sd->body, g_strdup(info));
-	} else if (!strncmp(info, "TYPE ", 5)) {
-		info += 5;
-		g_free(sd->type);
-		sd->type = g_strdup(info);
-	} else if (!strncmp(info, "CHATNAME ", 9)) {
-		info += 9;
-		if (sd->handle && sd->body && sd->type) {
-			struct groupchat *gc = skype_chat_get_or_create(ic, info);
-			int i;
-			for (i = 0; i < g_list_length(sd->body); i++) {
-				char *body = g_list_nth_data(sd->body, i);
-				if (!strcmp(sd->type, "SAID") ||
-				    !strcmp(sd->type, "EMOTED")) {
-					skype_parse_chatmessage_said_emoted(ic, gc, body);
-				} else if (!strcmp(sd->type, "SETTOPIC") && gc) {
-					imcb_chat_topic(gc,
-					                sd->handle, body, 0);
-				} else if (!strcmp(sd->type, "LEFT") && gc) {
-					imcb_chat_remove_buddy(gc,
-					                       sd->handle, NULL);
-				}
-			}
-			g_list_free(sd->body);
-			sd->body = NULL;
-		}
-	}
-}
-
-static void skype_parse_call(struct im_connection *ic, char *line)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *id = strchr(line, ' ');
-	char buf[IRC_LINE_SIZE];
-
-	if (!++id) {
-		return;
-	}
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-	if (!strncmp(info, "FAILUREREASON ", 14)) {
-		sd->failurereason = atoi(strchr(info, ' '));
-	} else if (!strcmp(info, "STATUS RINGING")) {
-		if (sd->call_id) {
-			g_free(sd->call_id);
-		}
-		sd->call_id = g_strdup(id);
-		skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
-		sd->call_status = SKYPE_CALL_RINGING;
-	} else if (!strcmp(info, "STATUS MISSED")) {
-		skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
-		sd->call_status = SKYPE_CALL_MISSED;
-	} else if (!strcmp(info, "STATUS CANCELLED")) {
-		skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
-		sd->call_status = SKYPE_CALL_CANCELLED;
-	} else if (!strcmp(info, "STATUS FINISHED")) {
-		skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
-		sd->call_status = SKYPE_CALL_FINISHED;
-	} else if (!strcmp(info, "STATUS REFUSED")) {
-		skype_printf(ic, "GET CALL %s PARTNER_HANDLE\n", id);
-		sd->call_status = SKYPE_CALL_REFUSED;
-	} else if (!strcmp(info, "STATUS UNPLACED")) {
-		if (sd->call_id) {
-			g_free(sd->call_id);
-		}
-		/* Save the ID for later usage (Cancel/Finish). */
-		sd->call_id = g_strdup(id);
-		sd->call_out = TRUE;
-	} else if (!strcmp(info, "STATUS FAILED")) {
-		imcb_error(ic, "Call failed: %s",
-		           skype_call_strerror(sd->failurereason));
-		sd->call_id = NULL;
-	} else if (!strncmp(info, "DURATION ", 9)) {
-		if (sd->call_duration) {
-			g_free(sd->call_duration);
-		}
-		sd->call_duration = g_strdup(info + 9);
-	} else if (!strncmp(info, "PARTNER_HANDLE ", 15)) {
-		info += 15;
-		if (!sd->call_status) {
-			return;
-		}
-		switch (sd->call_status) {
-		case SKYPE_CALL_RINGING:
-			if (sd->call_out) {
-				imcb_log(ic, "You are currently ringing the user %s.", info);
-			} else {
-				g_snprintf(buf, IRC_LINE_SIZE,
-				           "The user %s is currently ringing you.",
-				           info);
-				skype_call_ask(ic, sd->call_id, buf);
-			}
-			break;
-		case SKYPE_CALL_MISSED:
-			imcb_log(ic, "You have missed a call from user %s.",
-			         info);
-			break;
-		case SKYPE_CALL_CANCELLED:
-			imcb_log(ic, "You cancelled the call to the user %s.",
-			         info);
-			sd->call_status = 0;
-			sd->call_out = FALSE;
-			break;
-		case SKYPE_CALL_REFUSED:
-			if (sd->call_out) {
-				imcb_log(ic, "The user %s refused the call.",
-				         info);
-			} else {
-				imcb_log(ic,
-				         "You refused the call from user %s.",
-				         info);
-			}
-			sd->call_out = FALSE;
-			break;
-		case SKYPE_CALL_FINISHED:
-			if (sd->call_duration) {
-				imcb_log(ic,
-				         "You finished the call to the user %s "
-				         "(duration: %s seconds).",
-				         info, sd->call_duration);
-			} else {
-				imcb_log(ic,
-				         "You finished the call to the user %s.",
-				         info);
-			}
-			sd->call_out = FALSE;
-			break;
-		default:
-			/* Don't be noisy, ignore other statuses for now. */
-			break;
-		}
-		sd->call_status = 0;
-	}
-}
-
-static void skype_parse_filetransfer(struct im_connection *ic, char *line)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *id = strchr(line, ' ');
-
-	if (!++id) {
-		return;
-	}
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-	if (!strcmp(info, "STATUS NEW")) {
-		skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n",
-		             id);
-		sd->filetransfer_status = SKYPE_FILETRANSFER_NEW;
-	} else if (!strcmp(info, "STATUS FAILED")) {
-		skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n",
-		             id);
-		sd->filetransfer_status = SKYPE_FILETRANSFER_FAILED;
-	} else if (!strcmp(info, "STATUS COMPLETED")) {
-		skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n", id);
-		sd->filetransfer_status = SKYPE_FILETRANSFER_COMPLETED;
-	} else if (!strcmp(info, "STATUS TRANSFERRING")) {
-		skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n", id);
-		sd->filetransfer_status = SKYPE_FILETRANSFER_TRANSFERRING;
-	} else if (!strncmp(info, "FILEPATH ", 9)) {
-		info += 9;
-		sd->filetransfer_path = g_strdup(info);
-	} else if (!strncmp(info, "PARTNER_HANDLE ", 15)) {
-		info += 15;
-		if (!sd->filetransfer_status) {
-			return;
-		}
-		switch (sd->filetransfer_status) {
-		case SKYPE_FILETRANSFER_NEW:
-			imcb_log(ic, "The user %s offered a new file for you.",
-			         info);
-			break;
-		case SKYPE_FILETRANSFER_FAILED:
-			imcb_log(ic, "Failed to transfer file from user %s.",
-			         info);
-			break;
-		case SKYPE_FILETRANSFER_COMPLETED:
-			imcb_log(ic, "File transfer from user %s completed.", info);
-			break;
-		case SKYPE_FILETRANSFER_TRANSFERRING:
-			if (sd->filetransfer_path) {
-				imcb_log(ic, "File transfer from user %s started, saving to %s.", info,
-				         sd->filetransfer_path);
-				g_free(sd->filetransfer_path);
-				sd->filetransfer_path = NULL;
-			}
-			break;
-		}
-		sd->filetransfer_status = 0;
-	}
-}
-
-static struct skype_group *skype_group_by_id(struct im_connection *ic, int id)
-{
-	struct skype_data *sd = ic->proto_data;
-	int i;
-
-	for (i = 0; i < g_list_length(sd->groups); i++) {
-		struct skype_group *sg = (struct skype_group *) g_list_nth_data(sd->groups, i);
-
-		if (sg->id == id) {
-			return sg;
-		}
-	}
-	return NULL;
-}
-
-static void skype_group_free(struct skype_group *sg, gboolean usersonly)
-{
-	int i;
-
-	for (i = 0; i < g_list_length(sg->users); i++) {
-		char *user = g_list_nth_data(sg->users, i);
-		g_free(user);
-	}
-	sg->users = NULL;
-	if (usersonly) {
-		return;
-	}
-	g_free(sg->name);
-	g_free(sg);
-}
-
-/* Update the group of each user in this group */
-static void skype_group_users(struct im_connection *ic, struct skype_group *sg)
-{
-	int i;
-
-	for (i = 0; i < g_list_length(sg->users); i++) {
-		char *user = g_list_nth_data(sg->users, i);
-		char *buf = g_strdup_printf("%s@skype.com", user);
-		imcb_add_buddy(ic, buf, sg->name);
-		g_free(buf);
-	}
-}
-
-static void skype_parse_group(struct im_connection *ic, char *line)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *id = strchr(line, ' ');
-
-	if (!++id) {
-		return;
-	}
-
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-
-	if (!strncmp(info, "DISPLAYNAME ", 12)) {
-		info += 12;
-
-		/* Name given for a group ID: try to update it or insert a new
-		 * one if not found */
-		struct skype_group *sg = skype_group_by_id(ic, atoi(id));
-		if (sg) {
-			g_free(sg->name);
-			sg->name = g_strdup(info);
-		} else {
-			sg = g_new0(struct skype_group, 1);
-			sg->id = atoi(id);
-			sg->name = g_strdup(info);
-			sd->groups = g_list_append(sd->groups, sg);
-		}
-	} else if (!strncmp(info, "USERS ", 6)) {
-		struct skype_group *sg = skype_group_by_id(ic, atoi(id));
-
-		if (sg) {
-			char **i;
-			char **users = g_strsplit(info + 6, ", ", 0);
-
-			skype_group_free(sg, TRUE);
-			i = users;
-			while (*i) {
-				sg->users = g_list_append(sg->users, g_strdup(*i));
-				i++;
-			}
-			g_strfreev(users);
-			skype_group_users(ic, sg);
-		} else {
-			log_message(LOGLVL_ERROR,
-			            "No skype group with id %s. That's probably a bug.", id);
-		}
-	} else if (!strncmp(info, "NROFUSERS ", 10)) {
-		if (!sd->pending_user) {
-			/* Number of users changed in this group, query its type to see
-			 * if it's a custom one we should care about. */
-			skype_printf(ic, "GET GROUP %s TYPE\n", id);
-			return;
-		}
-
-		/* This is a newly created group, we have a single user
-		 * to add. */
-		struct skype_group *sg = skype_group_by_id(ic, atoi(id));
-
-		if (sg) {
-			skype_printf(ic, "ALTER GROUP %d ADDUSER %s\n", sg->id, sd->pending_user);
-			g_free(sd->pending_user);
-			sd->pending_user = NULL;
-		} else {
-			log_message(LOGLVL_ERROR,
-			            "No skype group with id %s. That's probably a bug.", id);
-		}
-	} else if (!strcmp(info, "TYPE CUSTOM_GROUP")) {
-		/* This one is interesting, query its users. */
-		skype_printf(ic, "GET GROUP %s USERS\n", id);
-	}
-}
-
-static void skype_parse_chat(struct im_connection *ic, char *line)
-{
-	struct skype_data *sd = ic->proto_data;
-	char buf[IRC_LINE_SIZE];
-	char *id = strchr(line, ' ');
-
-	if (!++id) {
-		return;
-	}
-	struct groupchat *gc;
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-	/* Remove fake chat if we created one in skype_chat_with() */
-	gc = bee_chat_by_title(ic->bee, ic, "");
-	if (gc) {
-		imcb_chat_free(gc);
-	}
-	if (!strcmp(info, "STATUS MULTI_SUBSCRIBED")) {
-		skype_chat_get_or_create(ic, id);
-	} else if (!strcmp(info, "STATUS DIALOG") && sd->groupchat_with) {
-		gc = skype_chat_get_or_create(ic, id);
-		/* According to the docs this
-		 * is necessary. However it
-		 * does not seem the situation
-		 * and it would open an extra
-		 * window on our client, so
-		 * just leave it out. */
-		/*skype_printf(ic, "OPEN CHAT %s\n", id);*/
-		g_snprintf(buf, IRC_LINE_SIZE, "%s@skype.com",
-		           sd->groupchat_with);
-		imcb_chat_add_buddy(gc, buf);
-		g_free(sd->groupchat_with);
-		sd->groupchat_with = NULL;
-	} else if (!strcmp(info, "STATUS UNSUBSCRIBED")) {
-		gc = bee_chat_by_title(ic->bee, ic, id);
-		if (gc) {
-			gc->data = (void *) FALSE;
-		}
-	} else if (!strncmp(info, "ADDER ", 6)) {
-		info += 6;
-		g_free(sd->adder);
-		sd->adder = g_strdup_printf("%s@skype.com", info);
-	} else if (!strncmp(info, "TOPIC ", 6)) {
-		info += 6;
-		gc = bee_chat_by_title(ic->bee, ic, id);
-		if (gc && (sd->adder || sd->topic_wait)) {
-			if (sd->topic_wait) {
-				sd->adder = g_strdup(sd->username);
-				sd->topic_wait = 0;
-			}
-			imcb_chat_topic(gc, sd->adder, info, 0);
-			g_free(sd->adder);
-			sd->adder = NULL;
-		}
-	} else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14)) {
-		if (!strncmp(info, "MEMBERS ", 8)) {
-			info += 8;
-		} else {
-			info += 14;
-		}
-		gc = bee_chat_by_title(ic->bee, ic, id);
-		/* Hack! We set ->data to TRUE
-		 * while we're on the channel
-		 * so that we won't rejoin
-		 * after a /part. */
-		if (!gc || gc->data) {
-			return;
-		}
-		char **members = g_strsplit(info, " ", 0);
-		int i;
-		for (i = 0; members[i]; i++) {
-			if (!strcmp(members[i], sd->username)) {
-				continue;
-			}
-			g_snprintf(buf, IRC_LINE_SIZE, "%s@skype.com",
-			           members[i]);
-			if (!g_list_find_custom(gc->in_room, buf,
-			                        (GCompareFunc) strcmp)) {
-				imcb_chat_add_buddy(gc, buf);
-			}
-		}
-		imcb_chat_add_buddy(gc, sd->username);
-		g_strfreev(members);
-	}
-}
-
-static void skype_parse_password(struct im_connection *ic, char *line)
-{
-	if (!strncmp(line + 9, "OK", 2)) {
-		imcb_connected(ic);
-	} else {
-		imcb_error(ic, "Authentication Failed");
-		imc_logout(ic, TRUE);
-	}
-}
-
-static void skype_parse_profile(struct im_connection *ic, char *line)
-{
-	imcb_log(ic, "SkypeOut balance value is '%s'.", line + 21);
-}
-
-static void skype_parse_ping(struct im_connection *ic, char *line)
-{
-	/* Unused parameter */
-	line = line;
-	skype_printf(ic, "PONG\n");
-}
-
-static void skype_parse_chats(struct im_connection *ic, char *line)
-{
-	char **i;
-	char **chats = g_strsplit(line + 6, ", ", 0);
-
-	i = chats;
-	while (*i) {
-		skype_printf(ic, "GET CHAT %s STATUS\n", *i);
-		skype_printf(ic, "GET CHAT %s ACTIVEMEMBERS\n", *i);
-		i++;
-	}
-	g_strfreev(chats);
-}
-
-static void skype_parse_groups(struct im_connection *ic, char *line)
-{
-	if (!set_getbool(&ic->acc->set, "read_groups")) {
-		return;
-	}
-
-	char **i;
-	char **groups = g_strsplit(line + 7, ", ", 0);
-
-	i = groups;
-	while (*i) {
-		skype_printf(ic, "GET GROUP %s DISPLAYNAME\n", *i);
-		skype_printf(ic, "GET GROUP %s USERS\n", *i);
-		i++;
-	}
-	g_strfreev(groups);
-}
-
-static void skype_parse_alter_group(struct im_connection *ic, char *line)
-{
-	char *id = line + strlen("ALTER GROUP");
-
-	if (!++id) {
-		return;
-	}
-
-	char *info = strchr(id, ' ');
-
-	if (!info) {
-		return;
-	}
-	*info = '\0';
-	info++;
-
-	if (!strncmp(info, "ADDUSER ", 8)) {
-		struct skype_group *sg = skype_group_by_id(ic, atoi(id));
-
-		info += 8;
-		if (sg) {
-			char *buf = g_strdup_printf("%s@skype.com", info);
-			sg->users = g_list_append(sg->users, g_strdup(info));
-			imcb_add_buddy(ic, buf, sg->name);
-			g_free(buf);
-		} else {
-			log_message(LOGLVL_ERROR,
-			            "No skype group with id %s. That's probably a bug.", id);
-		}
-	}
-}
-
-typedef void (*skype_parser)(struct im_connection *ic, char *line);
-
-static gboolean skype_read_callback(gpointer data, gint fd,
-                                    b_input_condition cond)
-{
-	struct im_connection *ic = data;
-	struct skype_data *sd = ic->proto_data;
-	char buf[IRC_LINE_SIZE];
-	int st, i;
-	char **lines, **lineptr, *line;
-	static struct parse_map {
-		char *k;
-		skype_parser v;
-	} parsers[] = {
-		{ "USERS ", skype_parse_users },
-		{ "USER ", skype_parse_user },
-		{ "CHATMESSAGE ", skype_parse_chatmessage },
-		{ "CALL ", skype_parse_call },
-		{ "FILETRANSFER ", skype_parse_filetransfer },
-		{ "CHAT ", skype_parse_chat },
-		{ "GROUP ", skype_parse_group },
-		{ "PASSWORD ", skype_parse_password },
-		{ "PROFILE PSTN_BALANCE ", skype_parse_profile },
-		{ "PING", skype_parse_ping },
-		{ "CHATS ", skype_parse_chats },
-		{ "GROUPS ", skype_parse_groups },
-		{ "ALTER GROUP ", skype_parse_alter_group },
-	};
-
-	/* Unused parameters */
-	fd = fd;
-	cond = cond;
-
-	if (!sd || sd->fd == -1) {
-		return FALSE;
-	}
-	/* Read the whole data. */
-	st = ssl_read(sd->ssl, buf, sizeof(buf));
-	if (st >= IRC_LINE_SIZE - 1) {
-		/* As we don't buffer incoming data, if IRC_LINE_SIZE amount of bytes
-		 * were received, there's a good chance last message was truncated
-		 * and the next recv() will yield garbage. */
-		imcb_error(ic, "Unable to handle incoming data from skyped");
-		st = 0;
-	}
-	if (st > 0) {
-		buf[st] = '\0';
-		/* Then split it up to lines. */
-		lines = g_strsplit(buf, "\n", 0);
-		lineptr = lines;
-		while ((line = *lineptr)) {
-			if (!strlen(line)) {
-				break;
-			}
-			if (set_getbool(&ic->acc->set, "skypeconsole_receive")) {
-				imcb_buddy_msg(ic, "skypeconsole", line, 0, 0);
-			}
-			for (i = 0; i < ARRAY_SIZE(parsers); i++) {
-				if (!strncmp(line, parsers[i].k,
-				             strlen(parsers[i].k))) {
-					parsers[i].v(ic, line);
-					break;
-				}
-			}
-			lineptr++;
-		}
-		g_strfreev(lines);
-	} else if (st == 0 || (st < 0 && !ssl_sockerr_again(sd->ssl))) {
-		ssl_disconnect(sd->ssl);
-		sd->fd = -1;
-		sd->ssl = NULL;
-
-		imcb_error(ic, "Error while reading from server");
-		imc_logout(ic, TRUE);
-		return FALSE;
-	}
-	return TRUE;
-}
-
-gboolean skype_start_stream(struct im_connection *ic)
-{
-	struct skype_data *sd = ic->proto_data;
-	int st;
-
-	if (!sd) {
-		return FALSE;
-	}
-
-	if (sd->bfd <= 0) {
-		sd->bfd = b_input_add(sd->fd, B_EV_IO_READ,
-		                      skype_read_callback, ic);
-	}
-
-	/* Log in */
-	skype_printf(ic, "USERNAME %s\n", ic->acc->user);
-	skype_printf(ic, "PASSWORD %s\n", ic->acc->pass);
-
-	/* This will download all buddies and groups. */
-	st = skype_printf(ic, "SEARCH GROUPS CUSTOM\n");
-	skype_printf(ic, "SEARCH FRIENDS\n");
-
-	skype_printf(ic, "SET USERSTATUS ONLINE\n");
-
-	/* Auto join to bookmarked chats if requested.*/
-	if (set_getbool(&ic->acc->set, "auto_join")) {
-		skype_printf(ic, "SEARCH BOOKMARKEDCHATS\n");
-		skype_printf(ic, "SEARCH ACTIVECHATS\n");
-		skype_printf(ic, "SEARCH MISSEDCHATS\n");
-		skype_printf(ic, "SEARCH RECENTCHATS\n");
-	}
-	return st;
-}
-
-gboolean skype_connected(gpointer data, int returncode, void *source, b_input_condition cond)
-{
-	struct im_connection *ic = data;
-	struct skype_data *sd = ic->proto_data;
-
-	/* Unused parameter */
-	cond = cond;
-
-	if (!source) {
-		sd->ssl = NULL;
-		imcb_error(ic, "Could not connect to server");
-		imc_logout(ic, TRUE);
-		return FALSE;
-	}
-	imcb_log(ic, "Connected to server, logging in");
-
-	return skype_start_stream(ic);
-}
-
-static void skype_login(account_t *acc)
-{
-	struct im_connection *ic = imcb_new(acc);
-	struct skype_data *sd = g_new0(struct skype_data, 1);
-
-	ic->proto_data = sd;
-
-	imcb_log(ic, "Connecting");
-	sd->ssl = ssl_connect(set_getstr(&acc->set, "server"),
-	                      set_getint(&acc->set, "port"), FALSE, skype_connected, ic);
-	sd->fd = sd->ssl ? ssl_getfd(sd->ssl) : -1;
-	sd->username = g_strdup(acc->user);
-
-	sd->ic = ic;
-
-	if (set_getbool(&acc->set, "skypeconsole")) {
-		imcb_add_buddy(ic, "skypeconsole", NULL);
-	}
-}
-
-static void skype_logout(struct im_connection *ic)
-{
-	struct skype_data *sd = ic->proto_data;
-	int i;
-
-	skype_printf(ic, "SET USERSTATUS OFFLINE\n");
-
-	while (ic->groupchats) {
-		imcb_chat_free(ic->groupchats->data);
-	}
-
-	for (i = 0; i < g_list_length(sd->groups); i++) {
-		struct skype_group *sg = (struct skype_group *) g_list_nth_data(sd->groups, i);
-		skype_group_free(sg, FALSE);
-	}
-
-	if (sd->ssl) {
-		ssl_disconnect(sd->ssl);
-	}
-
-	g_free(sd->username);
-	g_free(sd->handle);
-	g_free(sd);
-	ic->proto_data = NULL;
-}
-
-static int skype_buddy_msg(struct im_connection *ic, char *who, char *message,
-                           int flags)
-{
-	char *ptr, *nick;
-	int st;
-
-	/* Unused parameter */
-	flags = flags;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-
-	if (!strncmp(who, "skypeconsole", 12)) {
-		st = skype_printf(ic, "%s\n", message);
-	} else {
-		st = skype_printf(ic, "MESSAGE %s %s\n", nick, message);
-	}
-	g_free(nick);
-
-	return st;
-}
-
-const struct skype_away_state *skype_away_state_by_name(char *name)
-{
-	int i;
-
-	for (i = 0; skype_away_state_list[i].full_name; i++) {
-		if (g_strcasecmp(skype_away_state_list[i].full_name, name) == 0) {
-			return skype_away_state_list + i;
-		}
-	}
-
-	return NULL;
-}
-
-static void skype_set_away(struct im_connection *ic, char *state_txt,
-                           char *message)
-{
-	const struct skype_away_state *state;
-
-	/* Unused parameter */
-	message = message;
-
-	if (state_txt == NULL) {
-		state = skype_away_state_by_name("Online");
-	} else {
-		state = skype_away_state_by_name(state_txt);
-	}
-	skype_printf(ic, "SET USERSTATUS %s\n", state->code);
-}
-
-static GList *skype_away_states(struct im_connection *ic)
-{
-	static GList *l;
-	int i;
-
-	/* Unused parameter */
-	ic = ic;
-
-	if (l == NULL) {
-		for (i = 0; skype_away_state_list[i].full_name; i++) {
-			l = g_list_append(l,
-			                  (void *) skype_away_state_list[i].full_name);
-		}
-	}
-
-	return l;
-}
-
-static char *skype_set_display_name(set_t *set, char *value)
-{
-	account_t *acc = set->data;
-	struct im_connection *ic = acc->ic;
-
-	skype_printf(ic, "SET PROFILE FULLNAME %s\n", value);
-	return value;
-}
-
-static char *skype_set_mood_text(set_t *set, char *value)
-{
-	account_t *acc = set->data;
-	struct im_connection *ic = acc->ic;
-
-	skype_printf(ic, "SET PROFILE MOOD_TEXT %s\n", value);
-	return value;
-}
-
-static char *skype_set_balance(set_t *set, char *value)
-{
-	account_t *acc = set->data;
-	struct im_connection *ic = acc->ic;
-
-	skype_printf(ic, "GET PROFILE PSTN_BALANCE\n");
-	return value;
-}
-
-static void skype_call(struct im_connection *ic, char *value)
-{
-	char *nick = g_strdup(value);
-	char *ptr = strchr(nick, '@');
-
-	if (ptr) {
-		*ptr = '\0';
-	}
-	skype_printf(ic, "CALL %s\n", nick);
-	g_free(nick);
-}
-
-static void skype_hangup(struct im_connection *ic)
-{
-	struct skype_data *sd = ic->proto_data;
-
-	if (sd->call_id) {
-		skype_printf(ic, "SET CALL %s STATUS FINISHED\n",
-		             sd->call_id);
-		g_free(sd->call_id);
-		sd->call_id = 0;
-	} else {
-		imcb_error(ic, "There are no active calls currently.");
-	}
-}
-
-static char *skype_set_call(set_t *set, char *value)
-{
-	account_t *acc = set->data;
-	struct im_connection *ic = acc->ic;
-
-	if (value) {
-		skype_call(ic, value);
-	} else {
-		skype_hangup(ic);
-	}
-	return value;
-}
-
-static void skype_add_buddy(struct im_connection *ic, char *who, char *group)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *nick, *ptr;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-
-	if (!group) {
-		skype_printf(ic, "SET USER %s BUDDYSTATUS 2 Please authorize me\n",
-		             nick);
-		g_free(nick);
-	} else {
-		struct skype_group *sg = skype_group_by_name(ic, group);
-
-		if (!sg) {
-			/* No such group, we need to create it, then have to
-			 * add the user once it's created. */
-			skype_printf(ic, "CREATE GROUP %s\n", group);
-			sd->pending_user = g_strdup(nick);
-		} else {
-			skype_printf(ic, "ALTER GROUP %d ADDUSER %s\n", sg->id, nick);
-		}
-	}
-}
-
-static void skype_remove_buddy(struct im_connection *ic, char *who, char *group)
-{
-	char *nick, *ptr;
-
-	/* Unused parameter */
-	group = group;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-	skype_printf(ic, "SET USER %s BUDDYSTATUS 1\n", nick);
-	g_free(nick);
-}
-
-void skype_chat_msg(struct groupchat *gc, char *message, int flags)
-{
-	struct im_connection *ic = gc->ic;
-
-	/* Unused parameter */
-	flags = flags;
-
-	skype_printf(ic, "CHATMESSAGE %s %s\n", gc->title, message);
-}
-
-void skype_chat_leave(struct groupchat *gc)
-{
-	struct im_connection *ic = gc->ic;
-
-	skype_printf(ic, "ALTER CHAT %s LEAVE\n", gc->title);
-	gc->data = (void *) TRUE;
-}
-
-void skype_chat_invite(struct groupchat *gc, char *who, char *message)
-{
-	struct im_connection *ic = gc->ic;
-	char *ptr, *nick;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-	skype_printf(ic, "ALTER CHAT %s ADDMEMBERS %s\n", gc->title, nick);
-	g_free(nick);
-}
-
-void skype_chat_topic(struct groupchat *gc, char *message)
-{
-	struct im_connection *ic = gc->ic;
-	struct skype_data *sd = ic->proto_data;
-
-	skype_printf(ic, "ALTER CHAT %s SETTOPIC %s\n",
-	             gc->title, message);
-	sd->topic_wait = 1;
-}
-
-struct groupchat *skype_chat_with(struct im_connection *ic, char *who)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *ptr, *nick;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-	skype_printf(ic, "CHAT CREATE %s\n", nick);
-	sd->groupchat_with = g_strdup(nick);
-	g_free(nick);
-	/* We create a fake chat for now. We will replace it with a real one in
-	 * the real callback. */
-	return imcb_chat_new(ic, "");
-}
-
-static void skype_get_info(struct im_connection *ic, char *who)
-{
-	struct skype_data *sd = ic->proto_data;
-	char *ptr, *nick;
-
-	nick = g_strdup(who);
-	ptr = strchr(nick, '@');
-	if (ptr) {
-		*ptr = '\0';
-	}
-	sd->is_info = TRUE;
-	skype_printf(ic, "GET USER %s FULLNAME\n", nick);
-	skype_printf(ic, "GET USER %s PHONE_HOME\n", nick);
-	skype_printf(ic, "GET USER %s PHONE_OFFICE\n", nick);
-	skype_printf(ic, "GET USER %s PHONE_MOBILE\n", nick);
-	skype_printf(ic, "GET USER %s NROF_AUTHED_BUDDIES\n", nick);
-	skype_printf(ic, "GET USER %s TIMEZONE\n", nick);
-	skype_printf(ic, "GET USER %s LASTONLINETIMESTAMP\n", nick);
-	skype_printf(ic, "GET USER %s SEX\n", nick);
-	skype_printf(ic, "GET USER %s LANGUAGE\n", nick);
-	skype_printf(ic, "GET USER %s COUNTRY\n", nick);
-	skype_printf(ic, "GET USER %s PROVINCE\n", nick);
-	skype_printf(ic, "GET USER %s CITY\n", nick);
-	skype_printf(ic, "GET USER %s HOMEPAGE\n", nick);
-	skype_printf(ic, "GET USER %s ABOUT\n", nick);
-	/*
-	 * Hack: we query the bithday property which is always a single line,
-	 * so we can send the collected properties to the user when we have
-	 * this one.
-	 */
-	skype_printf(ic, "GET USER %s BIRTHDAY\n", nick);
-}
-
-static void skype_init(account_t *acc)
-{
-	set_t *s;
-
-	s = set_add(&acc->set, "server", SKYPE_DEFAULT_SERVER, set_eval_account,
-	            acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "port", SKYPE_DEFAULT_PORT, set_eval_int, acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "display_name", NULL, skype_set_display_name,
-	            acc);
-	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
-
-	s = set_add(&acc->set, "mood_text", NULL, skype_set_mood_text, acc);
-	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
-
-	s = set_add(&acc->set, "call", NULL, skype_set_call, acc);
-	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
-
-	s = set_add(&acc->set, "balance", NULL, skype_set_balance, acc);
-	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
-
-	s = set_add(&acc->set, "skypeout_offline", "true", set_eval_bool, acc);
-
-	s = set_add(&acc->set, "skypeconsole", "false", set_eval_bool, acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "skypeconsole_receive", "false", set_eval_bool,
-	            acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "auto_join", "false", set_eval_bool, acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "test_join", "false", set_eval_bool, acc);
-	s->flags |= ACC_SET_OFFLINE_ONLY;
-
-	s = set_add(&acc->set, "show_moods", "false", set_eval_bool, acc);
-
-	s = set_add(&acc->set, "edit_prefix", "EDIT:",
-	            NULL, acc);
-
-	s = set_add(&acc->set, "read_groups", "false", set_eval_bool, acc);
-}
-
-#if BITLBEE_VERSION_CODE > BITLBEE_VER(3, 0, 1)
-GList *skype_buddy_action_list(bee_user_t *bu)
-{
-	static GList *ret;
-
-	/* Unused parameter */
-	bu = bu;
-
-	if (ret == NULL) {
-		static const struct buddy_action ba[2] = {
-			{ "CALL", "Initiate a call" },
-			{ "HANGUP", "Hang up a call" },
-		};
-		int i;
-
-		for (i = 0; i < ARRAY_SIZE(ba); i++) {
-			ret = g_list_prepend(ret, (void *) (ba + i));
-		}
-	}
-
-	return ret;
-}
-
-void *skype_buddy_action(struct bee_user *bu, const char *action, char * const args[], void *data)
-{
-	/* Unused parameters */
-	args = args;
-	data = data;
-
-	if (!g_strcasecmp(action, "CALL")) {
-		skype_call(bu->ic, bu->handle);
-	} else if (!g_strcasecmp(action, "HANGUP")) {
-		skype_hangup(bu->ic);
-	}
-
-	return NULL;
-}
-#endif
-
-void init_plugin(void)
-{
-	struct prpl *ret = g_new0(struct prpl, 1);
-
-	ret->name = "skype";
-	ret->login = skype_login;
-	ret->init = skype_init;
-	ret->logout = skype_logout;
-	ret->buddy_msg = skype_buddy_msg;
-	ret->get_info = skype_get_info;
-	ret->away_states = skype_away_states;
-	ret->set_away = skype_set_away;
-	ret->add_buddy = skype_add_buddy;
-	ret->remove_buddy = skype_remove_buddy;
-	ret->chat_msg = skype_chat_msg;
-	ret->chat_leave = skype_chat_leave;
-	ret->chat_invite = skype_chat_invite;
-	ret->chat_with = skype_chat_with;
-	ret->handle_cmp = g_strcasecmp;
-	ret->chat_topic = skype_chat_topic;
-#if BITLBEE_VERSION_CODE > BITLBEE_VER(3, 0, 1)
-	ret->buddy_action_list = skype_buddy_action_list;
-	ret->buddy_action = skype_buddy_action;
-#endif
-	register_protocol(ret);
-}
-
-struct plugin_info *init_plugin_info(void)
-{
-	static struct plugin_info info = {
-		BITLBEE_ABI_VERSION_CODE,
-		"skype",
-		BITLBEE_VERSION,
-		"Skype protocol plugin",
-		NULL,
-		NULL
-	};
-
-	return &info;
-}
Index: otocols/skype/skyped.1
===================================================================
--- protocols/skype/skyped.1	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,207 +1,0 @@
-'\" t
-.\"     Title: skyped
-.\"    Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 123
-.\"    Manual: BitlBee manual
-.\"    Source: BitlBee
-.\"  Language: English
-.\"
-.TH "SKYPED" "1" "123" "BitlBee" "BitlBee manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-skyped \- allows remote control of the Skype GUI client
-.SH "SYNOPSIS"
-.sp
-skyped [<options>]
-.SH "DESCRIPTION"
-.sp
-Skype supports remote control of the GUI client only via X11 or DBus messages\&. This is hard in case you want remote control\&. This daemon listens on a TCP port and runs on the same machine where the GUI client runs\&. It passes all the input it gets to Skype directly, except for a few commands which is related to authentication\&. The whole communication is done via SSL\&.
-.SH "CONFIGURATION"
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Set up
-~/\&.skyped/skyped\&.conf: Create the
-~/\&.skyped
-directory, copy
-skyped\&.conf
-and
-skyped\&.cnf
-from
-/usr/local/etc/skyped/
-to
-~/\&.skyped, adjust
-username
-and
-password\&. The
-username
-should be your Skype login and the
-password
-can be whatever you want, but you will have to specify that one when adding the Skype account to BitlBee (see later)\&.
-.RE
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBNote\fR
-.ps -1
-.br
-.sp
-Here, and later \- /usr/local/etc can be different on your installation if you used the \-\-sysconfdir switch when running the configure of BitlBee\&.
-.sp .5v
-.RE
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Generate the SSL pem files:
-.RE
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-$ cd ~/\&.skyped
-$ openssl req \-new \-x509 \-days 365 \-nodes \-config skyped\&.cnf \-out skyped\&.cert\&.pem \e
-        \-keyout skyped\&.key\&.pem
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Start
-skyped
-(the TCP server), initially without detaching and enabling debug messages:
-.RE
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-$ skyped \-d \-n
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-.RS 4
-.ie n \{\
-\h'-04'\(bu\h'+03'\c
-.\}
-.el \{\
-.sp -1
-.IP \(bu 2.3
-.\}
-Start your
-IRC
-client, connect to BitlBee and add your account:
-.RE
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-account add skype <user> <pass>
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-<user> should be your Skype account name, <pass> should be the one you declared in skyped\&.conf\&.
-.SH "OPTIONS"
-.PP
-\-c, \-\-config
-.RS 4
-Path to configuration file (default: $HOME/\&.skyped/skyped\&.conf)
-.RE
-.PP
-\-d, \-\-debug
-.RS 4
-Enable debug messages
-.RE
-.PP
-\-h, \-\-help
-.RS 4
-Show short summary of options
-.RE
-.PP
-\-H, \-\-host
-.RS 4
-Set the tcp host (default: 0\&.0\&.0\&.0)
-.RE
-.PP
-\-l, \-\-log
-.RS 4
-Set the log file in background mode (default: none)
-.RE
-.PP
-\-m, \-\-mock=<file>
-.RS 4
-Mock mode: replay session from file, instead of connecting to Skype\&.
-.RE
-.PP
-\-n, \-\-nofork
-.RS 4
-Don\(cqt run as daemon in the background
-.RE
-.PP
-\-s, \-\-dont\-start\-skype
-.RS 4
-Assume that skype is running independently, don\(cqt try to start/stop it\&.
-.RE
-.PP
-\-p, \-\-port
-.RS 4
-Set the tcp port (default: 2727)
-.RE
-.PP
-\-v, \-\-version
-.RS 4
-Display version information
-.RE
-.SH "AUTHOR"
-.sp
-Written by Miklos Vajna <vmiklos@vmiklos\&.hu>
Index: otocols/skype/skyped.cnf
===================================================================
--- protocols/skype/skyped.cnf	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,40 +1,0 @@
-# create RSA certs - Server
-
-RANDFILE = skyped.rnd
-
-[ req ]
-default_bits = 1024
-encrypt_key = yes
-distinguished_name = req_dn
-x509_extensions = cert_type
-
-[ req_dn ]
-countryName = Country Name (2 letter code)
-countryName_default             = HU
-countryName_min                 = 2
-countryName_max                 = 2
-
-stateOrProvinceName             = State or Province Name (full name)
-stateOrProvinceName_default     = Some-State
-
-localityName                    = Locality Name (eg, city)
-
-0.organizationName              = Organization Name (eg, company)
-0.organizationName_default      = Stunnel Developers Ltd
-
-organizationalUnitName          = Organizational Unit Name (eg, section)
-#organizationalUnitName_default =
-
-0.commonName                    = Common Name (FQDN of your server)
-0.commonName_default            = localhost
-
-# To create a certificate for more than one name uncomment:
-# 1.commonName                  = DNS alias of your server
-# 2.commonName                  = DNS alias of your server
-# ...
-# See http://home.netscape.com/eng/security/ssl_2.0_certificate.html
-# to see how Netscape understands commonName.
-
-[ cert_type ]
-nsCertType = server
-
Index: otocols/skype/skyped.conf.dist
===================================================================
--- protocols/skype/skyped.conf.dist	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,10 +1,0 @@
-[skyped]
-# change to your skype username
-username = john
-# use `echo -n foo|sha1sum` to generate this hash for your password
-password = 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
-
-# you have to change the following paths to your home directory:
-cert = /home/YOUR_USER/.skyped/skyped.cert.pem
-key  = /home/YOUR_USER/.skyped/skyped.key.pem
-port = 2727
Index: otocols/skype/skyped.py
===================================================================
--- protocols/skype/skyped.py	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,523 +1,0 @@
-#!/usr/bin/env python2.7
-#
-#   skyped.py
-#
-#   Copyright (c) 2007-2013 by Miklos Vajna <vmiklos@vmiklos.hu>
-#
-#   This program is free software; you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
-#   (at your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#   GNU General Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program; if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-#   USA.
-#
-
-import sys
-import os
-import signal
-import time
-import socket
-import Skype4Py
-import hashlib
-from ConfigParser import ConfigParser, NoOptionError
-from traceback import print_exception
-from fcntl import fcntl, F_SETFD, FD_CLOEXEC
-import ssl
-
-__version__ = "0.1.1"
-
-try:
-	import gobject
-	hasgobject = True
-except ImportError:
-	import select
-	import threading
-	hasgobject = False
-
-def eh(type, value, tb):
-	global options
-
-	if type != KeyboardInterrupt:
-		print_exception(type, value, tb)
-	if hasgobject:
-		gobject.MainLoop().quit()
-	if options.conn:
-		options.conn.close()
-	if not options.dont_start_skype:
-		# shut down client if it's running
-		try:
-			skype.skype.Client.Shutdown()
-		except NameError:
-			pass
-	sys.exit("Exiting.")
-
-sys.excepthook = eh
-
-def wait_for_lock(lock, timeout_to_print, timeout, msg):
-	start = time.time()
-	locked = lock.acquire(0)
-	while not(locked):
-		time.sleep(0.5)
-		if timeout_to_print and (time.time() - timeout_to_print > start):
-			dprint("%s: Waited %f seconds" % \
-					(msg, time.time() - start))
-			timeout_to_print = False
-		if timeout and (time.time() - timeout > start):
-			dprint("%s: Waited %f seconds, giving up" % \
-					(msg, time.time() - start))
-			return False
-		locked = lock.acquire(0)
-	return True
-
-def input_handler(fd, io_condition = None):
-	global options
-	global skype
-	if options.buf:
-		for i in options.buf:
-			skype.send(i.strip())
-		options.buf = None
-		if not hasgobject:
-			return True
-	else:
-		if not hasgobject:
-			close_socket = False
-			if wait_for_lock(options.lock, 3, 10, "input_handler"):
-				try:
-						input = fd.recv(1024)
-						options.lock.release()
-				except Exception, s:
-					dprint("Warning, receiving 1024 bytes failed (%s)." % s)
-					fd.close()
-					options.conn = False
-					options.lock.release()
-					return False
-				for i in input.split("\n"):
-					if i.strip() == "SET USERSTATUS OFFLINE":
-						close_socket = True
-					skype.send(i.strip())
-			return not(close_socket)
-		try:
-			input = fd.recv(1024)
-		except Exception, s:
-			dprint("Warning, receiving 1024 bytes failed (%s)." % s)
-			fd.close()
-			return False
-		for i in input.split("\n"):
-			skype.send(i.strip())
-		return True
-
-def skype_idle_handler(skype):
-	try:
-		c = skype.skype.Command("PING", Block=True)
-		skype.skype.SendCommand(c)
-	except (Skype4Py.SkypeAPIError, AttributeError), s:
-		dprint("Warning, pinging Skype failed (%s)." % (s))
-		time.sleep(1)
-	return True
-
-def send(sock, txt, tries=10):
-	global options
-	if hasgobject:
-		if not options.conn: return
-		try:
-			done = sock.sendall(txt)
-		except socket.error as s:
-			dprint("Warning, sending '%s' failed (%s)." % (txt, s))
-			options.conn.close()
-			options.conn = False
-	else:
-		for attempt in xrange(1, tries+1):
-			if not options.conn: break
-			if wait_for_lock(options.lock, 3, 10, "socket send"):
-				try:
-					 if options.conn: done = sock.sendall(txt)
-					 options.lock.release()
-				except socket.error as s:
-					options.lock.release()
-					dprint("Warning, sending '%s' failed (%s). count=%d" % (txt, s, count))
-					time.sleep(1)
-				else:
-					break
-		else:
-			if options.conn:
-				options.conn.close()
-			options.conn = False
-		return done
-
-def bitlbee_idle_handler(skype):
-	global options
-	done = False
-	if options.conn:
-		try:
-			e = "PING"
-			done = send(options.conn, "%s\n" % e)
-		except Exception, s:
-			dprint("Warning, sending '%s' failed (%s)." % (e, s))
-			if hasgobject:
-				options.conn.close()
-			else:
-				if options.conn: options.conn.close()
-				options.conn = False
-				done = False
-	if hasgobject:
-		return True
-	else:
-		return done
-	return True
-
-def server(host, port, skype = None):
-	global options
-	if ":" in host:
-		sock = socket.socket(socket.AF_INET6)
-	else:
-		sock = socket.socket()
-	sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-	fcntl(sock, F_SETFD, FD_CLOEXEC);
-	sock.bind((host, port))
-	sock.listen(1)
-
-	if hasgobject:
-		gobject.io_add_watch(sock, gobject.IO_IN, listener)
-	else:
-		dprint("Waiting for connection...")
-		listener(sock, skype)
-
-def listener(sock, skype):
-	global options
-	if not hasgobject:
-		if not(wait_for_lock(options.lock, 3, 10, "listener")): return False
-	rawsock, addr = sock.accept()
-	try:
-		options.conn = ssl.wrap_socket(rawsock,
-			server_side=True,
-			certfile=options.config.sslcert,
-			keyfile=options.config.sslkey,
-			ssl_version=ssl.PROTOCOL_TLSv1)
-	except (ssl.SSLError, socket.error) as err:
-		if isinstance(err, ssl.SSLError):
-			dprint("Warning, SSL init failed, did you create your certificate?")
-			return False
-		else:
-			dprint('Warning, SSL init failed')
-			return True
-	if hasattr(options.conn, 'handshake'):
-		try:
-			options.conn.handshake()
-		except Exception:
-			if not hasgobject:
-				options.lock.release()
-			dprint("Warning, handshake failed, closing connection.")
-			return False
-	ret = 0
-	try:
-		line = options.conn.recv(1024)
-		if line.startswith("USERNAME") and line.split(' ')[1].strip() == options.config.username:
-			ret += 1
-		line = options.conn.recv(1024)
-		if line.startswith("PASSWORD") and hashlib.sha1(line.split(' ')[1].strip()).hexdigest() == options.config.password:
-			ret += 1
-	except Exception, s:
-		dprint("Warning, receiving 1024 bytes failed (%s)." % s)
-		options.conn.close()
-		if not hasgobject:
-			options.conn = False
-			options.lock.release()
-		return False
-	if ret == 2:
-		dprint("Username and password OK.")
-		options.conn.send("PASSWORD OK\n")
-		if hasgobject:
-			gobject.io_add_watch(options.conn, gobject.IO_IN, input_handler)
-		else:
-			options.lock.release()
-			serverloop(options, skype)
-		return True
-	else:
-		dprint("Username and/or password WRONG.")
-		options.conn.send("PASSWORD KO\n")
-		if not hasgobject:
-			options.conn.close()
-			options.conn = False
-			options.lock.release()
-		return False
-
-def dprint(msg):
-	from time import strftime
-	global options
-
-	if options.debug:
-		import inspect
-		prefix = strftime("[%Y-%m-%d %H:%M:%S]") + " %s:%d" % inspect.stack()[1][1:3]
-		sanitized = msg
-
-		try:
-			print prefix + ": " + msg
-		except Exception, s:
-			try:
-				sanitized = msg.encode("ascii", "backslashreplace")
-			except Error, s:
-				try:
-					sanitized = "hex [" + msg.encode("hex") + "]"
-				except Error, s:
-					sanitized = "[unable to print debug message]"
-			print prefix + "~=" + sanitized
-
-		if options.log:
-			sock = open(options.log, "a")
-			sock.write("%s: %s\n" % (prefix, sanitized))
-			sock.close()
-
-		sys.stdout.flush()
-
-class MockedSkype:
-	"""Mock class for Skype4Py.Skype(), in case the -m option is used."""
-	def __init__(self, mock):
-		sock = open(mock)
-		self.lines = sock.readlines()
-
-	def SendCommand(self, c):
-		pass
-
-	def Command(self, msg, Block):
-		if msg == "PING":
-			return ["PONG"]
-		line = self.lines[0].strip()
-		if not line.startswith(">> "):
-			raise Exception("Corrupted mock input")
-		line = line[3:]
-		if line != msg:
-			raise Exception("'%s' != '%s'" % (line, msg))
-		self.lines = self.lines[1:] # drop the expected incoming line
-		ret = []
-		while True:
-			# and now send back all the following lines, up to the next expected incoming line
-			if len(self.lines) == 0:
-				break
-			if self.lines[0].startswith(">> "):
-				break
-			if not self.lines[0].startswith("<< "):
-				raise Exception("Corrupted mock input")
-			ret.append(self.lines[0][3:].strip())
-			self.lines = self.lines[1:]
-		return ret
-
-class SkypeApi:
-	def __init__(self, mock):
-		global options
-		if not mock:
-			self.skype = Skype4Py.Skype()
-			self.skype.OnNotify = self.recv
-			if not options.dont_start_skype:
-				self.skype.Client.Start()
-		else:
-			self.skype = MockedSkype(mock)
-
-	def recv(self, msg_text):
-		global options
-		if msg_text == "PONG":
-			return
-		if "\n" in msg_text:
-			# crappy skype prefixes only the first line for
-			# multiline messages so we need to do so for the other
-			# lines, too. this is something like:
-			# 'CHATMESSAGE id BODY first line\nsecond line' ->
-			# 'CHATMESSAGE id BODY first line\nCHATMESSAGE id BODY second line'
-			prefix = " ".join(msg_text.split(" ")[:3])
-			msg_text = ["%s %s" % (prefix, i) for i in " ".join(msg_text.split(" ")[3:]).split("\n")]
-		else:
-			msg_text = [msg_text]
-		for i in msg_text:
-			try:
-				# Internally, BitlBee always uses UTF-8 and encodes/decodes as
-				# necessary to communicate with the IRC client; thus send the
-				# UTF-8 it expects
-				e = i.encode('UTF-8')
-			except:
-				# Should never happen, but it's better to send difficult to
-				# read data than crash because some message couldn't be encoded
-				e = i.encode('ascii', 'backslashreplace')
-			if options.conn:
-				dprint('<< ' + e)
-				try:
-					send(options.conn, e + "\n")
-				except Exception, s:
-					dprint("Warning, sending '%s' failed (%s)." % (e, s))
-					if options.conn: options.conn.close()
-					options.conn = False
-			else:
-				dprint('-- ' + e)
-
-	def send(self, msg_text):
-		if not len(msg_text) or msg_text == "PONG":
-			if msg_text == "PONG":
-				options.last_bitlbee_pong = time.time()
-			return
-		try:
-			# Internally, BitlBee always uses UTF-8 and encodes/decodes as
-			# necessary to communicate with the IRC client; thus decode the
-			# UTF-8 it sent us
-			e = msg_text.decode('UTF-8')
-		except:
-			# Should never happen, but it's better to send difficult to read
-			# data to Skype than to crash
-			e = msg_text.decode('ascii', 'backslashreplace')
-		dprint('>> ' + e)
-		try:
-			c = self.skype.Command(e, Block=True)
-			self.skype.SendCommand(c)
-			if hasattr(c, "Reply"):
-				self.recv(c.Reply) # Skype4Py answer
-			else:
-				for i in c: # mock may return multiple iterable answers
-					self.recv(i)
-		except Skype4Py.SkypeError:
-			pass
-		except Skype4Py.SkypeAPIError, s:
-			dprint("Warning, sending '%s' failed (%s)." % (e, s))
-
-
-def serverloop(options, skype):
-	timeout = 1; # in seconds
-	skype_ping_period = 5
-	bitlbee_ping_period = 10
-	bitlbee_pong_timeout = 30
-	now = time.time()
-	skype_ping_start_time = now
-	bitlbee_ping_start_time = now
-	options.last_bitlbee_pong = now
-	in_error = []
-	handler_ok = True
-	while (len(in_error) == 0) and handler_ok and options.conn:
-		ready_to_read, ready_to_write, in_error = \
-			select.select([options.conn], [], [options.conn], \
-				timeout)
-		now = time.time()
-		handler_ok = len(in_error) == 0
-		if (len(ready_to_read) == 1) and handler_ok:
-			handler_ok = input_handler(ready_to_read.pop())
-			# don't ping bitlbee/skype if they already received data
-			now = time.time() # allow for the input_handler to take some time
-			bitlbee_ping_start_time = now
-			skype_ping_start_time = now
-			options.last_bitlbee_pong = now
-		if (now - skype_ping_period > skype_ping_start_time) and handler_ok:
-			handler_ok = skype_idle_handler(skype)
-			skype_ping_start_time = now
-		if now - bitlbee_ping_period > bitlbee_ping_start_time:
-			handler_ok = bitlbee_idle_handler(skype)
-			bitlbee_ping_start_time = now
-			if options.last_bitlbee_pong:
-				if (now - options.last_bitlbee_pong) > bitlbee_pong_timeout:
-					dprint("Bitlbee pong timeout")
-					# TODO is following line necessary? Should there be a options.conn.unwrap() somewhere?
-					# options.conn.shutdown()
-					if options.conn:
-						options.conn.close()
-					options.conn = False
-			else:
-				options.last_bitlbee_pong = now
-
-
-def main(args=None):
-	global options
-	global skype
-
-	cfgpath = os.path.join(os.environ['HOME'], ".skyped", "skyped.conf")
-	syscfgpath = "/usr/local/etc/skyped/skyped.conf"
-	if not os.path.exists(cfgpath) and os.path.exists(syscfgpath):
-		cfgpath = syscfgpath # fall back to system-wide settings
-	port = 2727
-
-	import argparse
-	parser = argparse.ArgumentParser()
-	parser.add_argument('-c', '--config',
-		metavar='path', default=cfgpath,
-		help='path to configuration file (default: %(default)s)')
-	parser.add_argument('-H', '--host', default='0.0.0.0',
-		help='set the tcp host, supports IPv4 and IPv6 (default: %(default)s)')
-	parser.add_argument('-p', '--port', type=int,
-		help='set the tcp port (default: %(default)s)')
-	parser.add_argument('-l', '--log', metavar='path',
-		help='set the log file in background mode (default: none)')
-	parser.add_argument('-v', '--version', action='store_true', help='display version information')
-	parser.add_argument('-n', '--nofork',
-		action='store_true', help="don't run as daemon in the background")
-	parser.add_argument('-s', '--dont-start-skype', action='store_true',
-		help="assume that skype is running independently, don't try to start/stop it")
-	parser.add_argument('-m', '--mock', help='fake interactions with skype (only useful for tests)')
-	parser.add_argument('-d', '--debug', action='store_true', help='enable debug messages')
-	options = parser.parse_args(sys.argv[1:] if args is None else args)
-
-	if options.version:
-		print "skyped %s" % __version__
-		sys.exit(0)
-
-	# well, this is a bit hackish. we store the socket of the last connected client
-	# here and notify it. maybe later notify all connected clients?
-	options.conn = None
-	# this will be read first by the input handler
-	options.buf = None
-
-	if not os.path.exists(options.config):
-		parser.error(( "Can't find configuration file at '%s'. "
-			"Use the -c option to specify an alternate one." )% options.config)
-
-	cfgpath = options.config
-	options.config = ConfigParser()
-	options.config.read(cfgpath)
-	options.config.username = options.config.get('skyped', 'username').split('#', 1)[0]
-	options.config.password = options.config.get('skyped', 'password').split('#', 1)[0]
-	options.config.sslkey = os.path.expanduser(options.config.get('skyped', 'key').split('#', 1)[0])
-	options.config.sslcert = os.path.expanduser(options.config.get('skyped', 'cert').split('#', 1)[0])
-
-	# hack: we have to parse the parameters first to locate the
-	# config file but the -p option should overwrite the value from
-	# the config file
-	try:
-		options.config.port = int(options.config.get('skyped', 'port').split('#', 1)[0])
-		if not options.port:
-			options.port = options.config.port
-	except NoOptionError:
-		pass
-	if not options.port:
-		options.port = port
-	dprint("Parsing config file '%s' done, username is '%s'." % (cfgpath, options.config.username))
-	if not options.nofork:
-		pid = os.fork()
-		if pid == 0:
-			nullin = file(os.devnull, 'r')
-			nullout = file(os.devnull, 'w')
-			os.dup2(nullin.fileno(), sys.stdin.fileno())
-			os.dup2(nullout.fileno(), sys.stdout.fileno())
-			os.dup2(nullout.fileno(), sys.stderr.fileno())
-		else:
-			print 'skyped is started on port %s, pid: %d' % (options.port, pid)
-			sys.exit(0)
-	else:
-		dprint('skyped is started on port %s' % options.port)
-	if hasgobject:
-		server(options.host, options.port)
-	try:
-		skype = SkypeApi(options.mock)
-	except Skype4Py.SkypeAPIError, s:
-		sys.exit("%s. Are you sure you have started Skype?" % s)
-	if hasgobject:
-		gobject.timeout_add(2000, skype_idle_handler, skype)
-		gobject.timeout_add(60000, bitlbee_idle_handler, skype)
-		gobject.MainLoop().run()
-	else:
-		while 1:
-			options.conn = False
-			options.lock = threading.Lock()
-			server(options.host, options.port, skype)
-
-
-if __name__ == '__main__': main()
Index: otocols/skype/skyped.txt
===================================================================
--- protocols/skype/skyped.txt	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,88 +1,0 @@
-= skyped(1)
-
-== NAME
-
-skyped - allows remote control of the Skype GUI client
-
-== SYNOPSIS
-
-skyped [<options>]
-
-== DESCRIPTION
-
-Skype supports remote control of the GUI client only via X11 or DBus
-messages. This is hard in case you want remote control. This daemon
-listens on a TCP port and runs on the same machine where the GUI client
-runs. It passes all the input it gets to Skype directly, except for a
-few commands which is related to authentication. The whole communication
-is done via SSL.
-
-== CONFIGURATION
-
-- Set up `~/.skyped/skyped.conf`: Create the `~/.skyped` directory, copy
-  `skyped.conf` and `skyped.cnf` from `/usr/local/etc/skyped/` to `~/.skyped`,
-  adjust `username` and `password`. The `username` should be your Skype login and
-  the `password` can be whatever you want, but you will have to specify that one
-  when adding the Skype account to BitlBee (see later).
-
-NOTE: Here, and later - `/usr/local/etc` can be different on your installation
-if you used the `--sysconfdir` switch when running the `configure` of BitlBee.
-
-- Generate the SSL pem files:
-
-----
-$ cd ~/.skyped
-$ openssl req -new -x509 -days 365 -nodes -config skyped.cnf -out skyped.cert.pem \
-	-keyout skyped.key.pem
-----
-
-- Start `skyped` (the TCP server), initially without detaching and enabling debug messages:
-
-----
-$ skyped -d -n
-----
-
-- Start your `IRC` client, connect to BitlBee and add your account:
-
-----
-account add skype <user> <pass>
-----
-
-`<user>` should be your Skype account name, `<pass>` should be the one you declared
-in `skyped.conf`.
-
-== OPTIONS
-
--c, --config::
-	Path to configuration file (default: $HOME/.skyped/skyped.conf)
-
--d, --debug::
-	Enable debug messages
-
--h, --help::
-	Show short summary of options
-
--H, --host::
-	Set the tcp host (default: 0.0.0.0)
-
--l, --log::
-	Set the log file in background mode (default: none)
-
--m, --mock=<file>::
-	Mock mode: replay session from file, instead of connecting to Skype.
-
--n, --nofork::
-	Don't run as daemon in the background
-
--s, --dont-start-skype::
-	Assume that skype is running independently, don't try to start/stop it.
-
--p, --port::
-	Set the tcp port (default: 2727)
-
--v, --version::
-	Display version information
-
-== AUTHOR
-
-Written by Miklos Vajna <vmiklos@vmiklos.hu>
Index: otocols/skype/t/add-yes-bitlbee.mock
===================================================================
--- protocols/skype/t/add-yes-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,8 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
-<< PRIVMSG &bitlbee :add skype bob
->> :bob!bob@skype.com JOIN :&bitlbee
Index: otocols/skype/t/add-yes-skyped.mock
===================================================================
--- protocols/skype/t/add-yes-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,23 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> SET USER bob BUDDYSTATUS 2 Please authorize me
-<< USER bob BUDDYSTATUS 2
-<< USER bob ISAUTHORIZED TRUE
-<< USER bob ISBLOCKED FALSE
-<< USER bob BUDDYSTATUS 2
-<< USER bob ONLINESTATUS OFFLINE
-<< USER bob FULLNAME skype test203
-<< USER bob BUDDYSTATUS 3
-<< USER bob ONLINESTATUS OFFLINE
-<< USER bob ONLINESTATUS ONLINE
-<< USER bob TIMEZONE 90000
Index: otocols/skype/t/added-no-bitlbee.mock
===================================================================
--- protocols/skype/t/added-no-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - New request: The user bob wants to add you
-<< PRIVMSG &bitlbee :no
->> PRIVMSG &bitlbee :skype - Rejected
Index: otocols/skype/t/added-no-skyped.mock
===================================================================
--- protocols/skype/t/added-no-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,15 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
-<< USER bob RECEIVEDAUTHREQUEST Please allow me to see when you are online
->> SET USER bob ISAUTHORIZED FALSE
-<< USER bob ISAUTHORIZED FALSE
Index: otocols/skype/t/added-yes-bitlbee.mock
===================================================================
--- protocols/skype/t/added-yes-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - New request: The user bob wants to add you
-<< PRIVMSG &bitlbee :yes
->> :bob!bob@skype.com JOIN :&bitlbee
Index: otocols/skype/t/added-yes-skyped.mock
===================================================================
--- protocols/skype/t/added-yes-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,25 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
-<< USER bob RECEIVEDAUTHREQUEST Please allow me to see when you are online
->> SET USER bob ISAUTHORIZED TRUE
-<< USER bob ISAUTHORIZED TRUE
-<< USER bob RECEIVEDAUTHREQUEST 
-<< USER bob ISAUTHORIZED TRUE
-<< USER bob ISBLOCKED FALSE
-<< USER bob BUDDYSTATUS 3
-<< USER bob ONLINESTATUS OFFLINE
-<< USER bob ONLINESTATUS ONLINE
-<< USER bob TIMEZONE 90000
-<< USER bob FULLNAME Miklos V
-<< USER bob LANGUAGE hu Hungarian
-<< USER bob COUNTRY hu Hungary
Index: otocols/skype/t/away-set-bitlbee.mock
===================================================================
--- protocols/skype/t/away-set-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,10 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - Logging in: Logged in
-<< AWAY :work
->> PRIVMSG &bitlbee :alice: USERSTATUS AWAY
Index: otocols/skype/t/away-set-skyped.mock
===================================================================
--- protocols/skype/t/away-set-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,20 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> SET USERSTATUS AWAY
-<< USERSTATUS AWAY
-<< USER alice ONLINESTATUS AWAY
-<< USERSTATUS AWAY
Index: otocols/skype/t/call-bitlbee.mock
===================================================================
--- protocols/skype/t/call-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,11 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
-<< PRIVMSG bob :CALL
->> PRIVMSG &bitlbee :skype - You are currently ringing the user bob.
-<< PRIVMSG bob :HANGUP
->> PRIVMSG &bitlbee :skype - You cancelled the call to the user bob.
Index: otocols/skype/t/call-failed-bitlbee.mock
===================================================================
--- protocols/skype/t/call-failed-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - Logging in: Logged in
-<< PRIVMSG bob :CALL
->> PRIVMSG &bitlbee :skype - Error: Call failed: User is offline
Index: otocols/skype/t/call-failed-skyped.mock
===================================================================
--- protocols/skype/t/call-failed-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,21 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS OFFLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> CALL bob
-<< CALL 216 STATUS UNPLACED
-<< CALL 216 STATUS ROUTING
-<< CALL 216 FAILUREREASON 3
-<< CALL 216 STATUS FAILED
Index: otocols/skype/t/call-skyped.mock
===================================================================
--- protocols/skype/t/call-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,26 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS OFFLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> CALL bob
-<< CALL 178 STATUS UNPLACED
-<< CALL 178 STATUS ROUTING
-<< CALL 178 STATUS RINGING
->> GET CALL 178 PARTNER_HANDLE
-<< CALL 178 PARTNER_HANDLE bob
->> SET CALL 178 STATUS FINISHED
-<< CALL 178 STATUS CANCELLED
->> GET CALL 178 PARTNER_HANDLE
-<< CALL 178 PARTNER_HANDLE bob
Index: otocols/skype/t/called-no-bitlbee.mock
===================================================================
--- protocols/skype/t/called-no-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,10 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - New request: The user bob is currently ringing you.
-<< PRIVMSG &bitlbee :no
->> PRIVMSG &bitlbee :skype - Rejected: The user bob is currently ringing you.
->> PRIVMSG &bitlbee :skype - You refused the call from user bob.
Index: otocols/skype/t/called-no-skyped.mock
===================================================================
--- protocols/skype/t/called-no-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,24 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
-<< CALL 212 CONF_ID 0
-<< CALL 212 STATUS RINGING
->> GET CALL 212 PARTNER_HANDLE
-<< CALL 212 PARTNER_HANDLE bob
->> SET CALL 212 STATUS FINISHED
-<< CALL 212 STATUS REFUSED
->> GET CALL 212 PARTNER_HANDLE
-<< CALL 212 PARTNER_HANDLE bob
Index: otocols/skype/t/called-yes-bitlbee.mock
===================================================================
--- protocols/skype/t/called-yes-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - New request: The user bob is currently ringing you.
-<< PRIVMSG &bitlbee :yes
->> PRIVMSG &bitlbee :skype - Accepted: The user bob is currently ringing you.
Index: otocols/skype/t/called-yes-skyped.mock
===================================================================
--- protocols/skype/t/called-yes-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,22 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
-<< CALL 208 CONF_ID 0
-<< CALL 208 STATUS RINGING
->> GET CALL 208 PARTNER_HANDLE
-<< CALL 208 PARTNER_HANDLE bob
->> SET CALL 208 STATUS INPROGRESS
-<< CALL 208 STATUS INPROGRESS
Index: otocols/skype/t/ctcp-help-bitlbee.mock
===================================================================
--- protocols/skype/t/ctcp-help-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
-<< PRIVMSG bob :HELP
->> :bob!bob@skype.com NOTICE alice :HELP Supported CTCPs: HANGUP (Hang up a call), CALL (Initiate a call)
Index: otocols/skype/t/ctcp-help-skyped.mock
===================================================================
--- protocols/skype/t/ctcp-help-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,16 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
Index: otocols/skype/t/filetransfer-bitlbee.mock
===================================================================
--- protocols/skype/t/filetransfer-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,10 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
->> PRIVMSG &bitlbee :skype - The user bob offered a new file for you.
->> PRIVMSG &bitlbee :skype - File transfer from user bob started, saving to /home/alice/text.odt.
->> PRIVMSG &bitlbee :skype - File transfer from user bob completed.
Index: otocols/skype/t/filetransfer-skyped.mock
===================================================================
--- protocols/skype/t/filetransfer-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,37 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
-<< FILETRANSFER 208 TYPE INCOMING
-<< FILETRANSFER 208 PARTNER_HANDLE bob
-<< FILETRANSFER 208 PARTNER_DISPNAME bob
-<< FILETRANSFER 208 FILENAME text.odt
-<< FILETRANSFER 208 STATUS NEW
-<< FILETRANSFER 208 FILESIZE 83534193
-<< FILETRANSFER 208 STARTTIME 1358458276
-<< FILETRANSFER 208 FINISHTIME 0
-<< FILETRANSFER 208 BYTESPERSECOND 0
-<< FILETRANSFER 208 BYTESTRANSFERRED 0
-<< FILETRANSFER 208 FILESIZE 83534193
->> GET FILETRANSFER 208 PARTNER_HANDLE
-<< FILETRANSFER 208 PARTNER_HANDLE bob
-<< FILETRANSFER 208 FILEPATH /home/alice/text.odt
-<< FILETRANSFER 208 STATUS CONNECTING
-<< FILETRANSFER 208 STATUS TRANSFERRING
->> GET FILETRANSFER 208 PARTNER_HANDLE
-<< FILETRANSFER 208 PARTNER_HANDLE bob
-<< FILETRANSFER 208 STATUS COMPLETED
->> GET FILETRANSFER 208 PARTNER_HANDLE
-<< FILETRANSFER 208 PARTNER_HANDLE bob
Index: otocols/skype/t/group-add-bitlbee.mock
===================================================================
--- protocols/skype/t/group-add-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,14 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set read_groups true
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
->> :cecil!cecil@skype.com JOIN :&bitlbee
->> :daniel!daniel@skype.com JOIN :&bitlbee
-<< JOIN &family
->> 353 alice = &family :@alice +bob +cecil @root
-<< INVITE daniel &family
->> :daniel!daniel@skype.com JOIN :&family
Index: otocols/skype/t/group-add-skyped.mock
===================================================================
--- protocols/skype/t/group-add-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,38 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 70, 71
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil, daniel, emily
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET GROUP 70 DISPLAYNAME
-<< GROUP 70 DISPLAYNAME Family
->> GET GROUP 70 USERS
-<< GROUP 70 USERS bob, cecil
->> GET GROUP 71 DISPLAYNAME
-<< GROUP 71 DISPLAYNAME Work
->> GET GROUP 71 USERS
-<< GROUP 71 USERS daniel, emily
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS ONLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
->> GET USER daniel ONLINESTATUS
-<< USER daniel ONLINESTATUS ONLINE
->> GET USER daniel FULLNAME
-<< USER daniel FULLNAME Daniel
->> GET USER emily ONLINESTATUS
-<< USER emily ONLINESTATUS OFFLINE
->> GET USER emily FULLNAME
-<< USER emily FULLNAME Emily
->> ALTER GROUP 70 ADDUSER daniel
-<< ALTER GROUP 70 ADDUSER daniel
Index: otocols/skype/t/group-read-bitlbee.mock
===================================================================
--- protocols/skype/t/group-read-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,14 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set read_groups true
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
->> :cecil!cecil@skype.com JOIN :&bitlbee
->> :daniel!daniel@skype.com JOIN :&bitlbee
-<< JOIN &family
->> 353 alice = &family :@alice +bob +cecil @root
-<< JOIN &work
->> 353 alice = &work :@alice +daniel @root
Index: otocols/skype/t/group-read-skyped.mock
===================================================================
--- protocols/skype/t/group-read-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,36 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 70, 71
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil, daniel, emily
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET GROUP 70 DISPLAYNAME
-<< GROUP 70 DISPLAYNAME Family
->> GET GROUP 70 USERS
-<< GROUP 70 USERS bob, cecil
->> GET GROUP 71 DISPLAYNAME
-<< GROUP 71 DISPLAYNAME Work
->> GET GROUP 71 USERS
-<< GROUP 71 USERS daniel, emily
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS ONLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
->> GET USER daniel ONLINESTATUS
-<< USER daniel ONLINESTATUS ONLINE
->> GET USER daniel FULLNAME
-<< USER daniel FULLNAME Daniel
->> GET USER emily ONLINESTATUS
-<< USER emily ONLINESTATUS OFFLINE
->> GET USER emily FULLNAME
-<< USER emily FULLNAME Emily
Index: otocols/skype/t/groupchat-invite-bitlbee.mock
===================================================================
--- protocols/skype/t/groupchat-invite-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,11 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
-<< PRIVMSG &bitlbee :chat with bob
->> 353 alice = ##alice/$bob;a7ab206ec78 :@alice @root
-<< INVITE cecil ##alice/$bob;a7ab206ec78
->> cecil@skype.com JOIN :##alice/$bob;a7ab206ec78
Index: otocols/skype/t/groupchat-invite-skyped.mock
===================================================================
--- protocols/skype/t/groupchat-invite-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,50 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS ONLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
->> CHAT CREATE bob
-<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS DIALOG
->> GET CHAT #alice/$bob;a7ab206ec78060f1 ADDER
-<< CHAT #alice/$bob;a7ab206ec78060f1 ADDER 
-<< CHAT #alice/$bob;a7ab206ec78060f1 NAME #alice/$bob;a7ab206ec78060f1
->> GET CHAT #alice/$bob;a7ab206ec78060f1 TOPIC
-<< CHAT #alice/$bob;a7ab206ec78060f1 TOPIC 
->> GET CHAT #alice/$bob;a7ab206ec78060f1 ACTIVEMEMBERS
-<< CHAT #alice/$bob;a7ab206ec78060f1 ACTIVEMEMBERS
-<< CHATMESSAGE 206 STATUS SENDING
-<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS DIALOG
-<< CHATMEMBER 204 ROLE USER
-<< CHAT #alice/$bob;a7ab206ec78060f1 MYROLE USER
-<< CHAT #alice/$bob;a7ab206ec78060f1 MEMBERS bob alice
-<< CHAT #alice/$bob;a7ab206ec78060f1 ACTIVEMEMBERS alice
-<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS DIALOG
-<< CHAT #alice/$bob;a7ab206ec78060f1 TIMESTAMP 1358344213
-<< CHAT #alice/$bob;a7ab206ec78060f1 DIALOG_PARTNER bob
-<< CHAT #alice/$bob;a7ab206ec78060f1 MEMBERS bob alice
-<< CHAT #alice/$bob;a7ab206ec78060f1 FRIENDLYNAME bob
->> ALTER CHAT #alice/$bob;a7ab206ec78060f1 ADDMEMBERS cecil
-<< ALTER CHAT ADDMEMBERS
-<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS MULTI_SUBSCRIBED
-<< CHAT #alice/$bob;a7ab206ec78060f1 MEMBERS bob cecil alice
->> GET CHAT #alice/$bob;a7ab206ec78060f1 ADDER
-<< CHAT #alice/$bob;a7ab206ec78060f1 ADDER 
-<< CHAT #alice/$bob;a7ab206ec78060f1 FRIENDLYNAME bob, cecil
->> GET CHAT #alice/$bob;a7ab206ec78060f1 TOPIC
-<< CHAT #alice/$bob;a7ab206ec78060f1 TOPIC 
-<< CHATMESSAGE 210 STATUS SENDING
Index: otocols/skype/t/groupchat-invited-bitlbee.mock
===================================================================
--- protocols/skype/t/groupchat-invited-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,8 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
Index: otocols/skype/t/groupchat-invited-skyped.mock
===================================================================
--- protocols/skype/t/groupchat-invited-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,58 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS OFFLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS OFFLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMEMBER 186 ROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMESSAGE 188 STATUS RECEIVED
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHATMESSAGE 188 FROM_HANDLE
-<< CHATMESSAGE 188 FROM_HANDLE bob
->> GET CHATMESSAGE 188 BODY
-<< CHATMESSAGE 188 BODY 
->> GET CHATMESSAGE 188 TYPE
-<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
->> GET CHATMESSAGE 188 CHATNAME
-<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMEMBER 186 IS_ACTIVE TRUE
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
-<< CHATMESSAGE 190 STATUS SENT
Index: otocols/skype/t/groupchat-leave-bitlbee.mock
===================================================================
--- protocols/skype/t/groupchat-leave-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,11 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
-<< PRIVMSG &bitlbee :account skype on
->> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
-<< PART ##cecil/$bob;4d8cc996579
->> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS UNSUBSCRIBED
Index: otocols/skype/t/groupchat-leave-skyped.mock
===================================================================
--- protocols/skype/t/groupchat-leave-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,57 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS OFFLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS OFFLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMEMBER 186 ROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMESSAGE 188 STATUS RECEIVED
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
->> GET CHATMESSAGE 188 FROM_HANDLE
-<< CHATMESSAGE 188 FROM_HANDLE bob
->> GET CHATMESSAGE 188 BODY
-<< CHATMESSAGE 188 BODY 
->> GET CHATMESSAGE 188 TYPE
-<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
->> GET CHATMESSAGE 188 CHATNAME
-<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMEMBER 186 IS_ACTIVE TRUE
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
-<< CHATMESSAGE 190 STATUS SENT
->> ALTER CHAT #cecil/$bob;4d8cc9965791c6b9 LEAVE
-<< ALTER CHAT LEAVE
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS UNSUBSCRIBED
Index: otocols/skype/t/groupchat-msg-bitlbee.mock
===================================================================
--- protocols/skype/t/groupchat-msg-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,11 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
-<< PRIVMSG &bitlbee :account skype on
->> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
-<< PRIVMSG ##cecil/$bob;4d8cc996579 :hello
->> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP
Index: otocols/skype/t/groupchat-msg-skyped.mock
===================================================================
--- protocols/skype/t/groupchat-msg-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,54 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS OFFLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS OFFLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMEMBER 186 ROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMESSAGE 188 STATUS RECEIVED
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
->> GET CHATMESSAGE 188 FROM_HANDLE
-<< CHATMESSAGE 188 FROM_HANDLE bob
->> GET CHATMESSAGE 188 BODY
-<< CHATMESSAGE 188 BODY 
->> GET CHATMESSAGE 188 TYPE
-<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
->> GET CHATMESSAGE 188 CHATNAME
-<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMEMBER 186 IS_ACTIVE TRUE
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
-<< CHATMESSAGE 190 STATUS SENT
->> CHATMESSAGE #cecil/$bob;4d8cc9965791c6b9 hello
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP 1364652882
Index: otocols/skype/t/groupchat-topic-bitlbee.mock
===================================================================
--- protocols/skype/t/groupchat-topic-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,10 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> JOIN :##cecil/$bob;4d8cc996579
->> 353 alice = ##cecil/$bob;4d8cc996579 :@alice @root
-<< TOPIC ##cecil/$bob;4d8cc996579 :topic
->> TOPIC ##cecil/$bob;4d8cc996579 :topic
Index: otocols/skype/t/groupchat-topic-skyped.mock
===================================================================
--- protocols/skype/t/groupchat-topic-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,60 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob, cecil
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS OFFLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER cecil ONLINESTATUS
-<< USER cecil ONLINESTATUS OFFLINE
->> GET USER cecil FULLNAME
-<< USER cecil FULLNAME Cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMEMBER 186 ROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
-<< CHATMESSAGE 188 STATUS RECEIVED
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
->> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC 
->> GET CHATMESSAGE 188 FROM_HANDLE
-<< CHATMESSAGE 188 FROM_HANDLE bob
->> GET CHATMESSAGE 188 BODY
-<< CHATMESSAGE 188 BODY 
->> GET CHATMESSAGE 188 TYPE
-<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
->> GET CHATMESSAGE 188 CHATNAME
-<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMESSAGE 189 STATUS READ
-<< CHATMEMBER 186 IS_ACTIVE TRUE
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
-<< CHATMESSAGE 190 STATUS SENT
->> ALTER CHAT #cecil/$bob;4d8cc9965791c6b9 SETTOPIC topic
-<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC topic
Index: otocols/skype/t/info-bitlbee.mock
===================================================================
--- protocols/skype/t/info-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
-<< PRIVMSG &bitlbee :info bob
->> PRIVMSG &bitlbee :Full Name: Bob
Index: otocols/skype/t/info-skyped.mock
===================================================================
--- protocols/skype/t/info-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,46 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> GET USER bob PHONE_HOME
-<< USER bob PHONE_HOME 
->> GET USER bob PHONE_OFFICE
-<< USER bob PHONE_OFFICE 
->> GET USER bob PHONE_MOBILE
-<< USER bob PHONE_MOBILE 
->> GET USER bob NROF_AUTHED_BUDDIES
-<< USER bob NROF_AUTHED_BUDDIES 145
->> GET USER bob TIMEZONE
-<< USER bob TIMEZONE 90000
->> GET USER bob LASTONLINETIMESTAMP
-<< USER bob LASTONLINETIMESTAMP 1358023469
->> GET USER bob SEX
-<< USER bob SEX MALE
->> GET USER bob LANGUAGE
-<< USER bob LANGUAGE hu Hungarian
->> GET USER bob COUNTRY
-<< USER bob COUNTRY hu Hungary
->> GET USER bob PROVINCE
-<< USER bob PROVINCE 
->> GET USER bob CITY
-<< USER bob CITY Budapest
->> GET USER bob HOMEPAGE
-<< USER bob HOMEPAGE 
->> GET USER bob ABOUT
-<< USER bob ABOUT 
->> GET USER bob BIRTHDAY
-<< USER bob BIRTHDAY 19781108
Index: otocols/skype/t/login-bitlbee.mock
===================================================================
--- protocols/skype/t/login-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,7 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> PRIVMSG &bitlbee :skype - Logging in: Logged in
Index: otocols/skype/t/login-skyped.mock
===================================================================
--- protocols/skype/t/login-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,16 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
Index: otocols/skype/t/msg-bitlbee.mock
===================================================================
--- protocols/skype/t/msg-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype on
->> :bob!bob@skype.com JOIN :&bitlbee
-<< PRIVMSG &bitlbee :bob: foo
->> :bob!bob@skype.com PRIVMSG &bitlbee :alice: bar
Index: otocols/skype/t/msg-skyped.mock
===================================================================
--- protocols/skype/t/msg-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,49 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123, bob
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> GET USER bob ONLINESTATUS
-<< USER bob ONLINESTATUS ONLINE
->> GET USER bob FULLNAME
-<< USER bob FULLNAME Bob
->> MESSAGE bob foo
-<< CHATMESSAGE 290 STATUS SENDING
-<< CHAT #alice/$bob;ea753190f0a3e49b NAME #alice/$bob;ea753190f0a3e49b
-<< CHAT #alice/$bob;ea753190f0a3e49b STATUS DIALOG
-<< CHATMEMBER 287 ROLE USER
-<< CHAT #alice/$bob;ea753190f0a3e49b MYROLE USER
-<< CHAT #alice/$bob;ea753190f0a3e49b MEMBERS alice bob
-<< CHAT #alice/$bob;ea753190f0a3e49b ACTIVEMEMBERS alice
-<< CHAT #alice/$bob;ea753190f0a3e49b STATUS DIALOG
-<< CHAT #alice/$bob;ea753190f0a3e49b TIMESTAMP 1357987847
-<< CHAT #alice/$bob;ea753190f0a3e49b DIALOG_PARTNER bob
-<< CHAT #alice/$bob;ea753190f0a3e49b MEMBERS alice bob
-<< CHAT #alice/$bob;ea753190f0a3e49b FRIENDLYNAME bob | foo
-<< CHAT #alice/$bob;ea753190f0a3e49b POSTERS alice
-<< CHAT #alice/$bob;ea753190f0a3e49b ACTIVITY_TIMESTAMP 1357987847
-<< CHAT #alice/$bob;ea753190f0a3e49b FRIENDLYNAME bob | foo
-<< CHATMESSAGE 289 STATUS SENDING
-<< CHATMESSAGE 290 STATUS SENDING
-<< CHATMESSAGE 289 STATUS SENT
-<< CHATMESSAGE 290 STATUS SENT
-<< CHATMEMBER 288 IS_ACTIVE TRUE
-<< CHAT #alice/$bob;ea753190f0a3e49b ACTIVEMEMBERS alice bob
-<< CHAT #alice/$bob;ea753190f0a3e49b POSTERS alice bob
-<< CHAT #alice/$bob;ea753190f0a3e49b ACTIVITY_TIMESTAMP 1357987875
-<< CHATMESSAGE 293 STATUS RECEIVED
->> GET CHATMESSAGE 293 FROM_HANDLE
-<< CHATMESSAGE 293 FROM_HANDLE bob
->> GET CHATMESSAGE 293 BODY
-<< CHATMESSAGE 293 BODY bar
->> GET CHATMESSAGE 293 TYPE
-<< CHATMESSAGE 293 TYPE SAID
->> GET CHATMESSAGE 293 CHATNAME
-<< CHATMESSAGE 293 CHATNAME #alice/$bob;ea753190f0a3e49b
Index: otocols/skype/t/set-mood-text-bitlbee.mock
===================================================================
--- protocols/skype/t/set-mood-text-bitlbee.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,9 +1,0 @@
->> NOTICE *
-<< NICK alice
-<< USER alice alice localhost :Alice
->> PRIVMSG &bitlbee
-<< PRIVMSG &bitlbee :account add skype alice foo
-<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
-<< PRIVMSG &bitlbee :account skype on
-<< PRIVMSG &bitlbee :account skype set mood_text "foo bar"
->> PRIVMSG &bitlbee :alice: PROFILE MOOD_TEXT foo bar
Index: otocols/skype/t/set-mood-text-skyped.mock
===================================================================
--- protocols/skype/t/set-mood-text-skyped.mock	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,14 +1,0 @@
->> SEARCH GROUPS CUSTOM
-<< GROUPS 48, 49
->> SEARCH FRIENDS
-<< USERS echo123
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> SET USERSTATUS ONLINE
-<< USERSTATUS ONLINE
->> GET USER echo123 ONLINESTATUS
-<< USER echo123 ONLINESTATUS ONLINE
->> GET USER echo123 FULLNAME
-<< USER echo123 FULLNAME Echo / Sound Test Service
->> SET PROFILE MOOD_TEXT foo bar
-<< PROFILE MOOD_TEXT foo bar
Index: otocols/skype/test.py
===================================================================
--- protocols/skype/test.py	(revision 8167346dd5d87b0bc53c7e396577e19e586954fe)
+++ 	(revision )
@@ -1,147 +1,0 @@
-#!/usr/bin/env python2.7
-
-import subprocess
-import sys
-import pexpect
-import unittest
-import shutil
-import os
-import hashlib
-
-def openssl(args):
-	with open(os.devnull, "w") as devnull:
-		proc = subprocess.Popen(['openssl'] + args, stdin=subprocess.PIPE, stderr=devnull)
-		for i in range(6):
-			proc.stdin.write("\n")
-		proc.stdin.close()
-		proc.communicate()
-def setupSkyped():
-	try:
-		shutil.rmtree("t/skyped")
-	except OSError:
-		pass
-	os.makedirs("t/skyped")
-	cwd = os.getcwd()
-	os.chdir("t/skyped")
-	try:
-		shutil.copyfile("../../skyped.cnf", "skyped.cnf")
-		openssl(['req', '-new', '-x509', '-days', '365', '-nodes', '-config', 'skyped.cnf', '-out', 'skyped.cert.pem', '-keyout', 'skyped.key.pem'])
-		with open("skyped.conf", "w") as sock:
-			sock.write("[skyped]\n")
-			sock.write("username = alice\n")
-			sock.write("password = %s\n" % hashlib.sha1("foo").hexdigest())
-			sock.write("cert = %s/skyped.cert.pem\n" % os.getcwd())
-			sock.write("key = %s/skyped.key.pem\n" % os.getcwd())
-			sock.write("port = 2727\n")
-	finally:
-		os.chdir(cwd)
-
-class Test(unittest.TestCase):
-	def mock(self, name):
-		with open("t/skyped.log", "w") as skyped_log,\
-				open("t/pexpect.log", "w") as pexpect_log:
-			skyped = subprocess.Popen([sys.executable, "skyped.py",
-				"-c", "t/skyped/skyped.conf", "-n", "-d", "-m", "t/%s-skyped.mock" % name],
-				stdout=skyped_log, stderr=subprocess.STDOUT)
-			try:
-				bitlbee = pexpect.spawn('../../bitlbee', ['-d', 't/bitlbee'], logfile=pexpect_log)
-				if os.environ.get('ATTACH_GDB'):
-					subprocess.Popen(['gdb', '-batch-silent',
-						'-ex', 'set logging overwrite on',
-						'-ex', 'set logging file t/gdb-%s.log' % bitlbee.pid,
-						'-ex', 'set logging on',
-						'-ex', 'handle all pass nostop noprint',
-						'-ex', 'handle SIGSEGV pass stop print',
-						'-ex', 'set pagination 0',
-						'-ex', 'continue',
-						'-ex', 'backtrace full',
-						'-ex', 'info registers',
-						'-ex', 'thread apply all backtrace',
-						'-ex', 'quit',
-						'../../bitlbee', str(bitlbee.pid) ])
-				bitlbee_mock = open("t/%s-bitlbee.mock" % name)
-				for i in bitlbee_mock.readlines():
-					line = i.strip()
-					if line.startswith(">> "):
-						bitlbee.expect_exact(line[3:], timeout=10)
-					elif line.startswith("<< "):
-						bitlbee.sendline(line[3:])
-				bitlbee_mock.close()
-				bitlbee.close()
-			finally:
-				skyped.terminate()
-				skyped.communicate()
-
-	def setUp(self):
-		try:
-			shutil.rmtree("t/bitlbee")
-		except OSError:
-			pass
-		os.makedirs("t/bitlbee")
-
-	def testMsg(self):
-		self.mock("msg")
-
-	def testLogin(self):
-		self.mock("login")
-
-	def testInfo(self):
-		self.mock("info")
-
-	def testCall(self):
-		self.mock("call")
-
-	def testCallFailed(self):
-		self.mock("call-failed")
-
-	def testAddYes(self):
-		self.mock("add-yes")
-
-	def testAddedYes(self):
-		self.mock("added-yes")
-
-	def testAddedNo(self):
-		self.mock("added-no")
-
-	def testGroupchatInvited(self):
-		self.mock("groupchat-invited")
-
-	def testGroupchatInvite(self):
-		self.mock("groupchat-invite")
-
-	def testGroupchatLeave(self):
-		self.mock("groupchat-leave")
-	
-	def testGroupchatMsg(self):
-		self.mock("groupchat-msg")
-	
-	def testGroupchatTopic(self):
-		self.mock("groupchat-topic")
-	
-	def testCalledYes(self):
-		self.mock("called-yes")
-
-	def testCalledNo(self):
-		self.mock("called-no")
-
-	def testFiletransfer(self):
-		self.mock("filetransfer")
-
-	def testGroupRead(self):
-		self.mock("group-read")
-
-	def testGroupAdd(self):
-		self.mock("group-add")
-
-	def testCtcpHelp(self):
-		self.mock("ctcp-help")
-
-	def testSetMoodText(self):
-		self.mock("set-mood-text")
-	
-	def testAwaySet(self):
-		self.mock("away-set")
-
-if __name__ == '__main__':
-	setupSkyped()
-	unittest.main()
