According to what happens on the hub or the command you made, the client will 
display message(s).

All messages have the following form:
xxxxx] "yyyyyy"aaaaaaaaa|

where:
* xxxxx is a 5 characters string identifying the type of the message (see below).
  Let's name it MTYPE.
* yyyyyy is mainly used by debug functions. Most of the type, yyyyyy is an empty
  string else it is the function name.
* aaaa is a set of one or more strings (separated by | if more than one string).
  The line always ends with a |. Let's name it INS.

List of MTYPE:
* "ERR  ": it is an error message.

* "DEBUG": it is a debug message. Unless you have enabled the debug mode, you 
           will never receive messages of this type. They are only here to 
           make debug easier.

* "INFO ": it is an information. The message contains various information.
           You can ignore messages of this type. They will progressively
           be removed and replaced by DEBUG.

* "USER ": You will receive this message after using /ULIST (to obtain hub
           user list). INS contains 1 user nickname. There is 1 message
           per user.

* "OP   ": same as "USER " but the nickname is an operator nickname
           operators also appear in the USER list.

* "USER+": a user has entered in the hub. INS contains the user nickname.

* "USER-": a user has left the hub. INS contains the user nickname.

* "UINFO": after using /UINFO, you will recieved the requested user information.
           It is not necessary to call this function after you receive a USER+,
           you only should have to use it after a /ULIST. INS has the following
           content: "aaa bbb ccc [(ddd)eee] 'ffff' gggg"
             where: aaa is the user nickname
                    bbb is the size of user shared data (in bytes)
                    ccc is the type of connection (see /CNX for connection type)
                    ddd is a flag having the following meaning:
                               bit 0: always on
                               bit 1: if set, the user is here else he is away.
                    eee you can ignore this field, it is the human readable form
                        of ddd.
                    fff is the user email (can be an empty string)
                    ggg is the user description (can be an empty string)

* "CHAT ": it is a incoming message in the public chat. INS is the message. To
           avoid problem, the \n inside message are replaced by \r.

* "HUBNM": it is the hub name. INS is the hub name.

* "SREST": after using /SRCH, you should receive some messages of this type
           which are the result of your search. 1 result per message. INS has
           the following format: aaa|bbb|ccc|ddd|eee|fff
           where: aaa is the user nickname
                  bbb is the file name (including its path. \ is the separator)
                  ccc is the file size
                  ddd is the free slot ratio ("f/t": f=free slot, t=total slot)
                  eee is the hubname
                  fff is the hubip
           after fff, you may have an optional field (named ggg). ggg exists only
           if this search result is a content search result (/CSRCH). In this
           case, ggg is the name of the searched local file (the one given to
           the /CSRCH command).

* "$USER": unused

* "$UL+ ": an upload starts (=someone download from your computer).
           INS is "aaa|bbb" where aaa is the downloader nickname and bbb is the
           local filename.

* "$UL= ": an upload is now running. INS is same as "XFERR".

* "$UL- ": an upload is successfully done. INS is same as "$UL+ ".

* "$UL# ": an upload is aborted. INS is same as "$UL+ ".

* "$DL+ ": you start a download. INS is same as "$UL+ ".

* "$DL= ": a download is now running. INS is same as in "XFERR".

* "$DL- ": a download is successfully done. INS is same as "$UL+ ".

* "$DL# ": a download is aborted. INS is same as "$UL+ ".
           INS can also be aaa|bbb|ccc where ccc is the reason of the error.
           If the error is recoverable (a network error is, a disk full is not),
           download task is automatically requeued inside CMDKB queue to be
           restarted.

* "$LS+ ": a user file list download starts. INS is the remote nickname.

* "$LS- ": a user file list download successfully ends. INS is the remote
           nickname.

* "$LS# ": a user file list download fails. INS is the remote nickname.

* "HUB+ ": the hub has been reached.

* "HUB- ": you have been disconnected from the hub. INS is just a text string.
           Until all running transfer end, the client will not end. (see /KILL).

           Be careful: you can receive more HUB- message than HUB+. After a
           hub disconnection, you may receive a HUB- for each reconnection
           try.

* "PRIV ": you receive a private message from another user. INS content is 
           "aaa|bbb" where aaa is a nickname and bbb the message content.
           bbb has always the format: "<xxx> speech" where xxx is the nick
           of the user saying "speech". 

           Example. You are AAA, Other user is CCC. and both say BBB.
           you do: /PRIV CCC BBB
                   you will receive "CCC|<AAA> BBB" (it is the local echo).
           if you receive "CCC|<CCC> BBB", this means the other user sends
           you BBB.
           Thus, you can always use CCC to associate a private chat to a user.

* "XFERR": First, it is not a transfer error. It is an entry in the transfer
           running list. INS is "aaa|bbb|ccc" where aaa is an ID identifying
           this transfer (see /KILL). bbb is the nickname of the remote user
           (the one downloading or the one from where you download). ccc
           is:
                Idle       : it is a not yet started transfer.
                LS/        : it is a download. You are retrieving user shared
                             file list.
                UL/ficname : it is an upload, ficname is the local filename.
                DL/xxxxxxx : it is a download, where xxxxxxx is:
                   ddd|eee|fff|ggg|hhh|iii:jjj
               - ddd is the remote filename (followed by a $ and a digit).
               - eee is the local filename.
               - fff is the download start position in byte.
               - ggg is the size of the complete file.
               - hhh is the download start time (obtained using time()).
               - iii is the remote host name (the IP or the FQDN)
               - jjj is the remote host port
        
                
* "XFERQ": It is an entry in the list of queued (not yet started) transfer. INS
           is "eee|aaa*bbb*ccc*ddd". * is a separator. It can be any character
           except a character used by aaa,bbb,ccc or ddd, \0 and \n.
           eee is the nickname of the remote user
           aaa is "DL/" (it is a download)
           bbb is the name of the local file (with path)
           ccc is the name of the remote file (with path)
           ddd is the download start position.

           INS can also be "eee|aaa".eee is always the nickname and aaa is "LS/"

* "CMDKB": it is a keyboard command which has been internally sent. INS is 
           "nnn|aaa|bbb". nnn is a number identifying this entry. aaa is a start
           date (in time() format). bbb is the command to start. When the given
           date is reached, the command bbb is sent to the keyboard interpreter
           like a command you have enter manually.

* "$DL~ ": a queued download has been removed because it is too old (remote user
           does not respond or is also behind a firewall). Download tasks are
           automatically requeued inside CMDKB queue to be restarted.

* "HUBGO": sometimes, the hub can redirect you to another hub. INS is the
           address of the hub where you should go. 

           Note: when receiving this hub redirection, the client doesn't do
           anything. You must manually reconnect to the new hub.

* "FLSTB": the code notifies the beginning of a user shared file list.
           aaa is the remote user nickname.

* "FLST ": line starting with this code is generated after you use /LS command.
           Each FLST contains the full name of a file shared by a user. INS is
           "aaa|bbb|ccc" where aaa is the remote user nickname, bbb is the
           filename (with its path) and ccc is the filesize. Only files are
           contained in this code, no directory.

* "FLSTE": the code notifies the end of a user shared file list. INS is
           "aaa|bbb|ccc" where aaa is the remote user nickname, bbb is the
           number of shared file in the list and ccc is the size in byte of all
           the shared files.

* "ASTRT": the code notifies a command from the CMDKB list starts. INS is the
           command to start.

* "ASTOP": the code notifies a command is added to the CMDKB list. INS is the
           added command.

* "RFRSH": a transfer connection has ended.

* "BXFER": beginning of the xfer list. After this, you will receive XFERR, XFERQ
           and CMDKB. INS is empty.

* "EXFER": end of the xfer list. INS is empty.

* "VAR  ": display an internal var. INS is aaa|bbb where aaa is the var name
           and bbb is its value. See Documentations/VAR file for the list of
           var names.

* "PASWD": the hub wants the client to provide a password for this nickname.
           Use /PASSWD to provide one.

* "ADMIN": the user is logged as an admin on the hub

* "$ULST": this message contains the statistics of an upload. INS is like this:
           "aaa:bbb/ccc/ddd/eee" where a is an ID identifying the transfer (the
           same as in /XFERR), bbb is the upload start position, ccc is the
           total file length (not just the part to send), ddd is the amount
           of data already sent (not including bbb) and eee is number of bytes
           to send. Currently, we have the following relation:
              bbb+eee=ccc  and 0<ddd<eee.

* "PRGBR": this message is used to report the status of a task using a progress
           bar. INS is like this "aaa|bbb|ccc[|ddd....]" where:
              aaa is the name of this progress bar (you can have more than one
                  at the same time).
              bbb is the % of completion (use 0 to initiate a new bar and 100
                  to end a bar).
              ccc, ddd, ... are text to display inside the bar. You must have
                  at least 1 text to display.
                 (if the text should contain \n, they have been replaced by \r).

* "GQLSB": beginning of the GDL quick list 

* "GQLSC": content of one entry inside the GDL quick list. INS is "aaa|bbb|ccc".
           where: aaa is the GDL ID.
                  bbb is the local filename
                  ccc is the size of the file

* "GQLSE": end of the GDL quick list 

* "GLSTB": beginning of the GDL full list

* "GLSTC": content of one entry inside the GDL full list. INS is 
           "aaa|bbb|ccc|xxx|yyy|zzz|uuu|vvv|www|ttt|ddd|eee|fff" where: 
                  aaa is the GDL ID.
                  bbb is the local filename
                  ccc is the size of the file
                  xxx is the byte offset (=number of bytes still here when the
                      GDL entry is attached to a client).
                  yyy is the number of bytes received (including xxx).
                  zzz is the start time (creation time for new GDL, attachement
                      time for attached GDL
                  uuu is the number of bytes received during the last 10 seconds
                      (warning, this field exists only since DCTC v0.79.0
						vvv is the final directory given to /GDLRENAME
						www is the final filename given to /GDLRENAME
                  ttt is the script to start at end (/GDLSCRIPT). 
                      warning: since DCTC v0.84.2, this field can also contain
                      a CRC. the CRC has the format:
                      " &CRC:gggggggggggggggggggggggggggggggg"
                      and is ALWAYS at the end of ttt if CRC exists.
                  ddd contains 0 or more entries having the following format
                      and separated by |. ddd ends with an empty string.
                      This is the list of sources files of the GDL.
                      xx$yy$zz$tt
                      where xx is a nickname
                            yy is a remote filename
                            zz is the size of the remote filename
                            tt is the status: 'W' for waiting, 'T' for
                               trying and 'Rhhh[iii;jjj]' for running (hhh is
                               the number of bytes downloaded in the range, iii
                               is the download start position and jjj is the
                               download end position (excluded).
                  eee contains 0 or more entries having the following format
                      and separated by |. eee ends with an empty string.
                      This is the list of downloaded segments of the GDL
                      xx$[iii;jjj]
                      where xx is the name of the filename containing the segment
                            iii is the start position of the segment and jjj is 
                            the end position of the segment (excluded).
                  fff contains 0 or more entries having the following format and
                      separated by |. fffends with an empty string.
                      This is the list of autoscan patterns of the GDL
                      xx$yy?zz
                      where xx is the id of the autoscan entry
                            yy is the autoscan file type
                            zz is the autoscan search pattern

* "GLSTE": end of the GDL full list

* "UALSB": beginning of the UADDR full list

* "UALSC": content of one entry inside the UADDR full list. INS is 
           "aaa|bbb" where: 
                  aaa is the nickname (can be empty).
                  bbb is the host address (hostip:hostport format)

* "UALSE": end of the UADDR full list

* "UALS+": newly added UADDR entry. INS is like in UALSC.

* "UALS-": just deleted UADDR entry. INS is like in UALSC.

* "LUSER": result of a /LOCATEUSER command. INS is aaa|bbb|ccc|ddd where:
              aaa is the nickname
              bbb is the name of the hub where the user is 
              ccc is the size of the share of this user (can be an empty string)
              ddd is the IP:port of this user (can be an empty string)

* "LSCCH": user share list retrieved. INS is aaa where:
              aaa is the nickname. The share list is stored in
              $(HOME)/.dctc/ls_cache/aaa in LS_cache format.
              Note: if aaa contains slash ('/'), each one is replaced by a
                    dollar ('$').

* "ULIST": end of ULIST_FILE command. INS contains the name of the output 
           file.

