aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-09-21wreadln: adding additional line editing bindsJ. Alexander Treuman1-1/+9
Adding some GNU readline-style binds. These are ^B/^F to move the cursor back/forward, and ^N/^P to go to the next/previous line.
2008-09-21mpdclient: don't call screen_status_message()Max Kellermann1-2/+0
The caller should decide how to display error messages.
2008-09-21Adding crop feature in ncmpcYannick LM6-0/+44
The "crop" command deletes all songs from the playlist, except the one currently being played.
2008-09-21screen_help: removed update() methodMax Kellermann1-13/+6
Why redraw the help screen when nothing has changed? Redraw it only after help_cmd(), and when explicitly requested (help_paint()).
2008-09-19filelist: fix segfault during filelist_sort()Max Kellermann1-1/+13
When I converted the filelist from GList to GPtrArray, I missed that the GCompareFunc does not actually get the pointers from g_ptr_array_sort(), but pointers to the pointers... run g_ptr_array_sort_with_data() instead with a wrapper function.
2008-09-19filelist: free entries with g_slice_free()Max Kellermann1-2/+2
Somehow I forgot about changing free() to g_slice_free() in the previous patch...
2008-09-19filelist: allocate entries with g_slice_alloc()Max Kellermann1-4/+2
In this case, slices are faster. Also fix a memory leak in filelist_prepend() which I simply forgot about in the last patch set.
2008-09-19filelist: use GPtrArray instead of GListMax Kellermann5-63/+57
Since we do a lot of indexed accesses to the filelist, a linked list doesn't seem appropriate. Use GPtrArray instead.
2008-09-19browser: added function browser_get_selected()Max Kellermann1-9/+11
browser_get_selected() checks if there is a file list and a valid selection, and returns the selected entry.
2008-09-19screen_search: free second file listMax Kellermann1-0/+1
Fix a memory leak: the concatened list was never freed.
2008-09-19filelist: provide more functions for working with a filelistMax Kellermann7-58/+124
Avoid direct accesses to the filelist struct, provide an API for that.
2008-09-19filelist: drop "mpdclient" prefixMax Kellermann8-18/+16
The separate filelist library does not depend on mpdclient, so the prefix is superfluous.
2008-09-19browser: use mpdclient_filelist_find_song() in set_highlight()Max Kellermann1-18/+9
A song should not be twice in the browser. Simplify set_highlight() by finding the entry with mpdclient_filelist_find_song().
2008-09-19browser: song must not be NULL in set_highlight()Max Kellermann1-2/+1
The caller must not pass NULL to set_highlight(). Replaced check with assertion.
2008-09-19filelist: song must not be NULLMax Kellermann1-1/+4
A caller must not pass NULL to mpdclient_filelist_find_song(). Replace the check with an assertion.
2008-09-19mpdclient: moved code to filelist.cMax Kellermann5-77/+126
Move everything which is solely filelist related to filelist.c and filelist.h. Fix the indentation of that file, and provide the struct name "filelist". Don't clear data in mpdclient_filelist_free() before calling g_free(). Constify the "song" parameter to mpdclient_filelist_find_song().
2008-09-19code style, indent with tabs VIIMax Kellermann1-23/+16
Follow the same code style als MPD itself.
2008-09-19fix terminal resizing (SIGWINCH)Max Kellermann1-0/+33
When I replaced ncmpc's old main loop with g_main_loop from libglib, SIGWINCH (i.e. window resizing) stopped working. This regression was caused by the fact that ncurses' wgetch() function was only called when there was actually data on STDIN. wgetch() has several side effects besides reading data from STDIN, for example it checks whether there has been a window resize. Fix this with a custom SIGWINCH handler.
2008-09-18removed the clock screenMax Kellermann8-250/+0
Why should an audio player display a large clock?
2008-09-18screen_browser: removed entity.song!=NULL checkMax Kellermann1-6/+5
It is guaranteed that the "song" attribute is not NULL, remove the check.
2008-09-18screen_browser: removed redundant highlight checkMax Kellermann1-6/+5
browser_select_entry() checked the entry's "highlight" flag twice: the first time, it was toggled, and the second time, action was performed based on the flag. Merge the two checks.
2008-09-18screen_browser: removed redundant entity type checksMax Kellermann1-14/+10
The function browser_select_entry() returns early when the entity type is not "SONG". No need to double check that.
2008-09-18screen_browser: moved code to browser_select_entry()Max Kellermann2-52/+26
Moved code from browser_handle_select(). Call this new function also from browser_handle_select_all(). This fixes a bug in select_all(): it actually did not select all, but stopped after the first song.
2008-09-18screen_browser: removed commented codeMax Kellermann1-15/+0
2008-09-18screen_browser: moved code to browser_playlist_changed()Max Kellermann5-49/+39
Merge code from all 3 browser screens into one generic browser function.
2008-09-18screen_browser: moved code to screen_browser.cMax Kellermann6-507/+542
Isolate the generic browser code from the directory browser.
2008-09-18screen_browser: added struct screen_browserMax Kellermann4-185/+208
We are going to separate the browser functions from screen_file.c. Move all variables which are going to be needed by this code.
2008-09-18renamed screen_browse.h to screen_browser.hMax Kellermann5-4/+4
2008-09-18code style, indent with tabs VIMax Kellermann4-550/+515
Follow the same code style als MPD itself.
2008-09-18added support for wide charactersMax Kellermann2-4/+17
This patch was taken from bug 476, author unknown (http://www.musicpd.org/mantis/view.php?id=476). It changes the definition of my_strlen(): instead of returning the number of UTF-8 characters, it counts the number of terminal cells occupied by a string.
2008-09-18code style, indent with tabs VMax Kellermann1-87/+81
Follow the same code style als MPD itself.
2008-09-18screen: don't handle CMD_PLAYMax Kellermann1-0/+2
CMD_PLAY is mapped to the Enter key by default. Some screens (mis-)use it for navigation, for entering a directory. The playlist screen actually plays the file under the cursor. On all other screens, pressing Enter may be confusing, since it is more of a "confirmation" key instead of "play". We should probaby add CMD_CONFIRM later, but for now, disable the general CMD_PLAY handler in screen.c. This fixes bug 240.
2008-09-18libmpdclient: added resolver libraryMax Kellermann4-199/+327
The resolver library provides unified access to all resolvers (getaddrinfo(), gethostbyname(), Unix domain sockets). Like getaddrinfo(), it can return more than one address for a host name. This fixes bug 1517 (http://www.musicpd.org/mantis/view.php?id=1517).
2008-09-18quit with g_main_loop_quit()Max Kellermann2-5/+5
Call g_main_loop_quit() on CMD_QUIT, instead of exit() with an atexit() handler.
2008-09-18playlist: reset id in playlist_clear()Max Kellermann1-0/+2
The playlist is reset when the connection to the MPD server is closed. After a successful reconnect, we have to reload the full playlist. To remember this, also reset the id attribute.
2008-09-18playlist: removed "updated" flagMax Kellermann4-8/+3
The caller may check the playlist.id instead of checking the old "updated" flag.
2008-09-18use the glib main event loopMax Kellermann5-90/+157
This big patch replaces our custom main loop with the event based glib main loop. This has several advantages: we can make all the tiny code bits in the main loop independent from each others, we can add additional file descriptors for polling (e.g. the mpdclient socket). We don't need the ncurses timeout() anymore, because glib will poll stdin for us.
2008-09-18screen: check MPD status only if connectedMax Kellermann3-42/+61
Fix several segmentation faults: when the connection to the MPD server is lost, there were NULL pointer dereferences because client->status==NULL. Check before accessing it.
2008-09-18screen: moved code to screen_client_cmd()Max Kellermann1-9/+24
Move all command handlers which need a connection to the MPD server to screen_client_cmd(). This will allow us to unify error handling later.
2008-09-18main: connect while UI is displayedMax Kellermann1-39/+21
Display the UI always, and show connection errors there. This fixes a lot of consistency problems: error messages used to be printed to stderr, but afterwards, the atexit() handlers deinitialized ncurses and the screen was cleared. This patch is still problematic, but constitutes a good step forward.
2008-09-18libmpdclient: moved code to mpd_recv(), mpd_wait()Max Kellermann1-90/+129
Create generic utility functions for doint I/O: two wait functions, and mpd_recv() fills the input buffer. These functions are used in mpd_newConnection() and mpd_getNextReturnElement().
2008-09-18libmpdclient: smaller input bufferMax Kellermann2-6/+5
Even for large responses, 16kB should be enough. There is no performance gain for larger buffers, even if MPD is local.
2008-09-18libmpdclient: smaller error bufferMax Kellermann2-21/+23
512 characters should be well enough for error messages which are actually being displayed somewhere. Use sizeof(errorStr) instead of MPD_BUFFER_MAX_LENGTH everywhere. Do proper length checking when copying the output buffer to errorStr.
2008-09-18libmpdclient: use memmove() instead of strcpy() for moving the bufferMax Kellermann1-8/+8
In general, don't treat the input buffer as a null-terminated string: don't append '\0', don't use strchr() and strtok(). To delete consumed portions of the buffer, strcpy() is bad anyway, because it does not allow overlapping buffers.
2008-09-18libmpdclient: don't strdup() MPD's welcome messageMax Kellermann1-7/+3
Why bother duplicating the buffer, when we can simply parse the response directly from the input buffer?
2008-09-18libmpdclient: use size_t and ssize_tMax Kellermann2-5/+6
When working with buffer lengths and recv() results, we should declare size_t and ssize_t variables, otherwise the code may fail on 64 bit machines.
2008-09-18screen: removed empty methodsMax Kellermann4-49/+0
Declaring empty methods is of no use. If a method is empty, we should set it to NULL in the screen_functions struct.
2008-09-18screen: removed NULL checkMax Kellermann1-2/+1
Since the screen's initialization is guaranteed, we can remove the NULL check in center_playing_item().
2008-09-17screen_artist: fix compilation errorsMax Kellermann1-26/+29
Unfortunately when I fixed the GCC warnings and refactored lots of the code, the "artist" screen was disabled. This patch applies all API changes and fixes all warnings.
2008-09-17code style, indent with tabs IVMax Kellermann5-471/+449
Follow the same code style als MPD itself.