Fix the documentation for punt/unpunt

The full extent of the horrors of these commands' syntax had not quite
been correctly documented.
Don't use skiptokens in punt/unpunt

There was no need for it. This cuts down on one of the more nasty usages
of skiptokens in command parsing.
Inform the user when an unpunt command does nothing

Also, make the corresponding message for referencing a punt filter by
number not an error. It's not an internal error, so it needn't be
logged.
stderr_redirect_handler: Handle partial or failed reads

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Show how far you are in a long message

Addresses most of ticket #119 - it shows how far you are in a long
message, but not in a message that you're typing.  The display style
I've somewhat arbitrarily chosen is to replace <truncated> with
<truncated: $num_lines_through/$total_lines>.

Additionally, the <truncated> part of sepbar has been moved to be next
to 'SCROLL', which it is most similar to.
startup: check for file before calling owl_util_file_deleteline

This fixes trac #175: '"startup" command produces error when run for the
first time'.  The startup command deletes duplicate lines, and thus
errored when no file existed.  A check has been added to prevent this.
Remove the length limit on field values in :info
Make owl_select_post_task take a context argument

Make owl_select_post_task take a context argument to indicate /which/ running mainloop it should run the task on, since now there's more than one.
Move log-writing onto a background thread.

Currently, Barnowl writes message logs on the same thread as the UI
and other I/O. This means that if writing log files is very slow
(e.g. if logpath or classlogpath point to somewhere in AFS and the
fileserver that volume relies on is very slow to respond), barnowl
freezes up until the write completes. This patch creates a background
logging thread as part of initialization and runs a main loop on that
thread. Logging is then accomplished by posting tasks that write to
log files to that thread, a la how other threads can post tasks to the
UI thread's main loop.

Post a quit task to the logging thread's mainloop instead of quitting directly

Calling g_main_quit() on the main thread to quit the logging thread could resultin log tasks still in its queue getting lost. Instead, after we've shut down
everything that could log messages, post a quit task to the log thread so that
it'll only get run after everything outstanding has been processed.
Replace free() with g_free()

I can't believe I missed this when I made 950e2dac.
Handle Jabber nicks with leading dashes (e.g. Facebook XMPP)

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Merge pull request #24 from ezyang/master

Handle Jabber nicks with leading dashes (e.g. Facebook XMPP)

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
Reviewed-By: Karl Ramm <kcr@1ts.org>
zcrypt: Remove unused #include <zephyr/zephyr.h>

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Don't specify both G_VOID and G_SCALAR

Turns out G_SCALAR is 0, so it doesn't really matter, but we may as well
say what we mean.
Don't leak string data in owl_util_regtest
Release reference to GMainLoop when done

It's only done at shutdown, but we may as well appease valgrind.
Properly tear down the ncurses screen in tester.c

There's actually a set of valgrind suppressions in ncurses, and there
really isn't API to clean up after initscr. But since we allocate this
SCREEN ourselves, may as well clean it up.