| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Pressing 'l' switches to the file browser (screen_file) and locates
the previously selected song in the server's database.
|
|
|
|
|
|
| |
Don't store a pointer to the song passed to screen_lyrics_switch(),
duplicate it instead. In the long term, it is too unsafe to work with
a foreign pointer.
|
|
|
|
|
| |
Don't repaint the screen after browser_cmd() if another screen has
been selected meanwhile.
|
|
|
|
|
|
| |
Making the function return the index makes it more flexible: those who
want the pointer can use filelist_get(), and the others may use the
index for other purposes.
|
|
|
|
| |
"entity" is not being used after its initial assignment.
|
|
|
|
|
|
|
| |
When calling browser_change_directory() before a filelist was set,
ncmpc would crash due to a NULL pointer dereference. This scenario is
not possible currently, since the open() method allocates the
filelist.
|
|
|
|
| |
Return true/false instead of 0/-1.
|
| |
|
|
|
|
| |
screen_play.h was missing in the tarball.
|
|
|
|
|
|
|
| |
Fix a NULL pointer dereference and a memory leak: check if
screen_read_password() returns NULL, and don't call
mpd_sendPasswordCommand(NULL) in this case. Free the password
when done.
|
|
|
|
|
|
|
| |
* moved lirc_event to lirc.c and split out the parts that depend on
variables in main.c into three separate functions
* changed keyboard_event accordingly to avoid duplicate code
* merged lirc_event with ncmpc_lirc_get_command
|
|
|
|
|
| |
Use one g_utf8_collate() call instead of g_utf8_collate_key() twice
plus strcmp().
|
|
|
|
|
|
| |
No wreadln() caller cares about an empty string. Simplify the callers
by returning NULL instead of an allocated empty string. This fixes
several memory leaks.
|
|
|
|
|
| |
All functions must receive UTF-8 file names. Delete all which still
work with locale strings, and remove the _utf8 suffix from the others.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Free the old pattern before prompting for a new one. Free the old
filelist object before retrieving the new one.
|
| |
|
|
|
|
|
| |
The function browser_change_directory() did not free the return value
of g_path_get_dirname().
|
|
|
|
| |
Don't allocate and copy memory.
|
|
|
|
| |
The pointer has already been checked for NULL, eliminate that check.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Removed $Id$.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
The source command.h checks for configure.ac options, so it needs to
include config.h.
|
|
|
|
|
| |
Since the GError return value of g_convert_*() is ignored by ncmpc, we
don't need to retrieve it at all.
|
|
|
|
|
| |
Options which are disabled at compile time shouldn't reserve space for
their values in the options struct.
|
|
|
|
| |
Initialize the options struct statically.
|
|
|
|
| |
"reconnect" is always enabled. "debug" code has been removed.
|
| |
|
|
|
|
| |
Detect liblircclient with pkg-config.
|
|
|
|
|
| |
The "prog" argument of lirc_init() expects a non-const string.
Pass a local string variable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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(...).
|
|
|
|
|
| |
A local variable was only used by the lyrics screen code. Put #ifdef
around its declaration.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
The configure option "--disable-wide" disables wide character support.
This simplifies lots of internal calculations and makes the ncmpc
binary leaner.
|
|
|
|
|
| |
When compiling with libncursesw, include <ncursesw/ncurses.h> instead
of <ncurses.h> (if available).
|
|
|
|
| |
Let memmove() do the dirty work on overlapping buffers..
|
|
|
|
|
| |
Remove some more clutter from wreadln() by merging the duplicate
character deletion code to wreadln_delete_char().
|
|
|
|
| |
Unclutter these functions by removing one indent level.
|
|
|
|
|
| |
Declare all screen position variables as "unsigned", and all buffer
positions as "size_t". We don't need signed values.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
memmove() handles overlapping buffers well, we can use it to get room
for the inserted character.
|
|
|
|
| |
Remove some clutter from wreadln(), isolate some code into a function.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Don't pass a dozen of parameters to all internal functions; pass a
pointer to the wreadln struct instead.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Convert wrln_max_line_size and wrln_max_history_length to local
constants. They have no real use outside of wreadln.c.
|
|
|
|
|
| |
Don't use "extern" outside of the headers, include the proper header
instead.
|