diff options
author | Martin Lucina <mato@kotelna.sk> | 2010-09-04 15:55:11 +0200 |
---|---|---|
committer | Martin Lucina <mato@kotelna.sk> | 2010-09-04 15:55:11 +0200 |
commit | 32baeb610e779862b58c56f66571b01599743a9e (patch) | |
tree | 2f4bdeda6980252cc0a80ecb18a7141066a1f511 | |
parent | 4cb6dbd52f5ab65350a448ceb07ff77eacc2b84c (diff) |
Revert "Various changes to documentation project:"
This reverts commit 77a3c36ff1f11215229a4efdb821a3cb83a9d6fc.
33 files changed, 155 insertions, 156 deletions
diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf index c20001b..15633a3 100644 --- a/doc/asciidoc.conf +++ b/doc/asciidoc.conf @@ -33,21 +33,6 @@ template::[header-declarations] <refname>{manname}</refname> <refpurpose>{manpurpose}</refpurpose> </refnamediv> -[footer] -<refsect1 id="_authors"> -<title>AUTHORS</title> -<simpara>Man pages by Martin Lucina <<ulink url="mailto:mato@kotelna.sk">mato@kotelna.sk</ulink>>, Martin Sustrik <<ulink url="mailto:sustrik@250bpm.com">sustrik@250bpm.com</ulink>>, and Pieter Hintjens <<ulink url="mailto:ph@imatix.com">ph@imatix.com</ulink>>.</simpara> -</refsect1> -<refsect1 id="_resources"> -<title>RESOURCES</title> -<simpara>Main web site: <ulink url="http://www.zeromq.org/">http://www.zeromq.org/</ulink></simpara> -<simpara>Report bugs to the 0MQ development mailing list: <<ulink url="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</ulink>></simpara> -</refsect1> -<refsect1 id="_copyright"> -<title>COPYRIGHT</title> -<simpara>Copyright (c) 2007-2010 iMatix Corporation and contributors. License LGPLv3+: GNU LGPL 3 or later <<ulink url="http://gnu.org/licenses/lgpl.html">http://gnu.org/licenses/lgpl.html</ulink>>. This is free software: you are free to change it and redistribute it. There is NO WARRANTY, to the extent permitted by law. For details see the files <literal>COPYING</literal> and <literal>COPYING.LESSER</literal> included with the 0MQ distribution.</simpara> -</refsect1> -</refentry> endif::backend-docbook[] endif::doctype-manpage[] diff --git a/doc/zmq.txt b/doc/zmq.txt index d8f398e..06658c9 100644 --- a/doc/zmq.txt +++ b/doc/zmq.txt @@ -199,3 +199,22 @@ Other language bindings Other language bindings (Python, Ruby, Java and more) are provided by members of the 0MQ community and pointers can be found on the 0MQ website. + +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. + + +RESOURCES +--------- +Main web site: <http://www.zeromq.org/> + +Report bugs to the 0MQ development mailing list: <zeromq-dev@lists.zeromq.org> + + +COPYING +------- +Free use of this software is granted under the terms of the GNU Lesser General +Public License (LGPL). For details see the files `COPYING` and `COPYING.LESSER` +included with the 0MQ distribution. diff --git a/doc/zmq_bind.txt b/doc/zmq_bind.txt index 3ad62e7..7aa5a0b 100644 --- a/doc/zmq_bind.txt +++ b/doc/zmq_bind.txt @@ -70,8 +70,8 @@ assert (socket); /* Bind it to a in-process transport with the address 'my_publisher' */ int rc = zmq_bind (socket, "inproc://my_publisher"); assert (rc == 0); -/* Bind it to a TCP transport on port 5555 of all local interfaces */ -rc = zmq_bind (socket, "tcp://*:5555"); +/* Bind it to a TCP transport on port 5555 of the 'eth0' interface */ +rc = zmq_bind (socket, "tcp://eth0:5555"); assert (rc == 0); ---- @@ -82,3 +82,8 @@ linkzmq:zmq_connect[3] linkzmq:zmq_socket[3] linkzmq:zmq[7] + +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_close.txt b/doc/zmq_close.txt index 7936fca..e903437 100644 --- a/doc/zmq_close.txt +++ b/doc/zmq_close.txt @@ -42,3 +42,7 @@ linkzmq:zmq_term[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_connect.txt b/doc/zmq_connect.txt index 4476d3d..ffcf3b4 100644 --- a/doc/zmq_connect.txt +++ b/doc/zmq_connect.txt @@ -81,3 +81,7 @@ linkzmq:zmq_socket[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_cpp.txt b/doc/zmq_cpp.txt index e25f460..d43ff62 100644 --- a/doc/zmq_cpp.txt +++ b/doc/zmq_cpp.txt @@ -204,3 +204,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_deviced.txt b/doc/zmq_deviced.txt deleted file mode 100644 index e5ba83f..0000000 --- a/doc/zmq_deviced.txt +++ /dev/null @@ -1,123 +0,0 @@ -zmq_deviced(1) -============== - -NAME ----- -zmq_deviced - start built-in 0MQ devices - -SYNOPSIS --------- - -*zmq_deviced _DEVICE_ _FRONTEND_ _BACKEND_* - -*zmq_deviced [_CONFIGFILE_]* - -DESCRIPTION ------------ -Starts one or more 0MQ devices. If you specify a DEVICE, FRONTEND, and BACKEND then _zmq_device_ starts a single device acting as a mini-broker. If you specify a CONFIGFILE, you can configure _zmq_device_ to start multiple concurrent devices with arbitrary configurations. - -*Note* - zmq_deviced is not yet implemented. This is a design. - -MINI-BROKER USAGE ------------------ -Runs as a mini-broker that accepts connects to both frontend and backend. This creates a hub-and-spoke topology in which all peers connect to the device. This is a robust and easy to manage topology. - -DEVICE is one of: *queue*, *forwarder*, or *streamer*. See linkzmq:zmq_device[3] for a specification of these device types. - -FRONTEND and BACKEND are endpoints in the format 'transport'`://`'address', See linkzmq:zmq_bind[3] for a specification of valid transports and addresses. - - -CONFIGURED USAGE ----------------- -CONFIGFILE is the name of an XML file, readable by 'zmq_device'. This file provides a specification of the devices to start and how to connect and/or bind their frontends and backends. If CONFIGFILE is absent or *-* then the configuration is read from standard input. - -The configuration file has this general syntax: - ----- -<?xml?> -<config [ iothreads="..." ] > - <device type="..."> - <frontend [ type="..." ] > - <set name = "..." value = "..." />... - <bind endpoint="..." /> ... - <connect address="..." /> ... - </frontend> - <backend [ type="..." ] > - <set name = "..." value = "..." />... - <bind address="..." /> ... - <connect address="..." /> ... - </backend> - </device> -</config> ----- - -*iothreads*:: - specifies the number of I/O threads for the process. Specify this only for high-volume scenarios. See linkzmq:zmq_init[3]. -*device*:: - defines one device. For each device element you define, 'zmq_device' will start a thread. -*frontend*:: - defines the frontend for the device. Occurs once per device element. You may override the default socket type. -*backend*:: - defines the backend for the device. Occurs once per device element. You may override the default socket type. -*set*:: - defines a socket option for the frontend or backend. The valid names are *hwm*, *swap*, *identity*, *subscribe*, *unsubscribe*, *rate*, *recovery_ivl*, *mcast_loop*, *sndbuf*, and *rcvbuf*. See linkzmq:zmq_setsockopt[3]. -*bind*:: - binds the frontend or backend to the specified endpoint. See linkzmq:zmq_bind[3]. -*connect*:: - binds the frontend or backend to the specified endpoint. See linkzmq:zmq_connect[3]. - -SOCKET TYPES ------------- - -By default 'zmq_device' uses these socket types: - -*queue* device:: - frontend is *xrep*, backend is *xreq*. -*forwarder* device:: - frontend is *sub*, backend is *pub*. -*streamer* device:: - frontend is *pull*, backend is *push*. - -You can override the socket type for frontend or backend. The valid types are: *req*, *rep*, *xreq*, *xrep*, *sub*, *pub*, *pull*, *push*, and *pair*. See linkzmq:zmq_socket[3]. - -*Note*: if you use a *sub* socket you must explicitly set a subscription filter or your socket will not receive any data. - - -EXAMPLE -------- - -.Creating a queue broker ----- -zmq_device queue tcp://*:5050 tcp://*:5051 ----- - -.A TCP-to-multicast proxy forwarder ----- -zmq_device - -<?xml?> -<config> - <device type="forwarder"> - <frontend> - <!-- subscribe to everything --> - <set name = "subscribe" value = "" /> - <!-- connect to two publishers --> - <connect address="tcp://192.168.55.112:5055" /> - <connect address="tcp://192.168.55.114:5055" /> - </frontend> - <backend> - <!-- bind to epgm group via eth0 --> - <bind address="epgm://eth0;239.192.1.1:5555" /> - </backend> - </device> -</config> ----- - - -SEE ALSO --------- -linkzmq:zmq_device[3] -linkzmq:zmq_init[3] -linkzmq:zmq_setsockopt[3] -linkzmq:zmq_bind[3] -linkzmq:zmq_connect[3] -linkzmq:zmq[7] diff --git a/doc/zmq_errno.txt b/doc/zmq_errno.txt index e3e9ab2..61939a5 100644 --- a/doc/zmq_errno.txt +++ b/doc/zmq_errno.txt @@ -44,3 +44,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_forwarder.txt b/doc/zmq_forwarder.txt index ae6ae9b..b3325f2 100644 --- a/doc/zmq_forwarder.txt +++ b/doc/zmq_forwarder.txt @@ -27,3 +27,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt index d8138f7..1e36a2a 100644 --- a/doc/zmq_getsockopt.txt +++ b/doc/zmq_getsockopt.txt @@ -237,3 +237,7 @@ linkzmq:zmq_socket[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_init.txt b/doc/zmq_init.txt index 60c85eb..04bbbc8 100644 --- a/doc/zmq_init.txt +++ b/doc/zmq_init.txt @@ -40,3 +40,7 @@ linkzmq:zmq[7] linkzmq:zmq_term[3] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_inproc.txt b/doc/zmq_inproc.txt index b0c6a6b..2805f71 100644 --- a/doc/zmq_inproc.txt +++ b/doc/zmq_inproc.txt @@ -83,3 +83,7 @@ linkzmq:zmq_pgm[7] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_ipc.txt b/doc/zmq_ipc.txt index 24475e9..81f6747 100644 --- a/doc/zmq_ipc.txt +++ b/doc/zmq_ipc.txt @@ -74,3 +74,7 @@ linkzmq:zmq_pgm[7] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_close.txt b/doc/zmq_msg_close.txt index 1394a4e..1da353b 100644 --- a/doc/zmq_msg_close.txt +++ b/doc/zmq_msg_close.txt @@ -48,3 +48,7 @@ linkzmq:zmq_msg_size[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_copy.txt b/doc/zmq_msg_copy.txt index 49e761c..f41a42e 100644 --- a/doc/zmq_msg_copy.txt +++ b/doc/zmq_msg_copy.txt @@ -50,3 +50,7 @@ linkzmq:zmq_msg_close[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_data.txt b/doc/zmq_msg_data.txt index cb90db7..dbf6612 100644 --- a/doc/zmq_msg_data.txt +++ b/doc/zmq_msg_data.txt @@ -42,3 +42,7 @@ linkzmq:zmq_msg_close[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_init.txt b/doc/zmq_msg_init.txt index d34be79..d31dbae 100644 --- a/doc/zmq_msg_init.txt +++ b/doc/zmq_msg_init.txt @@ -59,3 +59,7 @@ linkzmq:zmq_msg_size[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_init_data.txt b/doc/zmq_msg_init_data.txt index a9cefff..8378757 100644 --- a/doc/zmq_msg_init_data.txt +++ b/doc/zmq_msg_init_data.txt @@ -74,3 +74,7 @@ linkzmq:zmq_msg_size[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_init_size.txt b/doc/zmq_msg_init_size.txt index ddc004a..b4ef393 100644 --- a/doc/zmq_msg_init_size.txt +++ b/doc/zmq_msg_init_size.txt @@ -52,3 +52,7 @@ linkzmq:zmq_msg_size[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_move.txt b/doc/zmq_msg_move.txt index 97f07bf..75c8e74 100644 --- a/doc/zmq_msg_move.txt +++ b/doc/zmq_msg_move.txt @@ -45,3 +45,7 @@ linkzmq:zmq_msg_close[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_msg_size.txt b/doc/zmq_msg_size.txt index ecbe045..05abfa6 100644 --- a/doc/zmq_msg_size.txt +++ b/doc/zmq_msg_size.txt @@ -42,3 +42,7 @@ linkzmq:zmq_msg_close[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_pgm.txt b/doc/zmq_pgm.txt index 862cbd6..4017db2 100644 --- a/doc/zmq_pgm.txt +++ b/doc/zmq_pgm.txt @@ -151,4 +151,7 @@ linkzmq:zmq_ipc[7] linkzmq:zmq_inproc[7] linkzmq:zmq[7] - +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_poll.txt b/doc/zmq_poll.txt index b077629..fe2a209 100644 --- a/doc/zmq_poll.txt +++ b/doc/zmq_poll.txt @@ -129,3 +129,7 @@ linkzmq:zmq[7] Your operating system documentation for the _poll()_ system call. +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_queue.txt b/doc/zmq_queue.txt index 2d198cf..a3f84f2 100644 --- a/doc/zmq_queue.txt +++ b/doc/zmq_queue.txt @@ -27,3 +27,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_recv.txt b/doc/zmq_recv.txt index 326d78c..dc60af6 100644 --- a/doc/zmq_recv.txt +++ b/doc/zmq_recv.txt @@ -110,3 +110,7 @@ linkzmq:zmq_socket[7] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_send.txt b/doc/zmq_send.txt index ace4a66..793d1a8 100644 --- a/doc/zmq_send.txt +++ b/doc/zmq_send.txt @@ -105,3 +105,7 @@ linkzmq:zmq_socket[7] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_setsockopt.txt b/doc/zmq_setsockopt.txt index e2869e3..1b551c6 100644 --- a/doc/zmq_setsockopt.txt +++ b/doc/zmq_setsockopt.txt @@ -269,3 +269,7 @@ linkzmq:zmq_socket[3] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_socket.txt b/doc/zmq_socket.txt index 23a79e4..41e62c5 100644 --- a/doc/zmq_socket.txt +++ b/doc/zmq_socket.txt @@ -216,24 +216,22 @@ is connected to at least one _node_. When a pipeline stage is connected to multiple _nodes_ data is load-balanced among all connected _nodes_. -ZMQ_PUSH -^^^^^^^^ -A socket of type 'ZMQ_PUSH' is used by a pipeline _node_ to send messages +ZMQ_DOWNSTREAM +^^^^^^^^^^^^^^ +A socket of type 'ZMQ_DOWNSTREAM' is used by a pipeline _node_ to send messages to downstream pipeline _nodes_. Messages are load-balanced to all connected downstream _nodes_. The _zmq_recv()_ function is not implemented for this socket type. -When a 'ZMQ_PUSH' socket enters an exceptional state due to having +When a 'ZMQ_DOWNSTREAM' socket enters an exceptional state due to having reached the high water mark for all downstream _nodes_, or if there are no downstream _nodes_ at all, then any linkzmq:zmq_send[3] operations on the socket shall block until the exceptional state ends or at least one downstream _node_ becomes available for sending; messages are not discarded. -Deprecated alias: ZMQ_DOWNSTREAM. - [horizontal] -.Summary of ZMQ_PUSH characteristics -Compatible peer sockets:: 'ZMQ_PULL' +.Summary of ZMQ_DOWNSTREAM characteristics +Compatible peer sockets:: 'ZMQ_UPSTREAM' Direction:: Unidirectional Send/receive pattern:: Send only Incoming routing strategy:: N/A @@ -241,18 +239,16 @@ Outgoing routing strategy:: Load-balanced ZMQ_HWM option action:: Block -ZMQ_PULL -^^^^^^^^ -A socket of type 'ZMQ_PULL' is used by a pipeline _node_ to receive +ZMQ_UPSTREAM +^^^^^^^^^^^^ +A socket of type 'ZMQ_UPSTREAM' is used by a pipeline _node_ to receive messages from upstream pipeline _nodes_. Messages are fair-queued from among all connected upstream _nodes_. The _zmq_send()_ function is not implemented for this socket type. -Deprecated alias: ZMQ_UPSTREAM. - [horizontal] -.Summary of ZMQ_PULL characteristics -Compatible peer sockets:: 'ZMQ_PUSH' +.Summary of ZMQ_UPSTREAM characteristics +Compatible peer sockets:: 'ZMQ_DOWNSTREAM' Direction:: Unidirectional Send/receive pattern:: Receive only Incoming routing strategy:: Fair-queued @@ -317,3 +313,8 @@ linkzmq:zmq_send[3] linkzmq:zmq_recv[3] linkzmq:zmq[7] + +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_streamer.txt b/doc/zmq_streamer.txt index 5f142f7..c8d517b 100644 --- a/doc/zmq_streamer.txt +++ b/doc/zmq_streamer.txt @@ -27,3 +27,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_strerror.txt b/doc/zmq_strerror.txt index 0624c59..61f30e3 100644 --- a/doc/zmq_strerror.txt +++ b/doc/zmq_strerror.txt @@ -49,3 +49,7 @@ SEE ALSO linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_tcp.txt b/doc/zmq_tcp.txt index b96f3df..29fa181 100644 --- a/doc/zmq_tcp.txt +++ b/doc/zmq_tcp.txt @@ -156,3 +156,7 @@ linkzmq:zmq_inproc[7] linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_term.txt b/doc/zmq_term.txt index 10455dd..f3ffa01 100644 --- a/doc/zmq_term.txt +++ b/doc/zmq_term.txt @@ -52,3 +52,8 @@ SEE ALSO linkzmq:zmq[7] linkzmq:zmq_init[3] + +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. diff --git a/doc/zmq_version.txt b/doc/zmq_version.txt index e5cf0c4..0ad3a55 100644 --- a/doc/zmq_version.txt +++ b/doc/zmq_version.txt @@ -47,3 +47,7 @@ SEE ALSO -------- linkzmq:zmq[7] +AUTHORS +------- +The 0MQ documentation was written by Martin Sustrik <sustrik@250bpm.com> and +Martin Lucina <mato@kotelna.sk>. |