aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* mpdclient: expect UTF-8 stringsMax Kellermann2008-11-078-99/+65
| | | | | | Don't convert the character set of strings to and from the current locale. This library cannot know what the strings are going to be used for, so it should not mess with them.
* screen_search: fixed 2 memory leaksMax Kellermann2008-11-071-0/+6
| | | | | Free the old pattern before prompting for a new one. Free the old filelist object before retrieving the new one.
* screen_play: free the wreadln() return valueMax Kellermann2008-11-071-0/+1
|
* screen_browser: free g_path_get_dirname() return valueMax Kellermann2008-11-071-0/+1
| | | | | The function browser_change_directory() did not free the return value of g_path_get_dirname().
* screen_file: optimized title formulaMax Kellermann2008-11-071-12/+10
| | | | Don't allocate and copy memory.
* main: optimized error_msg()Max Kellermann2008-11-071-1/+2
| | | | The pointer has already been checked for NULL, eliminate that check.
* Makefile.am: added custom rule with -fwhole-programMax Kellermann2008-11-071-0/+6
| | | | | | | To make the ncmpc binary even smaller, you can compile all sources at once with "--combine -fwhole-program". Unfortunately, automake does not support this mode. For further experiments, this patch adds a custom rule which creates the binary named "ncmpc-tiny" this way.
* configure.ac, Makefile.am: removed subversion keywordsMax Kellermann2008-11-071-4/+0
| | | | Removed $Id$.
* disable more features with --enable-miniMax Kellermann2008-11-0716-13/+151
| | | | | | | | | | | | | | Disable lots of smaller features which don't have a separate configure option: - xterm title - screen list - horizontal scrolling - MPD version number check - key binding checks - character set conversion - bitrate display - highlighting in the file browser - completion / history
* command.h: include config.hMax Kellermann2008-11-071-0/+2
| | | | | The source command.h checks for configure.ac options, so it needs to include config.h.
* charset: don't allocate GErrorMax Kellermann2008-11-071-12/+4
| | | | | Since the GError return value of g_convert_*() is ignored by ncmpc, we don't need to retrieve it at all.
* options: don't store disabled optionsMax Kellermann2008-11-075-0/+23
| | | | | Options which are disabled at compile time shouldn't reserve space for their values in the options struct.
* options: static initialization if possibleMax Kellermann2008-11-071-11/+11
| | | | Initialize the options struct statically.
* options: removed deprecated optionsMax Kellermann2008-11-072-8/+1
| | | | "reconnect" is always enabled. "debug" code has been removed.
* configure.ac: added --disable-help-screenMax Kellermann2008-11-073-1/+8
|
* configure.ac: added LIRC configure switchMax Kellermann2008-11-071-1/+3
| | | | Detect liblircclient with pkg-config.
* lirc: pass writable string to lirc_init()Max Kellermann2008-11-071-1/+3
| | | | | The "prog" argument of lirc_init() expects a non-const string. Pass a local string variable.
* native LIRC support for ncmpcThomas Jansen2008-11-074-0/+113
| | | | | | | | | | | | | | | | | | | | | | | | | The attachment includes the patch and a sample .lircrc config for testing purposes (i. e. only a few commands are mapped to IR events). The config is rather simple to write: For each button add a block like this to ~/.lircrc: begin button = <button name from /etc/lircd.conf> prog = ncmpc config = <command name from src/command.c> end The patch is not finished, there are several problems that still need to be solved: 1. the configure.ac modifications are just for testing purposes and should be made optional with a parameter like --enable-lirc for ./configure. Unfortunately I'm not an expert on autoconfig tools. 2. LIRC example code [1] suggests looping over lirc_code2char, probably to have multiple actions that can be triggered from one button. Perhaps lirc_event(...) should be moved to lirc.c and be heavily modified, no longer being a mere copy of keyboard_event(...).
* screen_browser: fix warning when lyrics screen is disabledMax Kellermann2008-10-081-0/+2
| | | | | A local variable was only used by the lyrics screen code. Put #ifdef around its declaration.
* wreadln: support wide charactersMax Kellermann2008-10-061-17/+190
| | | | | | | | | wreadln() didn't distinguish narrow from wide characters, which resulted in display corruption. This patch adds a lot of internal conversions between byte positions, screen positions and character position, which hopefully fixes all these bugs. Since these conversions are quite expensive, the code should be revised and optimized.
* wreadln: wait for complete multibyte sequence in wreadln_insert_byte()Max Kellermann2008-10-061-0/+54
| | | | | | | For multibyte input, we should use wget_wch(), but this function isn't supported properly on some platforms. Add a patch which completes a multibyte character with multiple non-blocking reads. We'll see how portable this hack is...
* wreadln: don't use cursor_move_right() in insert_byte()Max Kellermann2008-10-061-1/+4
| | | | | | After a byte has been inserted, move the cursor right by just one byte, not one character. The byte may have been the first one in a multibyte character.
* configure.ac: added option --disable-wideMax Kellermann2008-10-061-1/+1
| | | | | | The configure option "--disable-wide" disables wide character support. This simplifies lots of internal calculations and makes the ncmpc binary leaner.
* include ncursesw/ncurses.h if availableMax Kellermann2008-10-0614-9/+36
| | | | | When compiling with libncursesw, include <ncursesw/ncurses.h> instead of <ncurses.h> (if available).
* wreadln: optimize wreadln_delete_char() with memmove()Max Kellermann2008-10-061-3/+4
| | | | Let memmove() do the dirty work on overlapping buffers..
* wreadln: moved code to wreadln_delete()Max Kellermann2008-10-061-7/+16
| | | | | Remove some more clutter from wreadln() by merging the duplicate character deletion code to wreadln_delete_char().
* wreadln: return early from cursor movement functionsMax Kellermann2008-10-061-11/+13
| | | | Unclutter these functions by removing one indent level.
* wreadln: use unsigned integers and size_tMax Kellermann2008-10-062-15/+16
| | | | | Declare all screen position variables as "unsigned", and all buffer positions as "size_t". We don't need signed values.
* wreadln: use memcpy() for both casesMax Kellermann2008-10-061-11/+6
| | | | | | | | Use memcpy() even when the cursor is at the end. It copies only the trailing null terminator in this case. The constant "length" is declared here in preparation for the "wide character" patches.
* wreadln: use memmove() instead of an temporary bufferMax Kellermann2008-10-061-7/+2
| | | | | memmove() handles overlapping buffers well, we can use it to get room for the inserted character.
* wreadln: moved code to insert_byte()Max Kellermann2008-10-061-19/+25
| | | | Remove some clutter from wreadln(), isolate some code into a function.
* wreadln: static bufferMax Kellermann2008-10-061-18/+11
| | | | | | Since the buffer size is already known at compile time, don't do a second malloc() for it, declare it statically in struct wreadln. This way, it is going to be allocated on the stack.
* wreadln: added struct wreadlnMax Kellermann2008-10-061-94/+111
| | | | | Don't pass a dozen of parameters to all internal functions; pass a pointer to the wreadln struct instead.
* wreadln: removed parameter "x1"Max Kellermann2008-10-061-15/+11
| | | | | | | Several internal functions calculate the width of the input field by subtracting "x0" from "x1", although the width is already being passed to them. Eliminate the parameter "x1" in all functions, and use "width" instead.
* wreadln: convert public globals to local constantsMax Kellermann2008-10-063-15/+6
| | | | | Convert wrln_max_line_size and wrln_max_history_length to local constants. They have no real use outside of wreadln.c.
* wreadln: import screen_bell() from screen_utils.hMax Kellermann2008-10-061-3/+1
| | | | | Don't use "extern" outside of the headers, include the proper header instead.
* code style, indent with tabs XIIMax Kellermann2008-10-062-64/+61
| | | | Follow the same code style als MPD itself.
* removed my_wgetch(), switch to wgetch()Max Kellermann2008-10-066-24/+3
| | | | | There are no special cases left for my_wgetch() to handle. We can remove it and use the original wgetch() instead.
* disable ncurses raw modeMax Kellermann2008-10-063-18/+0
| | | | | We're better off doing our own signal handling, instead of switching ncurses to raw mode. Anyway, it was commented out and didn't work...
* wreadln: removed the disabled ncursesw codeMax Kellermann2008-10-061-384/+0
| | | | | The wide character version of wreadln() is currently a non-functional mess. Remove it for now, I will reimplement that later.
* screen: declare time constants as GTimeMax Kellermann2008-10-041-2/+2
| | | | | Variables which store integer seconds should be declared as GTime. This fixes a gcc warning.
* Do not include libgen.h, it is unneeded after commit 44ecb.Emanuele Giaquinta2008-10-041-4/+0
|
* use g_basename() instead of basename()Max Kellermann2008-10-041-1/+1
| | | | | Another occurence of the non-portable basename() wasn't converted to glib yet.
* store MPD_UPDATE_TIME as guintMax Kellermann2008-10-031-3/+3
| | | | | | The glib function g_timeout_add() wants the interval as guint in milliseconds. Store the update interval in this form, instead of having to multiply MPD_UPDATE_TIME with 1000.
* don't initialize sigaction struct twiceMax Kellermann2008-10-031-6/+3
| | | | | Don't reset sa_mask and sa_flags after every sigaction() call. Do it once.
* restart system call after SIGWINCHMax Kellermann2008-10-031-1/+1
| | | | | | Set option SA_RESTART for the SIGWINCH handler. The screen resizer function is called by the glib main loop anyway, no need to interrupt any random system call here.
* typo: ignore SIGPIPE instead of SIGWINCHMax Kellermann2008-10-031-2/+2
| | | | | | | Somehow the "ignore SIGPIPE" patch had a fatal typo: instead of ignoring SIGPIPE, it ignored SIGWINCH. Somehow ncurses managed to hide the bug's symptoms, but a recent patch finally broke it. Repair the typo.
* screen: export the global variable "screen"Max Kellermann2008-10-0314-99/+85
| | | | | screen_t is a singleton. We do not have to pass it around everywhere. Export the one global variable.
* screen: don't pass mpdclient pointer to method paint()Max Kellermann2008-10-039-33/+32
| | | | | None of the paint() implementations acutally uses the mpdclient pointer. Remove it from the method signature.
* screen_play: remember playlistMax Kellermann2008-10-031-18/+20
| | | | | | | Remove the last paint() dependency on the mpdclient pointer: remember a pointer to the playlist object, and don't take it from mpdclient every time we paint. Also add the variable "current_song_id" which is calculated in update().