2005-03-28  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* configure.ac: Version 0.5.2

	* m4/socket.m4, m4/curses.m4: Add $srcdir to #includes

	* src/display.c (vsbar_printf_): Fix handling of fmt=NULL

	* libcompat/Makefile.am (libcompat_a_SOURCES): Add headers

	* src/Makefile.am (irmp3_ncurses_SOURCES): Add headers

	* m4/Makefile.am (EXTRA_DIST): Make life easier by simply distributing *.m4

2005-03-27  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* m4/socket.m4: Bail out on unknown --with-sockets option

	* m4/socket.m4, configure.ac: Move socket autodetection into socket.m4

2005-03-26  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/main.c (error_sleep): Avoid using Winsock select()

	* m4/socket.m4, configure.ac: Use CHECK_SOCKET_FUNC and REPLACE_SOCKET_FUNC

	* libcompat/Makefile.am, libcompat/inet_aton.c, libcompat/herror.c, libcompat/hstrerror.c: Use autosocket.h

	* src/autosocket.h, src/poll-select.c, src/netio.c: Move socket headers out to a separate file

	* m4/ax_lang_call_args.m4: Make test more general

	* m4/ax_cflags_gcc_option.m4, configure.ac, src/Makefile.am (AM_CFLAGS): Confirn that gcc supports the -std=gnu99 option

	* configure.ac: Remove --enable-winsock option

	* src/playlist.c (plwin_create, cursor_entryhook, playlist_printitem): Replace all wattron/wattroff with wattrset/wstandend

	* src/main.c (main): Restore cursor on exit

	* src/display.c (printtitlebar): Use wattrset to work around broken curses' that get wattron() wrong

	* src/playlist.c (plwin_create, cursor_entryhook), src/display.c (printtitlebar), src/irmp3-ncurses.h: Use *_ATTR #defines for colours

	* configure.ac: Use CHECK_CURSES in curses.m4

	* m4/curses.m4 (CHECK_CURSES): Move curses detection here

	* src/playlist.c (playlist_key_callback), src/browser.c (browser_key_callback): Interpret PADENTER where available

	* src/display.c (wcr): Added carriage return function
	(vsbar_printf_): Use wcr() instead of \r

	* libcompat/derwin.c, libcompat/intrflush.c, libcompat/wgetnstr.c, libcompat/wvline.c, configure.ac, src/autocurses.h: Add replacement functions needed by S-Lang

	* configure.ac: Use new macros in curses.m4 to test for curses functions

	* m4/Makefile.am (EXTRA_DIST): Ensure new autoconf macros are distributed

	* m4/curses.m4: Added m4 macros to check for and replace curses functions

	* m4/ax_check_func_args.m4: Add m4 macro to test for functions with given arguments

	* m4/ax_lang_call_args.m4: Add m4 macro to construct function calls

	* src/main.c (main): Remove nodelay() call

	* src/keyboard.c (key_callback): Protect KEY_IC and KEY_DC by #ifdefs

	* src/autocurses.h, configure.ac: Add support for S-Lang

	* src/playlist.c (plwin_create, cursor_entryhook), src/main.c (main), src/irmp3-ncurses.h, src/display.c (printtitlebar): Use symbolic constants for colour pairs

2005-03-22  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/poll-select.c, libcompat/inet_aton.c: Replace all uses of HAVE_WINSOCK with USE_WINSOCK

	* configure.ac: Change search order for --with-curses=curses
	Replace --enable-winsock parameter with --with-sockets=winsock

2005-03-21  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/stub-scroller.c, src/scroller.c (sigalarm_handler, wscroller_hook), src/playlist.c (playlist_printitem), src/display.c (mvwprintw, printsonginfo), src/irmp3-ncurses.h: Change scroller interface to take a WINDOW**

	* libcompat/libcompat.h (wresize): Removed

	* src/keyboard.c (key_callback), src/display.c (resize_terminal): Use resize_window instead of wresize

	* libcompat/libcompat.h (wresize): 'Fix' substitute function
	(resize_window): Provide this pdcurses API on ncurses

	* src/playlist.c (cursor_entryhook), src/main.c (main): Turn playlist cursor blue

	* src/poll-sigio.c (sigio_handler): Use select() to read all available data from the socket

	* src/playlist.c (cursor_entryhook, cursor_exithook): Use standout instead of bold

	* src/display.c (vsbar_printf_, sbar_getstr, printtitlebar): Use vw_printw instead of vwprintw

	* src/autocurses.h, libcompat/vwprintw.c, libcompat/vw_printw.c, configure.ac: Provide replacement for vw_printw instead of vwprintw

	* src/poll-sigio.c (main_poll_loop): Block all signals when not waiting for a keypress

	* configure.ac: Fix <arpa/inet.h> check

	* src/stub-scroller.c (wscroller_hook, scroller_end): Compilation fix

	* libcompat/libcompat.h: Use resize_window() instead of wresize(), if available

	* configure.ac: Check for resize_window, as found in PDCurses

	* src/main.c (parseoptions): Use c99 for loop
	(main): Use XCursesExit() correctly

	* src/scroller.c (wscroller_hook, scroller_end), src/irmp3-ncurses.h (SCROLLER_INITIALISER): Keep gcc happy for -std=gnu99

	* src/Makefile.am (AM_CFLAGS): Add -std=gnu99

	* src/playlist.c (handle_plfiles): Pluralisation fix

	* src/net.c (handle_sorted): Pluralisation fix

	* src/main.c (parseoptions): Make "surplus arguments" message i18n freindly

	* src/playlist.c (handle_plfiles): Use ngettext

	* doc/irmp3-ncurses.sgml: Remove book/article cruft

	* configure.ac, libcompat/getopt_long.c: Don't try to replace getopt_long

	* src/autocurses.h: Check specifically for pdcurses header

	* libcompat/mvwvline.c, libcompat/vwprintw.c, src/autocurses.h: Change void* to WINDOW*

	* src/autocurses.h, libcompat/getbegy.c, libcompat/getbegx.c, libcompat/getmaxy.c, libcompat/getmaxx.c, libcompat/getcury.c, libcompat/getcurx.c: Change void* back to WINDOW*

2005-03-20  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/autocurses.h, libcompat/libcompat.h: Move replacement curses prototypes to autocurses.h

	* src/autocurses.h: Fix silly typo

	* configure.ac: Check some more possible locations of ncurses header

	* libcompat/getbegy.c (getbegy), libcompat/getbegx.c (getbegx), libcompat/getmaxy.c (getmaxy), libcompat/getmaxx.c (getmaxx), libcompat/getcury.c (getcury), libcompat/getcurx.c (getcurx): Change WINDOW* to void*

	* libcompat/getbegy.c, libcompat/getbegx.c, libcompat/getmaxy.c, libcompat/getmaxx.c, libcompat/getcury.c, libcompat/getcurx.c: Remove <config.h> and add "libcompat.h"

	* libcompat/autocurses.h: Protect all #include <curses.h> with #if HAVE_CURSES_H

	* configure.ac: Fix BSD socket test

	* src/main.c (main): Remove useless error_sleep()

	* src/net.c (handle_200): Handle "200: endofsong"

	* libcompat/hstrerror.c, libcompat/herror.c: Fix netdb.h/winsock.h #include

	* src/autocurses.h: Add XCurses #includes

	* src/irmp3-ncurses.h, src/autocurses.h, libcompat/autocurses.h, libcompat/Makefile.am, configure.ac: Move autocurses.h to src/ and use it throughout the project (including in configure)

	* src/main.c (main): Support use of Xinitscr() and XCursesExit()

	* configure.ac, src/main.c (main), src/playlist.c (plwin_create), src/display.c (printtitlebar): Allow disabling of colour with ./configure --disable-colour

	* configure.ac: Add --with-curses parameter to select a curses library
	Add specific tests for different curses libraries
	Add xcurses support
	Base --enable-winsock default on the presence of BSD sockets rather than the OS type

2005-03-15  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/main.c (main): Clean up properly if connect fails

	* src/netio.c (start_network): Only call WSAStartup if we're actually using Winsock

2005-03-11  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* configure.ac: Don't check for MS-Windows headers

	* src/poll-wthread.c: #include <windows.h> unconditionally

	* src/netio.c: #include <winsock.h> unconditionally

	* src/poll-sigio.c, src/main.c, src/irmp3-ncurses.h, src/display.c: Header cleanups

	* src/main.c (usage): Add message showing where locale data comes from

	* src/display.c (printtitlebar): If colour is not available, use reverse video instead

	* src/main.c (main), src/display.c (printtitlebar): Reverse the colours in the colour pair rather then using the reverse attribute

	* src/main.c (error_sleep): Allow use of _sleep()

	* libcompat/nanosleep.c: Removed

	* src/main.c (error_sleep): Don't assume nanosleep is available

	* src/display.c (sbar_getstr): Return value from wgetnstr
	(sbar_getstr): Print a CR after reading the string
	(sbar_getstr): Use the size parameter correctly

	* src/playlist.c (assert), src/keyboard.c (direct_command): Use sbar_getstr

	* src/display.c (vsbar_printf_noscroll, sbar_printf_noscroll): Updated to do exactly what is says on the tin
	(sbar_getstr): Added

	* src/*.c: Replace all debugprintf() with sbar_printf(), sbar_printf_noscroll(), dbg_printf() or waddstr() as appropriate

	* src/playlist.c (playlist_key_callback): Don't test for playlist visibility - it's already been assert()ed

	* src/netio.c (handle_net): Don't mess about with the debug window

	* src/net.c (handle_play_mod): Format cleanup

	* src/poll-wthread.c (sock_thread): Don't loop endlessly if the connection breaks

	* src/display.c (destroy_ui): End all scrollers rather than destroying the playlist
	(debugprintf, vlogprintf): Split debugprintf
	(vsbar_printf, sbar_printf, logprintf): Added

	* src/stub-scroller.c, src/scroller.c (scroller_endall): Added

	* src/main.c (mainloop): Moved into main()
	Fixed #includes

	* src/netio.c (connect_irmp3): Get address from global variable rather than parameter

	* src/main.c (parseoptions): Use set_address()
	Remove all networking #includes

	* src/netio.c (set_address): Moved address resolution to netio.c

2005-03-07  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* configure.ac: Don't disable playlist if wresize() isn't found

	* src/scroller.c: Add <unistd.h>

	* src/poll-sigio.c: Add <unistd.h> and <sys/socket.h>

	* src/poll-select.c: Add <winsock.h>

	* src/netio.c, src/main.c: Add networking #includes

	* src/irmp3-ncurses.h: Remove networking #includes

	* configure.ac: Add option to manually enable Winsock

	* src/netio.c (handle_net): Ignore EINTR from recv()

	* configure.ac, src/poll-wthread.c: Check for windows.h in w32api as well

	* configure.ac, src/Makefile.am, src/poll-select.c: Enable polling for input using select()

	* libcompat/snprintf.c (snprintf): Replace missing snprintf()

	* libcompat/mvwvline.c (mvwvline): Replace missing mvwvline()

	* src/keyboard.c (key_callback): Disable show/hide playlist if wresize() is not available

	* configure.ac: Don't override --enable-playlist and --enable-scrolling-titles if wresize() and alarm() respectively are not found

	* src/Makefile.am (irmp3_ncurses_SOURCES): Conditionally compile poll-sigio.c or poll-wthread.c instead of poll.c

	* configure.ac: Add option to select polling method

	* src/netio.c (start_network): Bugfix for Winsock startup

	* src/playlist.c (plwin_create, playlist_dirty): Use send_query()
	(playlist_setplaying): Remove bogus getmaxyx
	(playlist_setplaying): Don't do anything unless current track has actually changed
	(playlist_clear): Shorten playlist freeing code
	(playlist_add, playlist_replace): Refactor playlist_add into these two
	(playlist_setplaying): Allow calling when playlist is hidden
	(playlist_truncate): Replace playlist_clear() with a function that can shorten the playlist to an arbitrary number of elements (including, of course 0)

	* src/net.c (send_query): Add this new api for querying values from the server
	(init_queries, handle_play_void): use send_query()

	* src/playlist.c (playlist_clear): Stop any scrolling cursor
	(PLCURS_MARGIN): Added this constant
	(playlist_cursvisible): Added a function to fudge pltop into making the cursor visible, and at least PLCURS_MARGIN lines from the edge, if possible
	(playlist_cursmove, playlist_setplaying): Use playlist_cursvisible()
	(playlist_add): When index is within PLCURS_MARGIN of plcurs, reposition cursor
	(handle_plfiles): Don't reposition cursor after playlist is read
	(handle_plfiles): Only print baton when it changes

	* src/netio.c (netputs): Use MSG_NOSIGNAL, if possible

	* src/keyboard.c (statewin_mouse, key_callback, direct_command), src/playlist.c (plwin_create, playlist_dirty, playlist_seek), src/browser.c (browser_init, browser_key_callback), src/net.c (init_queries, handle_play_void): Remove \r\n from messages

	* src/netio.c (netputs): Always append \r\n to messages

	* doc/irmp3-ncurses.sgml: Move t and c to the 'basic playlist comands' section

	* src/playlist.c (playlist_save, playlist_cursmove, playlist_seek): Made static

	* src/main.c, src/playlist.c (save_playlist_prompt): Moved to playlist.c

	* src/keyboard.c (key_callback): Allow sorting of playlist, even when it is hidden (or not compiled in)

	* src/keyboard.c (key_callback), src/playlist.c (playlist_key_callback): Move playlist key handling to playlist.c

	* src/keyboard.c (key_callback): Renamed from handle_key
	Hidden numlock warning behind a macro

	* src/browser.c (browser_key_callback): Renamed from browser_handle_key

	* src/main.c, src/netio.c (handle_net, connect_irmp3): Moved to netio.c

	* src/main.c, src/netio.c (start_network, stop_network): Moved start_winsock() and stop_winsock() to netio and renamed them

	* src/netio.c, src/net.c (netputs, netprintf): Moved to netio.c

	* src/Makefile.am (irmp3_ncurses_SOURCES): Add netio.c

	* src/keyboard.c (handle_key): Swap arguments for consistency

	* src/browser.c (browser_main): Removed

	* src/keyboard.c (handle_key), src/browser.c (browser_handle_key): Call browser_handle_key from handle_key, rather than vice versa

	* src/main.c (main_handle_key): Removed

	* src/poll.c (main_poll_loop): Use handle_key() instead of main_handle_key()

	* src/main.c, src/poll.c (sock_thread, sigio_handler): Moved to poll.c

	* src/main.c (connect_irmp3, mainloop): Move I/O polling code to poll.c
	(mainloop): Use main_poll_loop() from poll.c

	* src/Makefile.am (irmp3_ncurses_SOURCES): Renamed scroller-stub.c to stub-scroller.c (to make 1st 8 letters unique)

	* src/main.c (connect_irmp3): Test if we have SIOCSPGRP before trying to use it

2005-03-04  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* libcompat/herror.c (herror): Small cleanup

2005-03-03  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/main.c (connect_irmp3): Remove needless printing of errno
	(parseoptions): Fix printf format bug

	* libcompat/nanosleep.c (nanosleep): Don't assign to rem if it's NULL

	* src/main.c (connect_irmp3): Wait until after connect to start listening for recieve events

	* libcompat/hstrerror.c (hstrerror): Added

	* src/main.c (parseoptions): Reformat hostname lookup error message

	* libcompat/herror.c (herror): Use hstrerror()

	* configure.ac, src/main.c (parseoptions): Add support for a precompiled hostname
	Remove support for --enable-irmp3-ip

	* src/browser.c (browser_handle_key): Steal KEY_ENTER as well as '\r'

2005-02-26  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* configure.ac: Some changes to make the output of autoscan easier to parse

	* src/display.c (debugprintf, printtitlebar): Use vwprintw instead of vw_printw

	* src/main.c, src/irmp3-ncurses.h, src/Makefile.am, configure.ac, Makefile.am: Move compatibility cruft out to libcompat

2005-02-25  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/main.c (error_sleep): Suppress 'mixing alarm() and' warnings if alarm() is not supported

	* src/irmp3-ncurses.h: Remove ssize_t guess
	Don't gratuitously #error if no curses header is found
	#include "gettext.h" moved to the end to avoid 'libintl_printf is not a valid format specifier' warnings

	* configure.ac: Better handling of autodetection of playlist, scrolling titles and mouse

	* src/main.c (connect_irmp3): Ignore SIGPIPE
	(error_sleep): Use select() in preference to sleep() or usleep()
	(handle_net): Use long instead of ssize_t

2005-02-24  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/irmp3-ncurses.h (getbegx, getbegy, getmaxx, getmaxy): Added these replacement functions

	* src/Makefile.am (AM_CPPFLAGS): Only add included intl/ directory to #include path if it's being used
	(LDADD): Add gettext libraries

	* configure.ac: Remove useless test for ln -s
	Remove harmful tests for GNU malloc and realloc
	Add tests for getbegx and getmaxx
	Add conditional for USE_INCLUDED_LIBINTL
	Disable playlist if wresize() is not found
	Disable scrolling titles if alarm() is not found

2005-02-23  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/Makefile.am (AM_CPPFLAGS): Add intl/ to the include directories

	* configure.ac: Use = instead of == in 'test'

2005-02-22  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/main.c (sock_thread): Handle socket data in MinGW port

	* src/irmp3-ncurses.h: Don't #include <winsock.h> unless we're using winsock

	* configure.ac: Check for sys/ioctl.h

	* src/keyboard.c (handle_key): Quit when q is pressed

	* src/main.c (connect_irmp3, mainloop): Use SIGIO for socket data

	* src/browser.c (browser_handle_net): Deleted

	* src/main.c (handle_net_callback): Renamed to handle_net
	(main_handle_net): Deleted

	* src/net.c (handle_net): Renamed to main_net_callback

	* src/main.c (handle_net_callback): Remove callback parameter and select callback based on existence of browser window

	* src/browser.c (browser_exit): set brwnd to NULL before deleting the window

	* configure.ac: Version 0.5.2pre

	* src/main.c (start_winsock, stop_winsock, main): Winsock initialisation and cleanup

	* configure.ac: Check for herror

	* src/irmp3-ncurses.h (inet_aton): Provide replacement inet_aton

	* configure.ac: Check for inet_aton

	* src/Makefile.am (irmp3_ncurses_SOURCES): Conditionally compile stub scroller implementation instead of the real one

	* configure.ac: Add option to disable scrolling titles

	* src/scroller.c: Fix memory leak

	* src/main.c (error_sleep): Add option to use sleep() or usleep() instead of nanosleep

	* src/irmp3-ncurses.h: Add a guess for ssize_t

	* configure.ac: Check for ssize_t
	Check for nanosleep, usleep and sleep

	* src/main.c (connect_irmp3): Remove needless nonblocking of socket

	* src/irmp3-ncurses.h: #include <winsock.h>

	* configure.ac: Add winsock checks

2005-02-21  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/irmp3-ncurses.h (getcurx, getcury): Provide replacements for these functions

	* configure.ac: Check for getcurx

	* src/irmp3-ncurses.h, src/main.c (vwprintw, vw_printw): Change handling of missing vw_printw/vwprintw

	* src/irmp3-ncurses.h (vw_printw): Remove warning about using vwprintw instead of vw_printw - it's not a problem

	* src/main.c (handle_net_callback): Use recv instead of read

	* src/net.c (netputs): Use send instead of write

	* src/display.c (debugprintf): Format string made const

	* src/irmp3-ncurses.h: Portability fixes

	* src/scroller.c (sigalarm_handler): Change return type to that detected by configure

	* configure.ac: Some changes suggested by autoscan

	* src/scroller.c (wscroller_hook): Use signal() for greater portability

	* configure.ac: Fix silly mistake in socket error message

2005-02-20  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* configure.ac: Version 0.5.1

	* src/display.c (debugprintf): Fix compilation for --disable-logging

	* src/playlist.c (playlist_innermouse): printf format fix

	* src/keyboard.c (handle_mouse): Report errors from getmouse()

	* src/playlist.c (plwin_create), src/main.c (main), src/irmp3-ncurses.h (STATE_HEIGHT), src/display.c (printtitlebar): Colour title bars and dividing line red on terminals supporting colour
	(playlist_innermouse): More verbose reporting of unknown events

2005-02-17  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/playlist.c (playlist_dirty): Avoid sending a 'query plfiles' request when one is already in progress
	(plwin_create): Add divider between playlist and state window

	* src/net.c (handle_sorted): Ensure playlist is always dirtied, not just on a miscount

	* src/playlist.c (playlist_printtitlebar, playlist_add, playlist_clear): Made static

	* src/net.c, src/playlist.c (handle_plfiles): Moved handle_plfiles into palylist.c

	* src/net.c (handle_idle), src/irmp3-ncurses.h (playlist_dirty), src/display.c (destroy_ui): Fix compile for disabled playlist

	* src/net.c (handle_plfiles): Get rid of waddch for 'twirling baton'

	* All: Move from using explicit playlist refresh commands to playlist_dirty(), which may defer reloading the list

	* src/display.c (print_playcontrols), src/keyboard.c (statewin_mouse): Allow moving the button bar

	* src/playlist.c (plwin_create, plwin_destroy): Refactor playlist creation and deleteion code
	(plwin_destroy): Fix 'segfault when hiding the playlist with a scrolling cursor' bug

	* src/scroller.c (sigalarm_handler): Add a (useless) sanity check

	* src/net.c (handle_plfiles): Update Playlist titlebar when reading playlist

	* src/irmp3-ncurses.h: Rearranged state window to be more visually appealing.  or is that appalling...

	* configure.ac: Changed version to 0.5.1pre

	* src/browser.c, src/display.c, src/keyboard.c, src/irmp3-ncurses.h: Add more #defines to control layout of GUI

	* src/browser.c (browser_init, print_pwd): Use generic titlebar function for browser

	* src/playlist.c (playlist_printtitlebar), src/display.c (printtitlebar): Split out titlebar drawing to generic function 'printtitlebar'

	* src/playlist.c (playlist_mouse, playlist_innermouse): Handle playlist scrollbar and list clicks separately

	* src/keyboard.c (handle_mouse): Send mouse events for outer playlist window to playlist mouse handler

	* src/playlist.c (playlist_printitem): Eliminate a race in redrawing playlist items
	(playlist_print, playlist_cursmove, playlist_printtitlebar): Print playlist title inside outer playlist window
	(playlist_printscrollbar): Print scrollbar in outer playlist window

	* src/keyboard.c (handle_key), src/display.c (init_ui, resize_terminal): Use nested windows for playlist

	* src/playlist.c (playlist_cursmove), src/display.c (init_ui): Only enable scrolling of playlist window when it's needed

	* src/net.c (netputs), src/main.c (handle_net_callback, handle_net_callback, connect_irmp3, mainloop), src/keyboard.c (handle_mouse), src/display.c (debugprintf): Make debugging messages *not* translatable

	* src/playlist.c (playlist_printitem): Start cursor right aligned

	* src/scroller.c (wscroller_hook): Add options to start right aligned

	* src/info.c (stripspaces): Added a function to remove leading and trailing whitespace from a string
	(setartist, setalbum, settitle, setyear, setcomment, setfilename, setirmp3version, setplayerversion, setplayermodule): Strip spaces from everything

	* src/scroller.c (wscroller_hook): *left* justify stuff...

	* src/playlist.c (playlist_printitem): Mostly implemented scrolling cursor

	* src/scroller.c (sigalarm_handler, wscroller): Call entry and exit hooks if set
	(wscroller_hook): Renamed from wscroller and hook parameters added
	(wscroller_hook): Block all signals during SIGALRM calls

	* src/playlist.c (cursor_entryhook, cursor_exithook): Added skeleton cursor-drawing hooks

	* src/irmp3-ncurses.h: Added entry and exit hooks to struct scroller

	* src/keyboard.c (statewin_mouse, handle_key): Change volume, bass and treble in 1% increments

	* src/display.c (printplayerstate): Track column of repeat control

	* src/keyboard.c (statewin_mouse): Fix control rows

	* src/display.c (printsonginfo): Scroll artist, album, title, genre and comment if necessary
	(printsonginfo, printplayerstate, printtime): Move display up to fill blank line
	(printplayerstate): Don't blank line 2 any more

	* src/scroller.c (sigalarm_handler): Wrote scrolling code
	(dump_scrollerlist): Only dump data a loglevel 3

	* src/browser.c (browser_main): Ignore EINTR from select()

	* src/main.c (error_sleep): Eliminate all uses of sleep() and use nanosleep here instead
	(mainloop): Ignore EINTR from select()

	* src/scroller.c (sigalarm_handler): Added SIGALRM callback
	(wscroller): Start alarm() loop

2005-02-16  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/irmp3-ncurses.h: Added members to struct scroller

	* src/scroller.c: Added stub scrolling text implementation
	Added list management code

	* src/display.c (printplayerstate): Fix width of % indicators to 3 digits
	(printplayerstate): Line up % signs
	(wprintslider): Avoid attepmting to draw a slider < 2 chars long
	(printplayerstate, printsonginfo): Line up display elements
	(printplayerstate): Move balance to the bottom of the display

	* src/main.c (parseoptions): Added -P and removed --playlist options

2005-02-15  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/net.c (handle_play_void, handle_plfiles, handle_net): Remove \r from translatable strings

	* src/main.c (vw_printw): Cleanup
	(parseoptions): Enable use of getopt_long
	(parseoptions): Clean up #ifdef madness - now it's only slightly mad
	(parseoptions): Small cleanups

	* configure.ac: Add --enable-irmp3-host parameter
	Misc cleanups

2005-02-06  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/irmp3-ncurses.1: Updated man page

	* src/keyboard.c (statewin_mouse, statewin_mouse), src/display.c (printtime, printplayerstate, printsonginfo, print_playcontrols): Move mouse buttons inside state window
	(handle_key): Use wresize to resize state window instead of destroying it and recreating

	* src/irmp3-ncurses.h (PLAYLIST_TOP, BROWSER_TOP, STATE_TOP): Move everything up 1 row

	* src/display.c (redraw_all): Remove faux titlebar

	* src/irmp3-ncurses.1: Update man page

	* src/keyboard.c (statewin_mouse): Use stored left-hand end of sliders
	(handle_mouse): Cleanups
	(handle_key): Changed numlock message
	(handle_key): Added 'p' key to show/hide the playlist

	* src/display.c (printtime): Automatic slider size
	(printplayerstate): Clean up definition of repeatnames
	(printplayerstate): Automatic slider size
	Add global variables to track last-drawn left-hand positions of sliders
	(printplayerstate, printtime): Track left-hand end of sliders

	* src/net.c (handle_plfiles): Changed "items" to "tracks"
	(handle_idle): Remove bogus spaces

2005-01-18  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/browser.c (handle_browser): Make browser scrollbar fill width of window
	(browser_init): Leave a gap between the browser and playlist

	* src/keyboard.c (statewin_mouse, handle_mouse, handle_key, direct_command), src/browser.c (browser_init, handle_browser), src/net.c (init_queries, handle_idle, handle_play_void, refresh_playlist, handle_browser_info): Send CRLF on all commands

	* src/playlist.c, src/keyboard.c: Remove <assert.h>

	* src/irmp3-ncurses.h: #include <assert.h>

	* src/browser.c, src/display.c, src/keyboard.c, src/main.c, src/net.c, src/playlist.c, src/irmp3-ncurses.h: Comment cleanup and cruft removal

	* src/net.c (handle_idle): inline it

	* src/main.c (handle_net_callback): Change a needless couple of ifs to a switch
	(handle_net_callback): Check for NULs in output from irmp3d

	* src/keyboard.c (handle_key): Complain if playlist commands are used when the playlist is disabled

	* src/browser.c, src/display.c, src.info.c, src/keyboard.c, src/main.c, src/net.c, src/playlist.c (vcid): Used new vcid() macro to define RCS ids

	* src/irmp3-ncurses.h (vcid): Added vcid for less intrusive RCS insertion

2005-01-17  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/browser.c, src/display.c, src.info.c, src/keyboard.c, src/main.c, src/net.c, src/playlist.c (vcid): Added vcid to locate RCS id using ident

	* src/irmp3-ncurses.h (used): Added used macro for GCC

	* All: Updated version to 0.5.0 

	* configure.ac: Multiple cleanups, including quoting cleanups

	* Makefile.am (EXTRA_DIST): Include autogen.sh in the distribution

	* src/irmp3-ncurses.h: Fix #include cockup
	Switch to using "gettext.h"

	* src/Makefile.am (irmp3_ncurses_SOURCES): readded irmp3-ncurses.h to ensure it gets distributed

	* src/display.c (debugprintf): put #ifdef LOGGING in
	(debugprintf): Add notice about logging to debug output
	(debugprintf): Rename log file from irmp3-ncurses-log to irmp3-ncurses.log

	* src/keyboard.c, src/main.c, src/net.c: removed useless #if LOGGING statements

	* configure.ac: Some changes suggested by autoscan

	* configure.ac, src/irmp3-ncurses.h, src/main.c: Change --enable-logging argument to configure to set the *default* loglevel

	* src/main.c (main): Close debugprintf logfile
	(usage): Use eprintf
	(parseoptions): Use eprintf

	* src/display.c (debugprintf): Calling with NULL format closes logfile

	* src/main.c (vw_printw): remove cruft

	* src/info.c (setshufflemode): eliminate cruft

	* src/main.c (main): Don't call clearsonginfo()
	(main): Make welcome message more gettext friendly

	* src/info.c, src/irmp3-ncurses.h (resetplayerstate): delete
	(clearsonginfo): Use new style initialiser
	Initilise songinfo

	* src/main.c (main): don't call resetplayerstate()

	* src/display.c (about): Check for 0-length strings

	* src/info.c: Fix breakage incurred in irmp3-ncurses.h changes below
	Initialise playerstate

	* src/display.c (printplayerstate): uppercased enum play constants

	* src/net.c (handle_play_void): uppercase ps_play
	(handle_pause): uppercase ps_pause
	(handle_unpause): uppercase ps_play
	(handle_stop): uppercase ps_stop
	(handle_halt): uppercase ps_halt

	* src/irmp3-ncurses.h: Move some #defines to more appropriate locations
	Remove leading underscores from struct and enum names
	Remove typedefs of enums
	Uppercase enum values
	Fix breakage from the above :-)

	* src/main.c (loglevel): Don't declare loglevel if loglevel is fixed
	(parseoptions): Check if loglevel was preset by ./configure

	* src/irmp3-ncurses.h (loglevel): #define to any preset loglevel (0 to disable)

	* configure.ac: Added option to fix loglevel (including fixing to 0)

	* src/browser.c, src/display.c, src/info.c, src/keyboard.c, src/main.c, src/net.c, src/playlist.c: Add config.h

	* src/browser.c, src/display.c, src/irmp3-ncurses.h, src/keyboard.c, src/main.c, src/net.c, src/playlist.c: Remove useless "#if PLAYLIST"s

	* src/net.c (handle_file): Make into a static inline

	* src/main.c (parseoptions): Check whether playlist support has been disabled before accepting -p option
	(parseoptions): Remove some old debugging guff
	(parseoptions): Don't initialise show_playlist here any more

	* src/playlist.c, src/main.c: Move variable show_playlist into playlist.c

	* src/irmp3-ncurses.h: Remove #include "config.h"
	(show_playlist): #define show_playlist to false if playlist support is disabled

	* src/Makefile.am (AM_CFLAGS): Removed -O
	(irmp3_ncurses_SOURCES): Conditionally compile playlist.c

	* configure.ac: Added option to disable playlist support

2005-01-16  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/browser.c (handle_browser): Only make translatable part of "Unknown browser message: " message translatable

2005-01-14  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/Makefile.am (localedir): Add localedir
	(AM_CPPFLAGS): Add localedir to AM_CPPFLAGS

	* src/irmp3-ncurses.h (gettext_noop): Fix typo

2005-01-14  gettextize  <bug-gnu-gettext@gnu.org>

	* Makefile.am (SUBDIRS): Add m4.
	(ACLOCAL_AMFLAGS): New variable.
	(EXTRA_DIST): Add config.rpath mkinstalldirs.

	* configure.ac (AC_CONFIG_FILES): Add po/Makefile.in,

2005-01-14  Ross Kendall Axe  <ross.axe@blueyonder.co.uk>

	* src/irmp3-ncurses.h: Add proper gettext definitions

	* configure.ac: Add tests for setlocale

	* src/browser.c, src/display.c, src/info.c, src/keyboard.c, src/net.c, src/playlist.c, src/main.c: Mark translatable strings

	* src/irmp3-ncurses.h: Add dummy gettext definitions

2004-11-15  Ross Kendall Axe  <ross@purplehaze.localnet>

	* configure.ac: configure.ac cleanup

2004-11-02  Ross Kendall Axe  <ross@purplehaze.localnet>

	* configure.ac: Fixed some errors in configure.ac using autoupdate
	removed bogus line from configure.ac

2004-07-28 0.4-devel3

	* Disabled 0.4.x support by default

	* Fixed silly backwards assert in playlist_printitem

	* Fixed crash when pressing arrow keys with empty playlist

	* Some headers tweak to get it working under SFU

	* getopt now used for command line parsing

	* Enable/disable playlist is now a command line parameter

	* Logging now a command line parameter

	* Stop command switched back to "stop" because irmp3d-0.5.7pre1 with mod_mplayer gets confused by "stopall"

	* "browser info" message now causes playlist refresh outside of browser mode

	* "update title" and friends now supported. This allows mid-stream title changes with irmp3d-0.5.7 (and suppresses the annoying messages :-)

	* "playlist sort" and "stopall" messages supported

2004-02-20 Released 0.4-devel2

	* Bug where (double) clicking beyond the end of the playlist tries to select/play non-existant track fixed.

	* Playlist scrollbar now responds to mouse clicks

	* Stop command now issues "stopall" to release soundcard on irmp3-0.5.x

	* Page up/down now moves whole screen height rather than being fixed at 20 rows

	* Mouse now works on mixer sliders and shuffle/repeat controls

	* Added playlist save command

	* Added playlist sort command

	* Mouse now works on track-time bar

	* Mouse support is getting pretty complete, so it's now enabled by default

2004-02-01 Released 0.4-devel1

	* Added options to remove support for 0.4.x or 0.5.x of irmp3

	* Added compile-time loglevels. See config.h for details

	* Now uses autoconf & automake

	* Added manpage

	* Now clears `idle time' display when no longer idle

	* Shunts lots of code in main.c out to display.c, info.c, keyboard.c and net.c

2004-01-06 Released 0.3

	* Some playlist support (cursor up/down/jump commands)

	* Song information moved into separate window

	* General playlist code cleanup

	* All write(sock, ...) replaced with fputs(... , fsock) etc.

	* Comm socket is now nonblocking, which is fun...

	* Net message handling now done as a callback funtion

	* fputs(... , fsock) & fprintf(fsock, ...) replaced with

	* netputs and netprintf

	* Started supporting irmp3 0.5 (testing with 0.5.6devel3)

	* Initial support for non-80x24 terminals and terminal resizing

	* Changes in playlist display to use reverse video and bold

	* `printslider' now accepts max+min args

	* `r' now reloads the playlist

	* Rewritten net.c with loads of macros instead...

	* Now can remove playlist support at compile time

2003-09-11 Released 0.2alpha

	* Updated README

	* Added balance control keys (`<', `\', `/', `>') and display

	* Basic mouse support added. Doesn't seem to work with GPM though :-(

	* Treble/bass control keys added (`[', `]', `'', `#')

	* Treble/bass display added

	* Browser key handler changed so that unhandled keys fall through to the main key handler in main.c. This allows play/pause/stop keys to work in browser and also removes some redundancy

	* Volume/mute display added

	* Cleaned up message processing in net.c

	* Dealt with all IDv3/ogg tags provided by IRMP3

	* Shows filename

	* Now accepts host:port on command line

	* No longer accepts ESC to quit (was just going wrong on gnome-terminal for me)

	* Added usage message

2003-09-02 Released 0.1alpha

	* Play/pause/stop/seek etc have been implemented

	* Also, crude browser support exists
