Small, fast and powerful console music player for Unix-like operating systems.
C C++ Shell Other
Latest commit 20a738d Feb 19, 2018
trevorparker and flyingmutant Correct parsing for cue files with byte order mark (#774)
* Correct parsing for cue files with byte order mark

Cue files which have a byte order mark are improperly parsed. Currently,
if there is a byte order mark present and a valid cue token on the first
line of the file, the token is not recognized and the first line of cue
data is missed. For my use case, the first line would the the album
title, and therefore any cue files in my library would be displayed with
`<No Title>` as the album title.

This commit looks for the presence of a UTF-8 byte order mark and
advances the file buffer beyond it. In UTF-8, the byte order mark isn't
recommended and really serves no purpose other than to signify the
beginning of a UTF-8 stream.
Permalink
Failed to load latest commit information.
.github Add GitHub issue template Mar 19, 2016
Doc Merge pull request #759 from jcs/master Jan 9, 2018
contrib Update documentation to use CMUS_SOCKET Feb 26, 2015
data Added dracula theme Feb 9, 2018
ip handle "REM COMPILATION TRUE" in cue generated by XLD Oct 9, 2017
op Merge pull request #614 from t6/patch-2 Jan 28, 2017
scripts Fix depfile generation Jun 23, 2017
.gitignore Add GitHub issue template Mar 19, 2016
.travis.yml Remove libcue dependency from travis Oct 17, 2016
AUTHORS Make the seek command not start playing when the player was stopped. May 4, 2016
COPYING update COPYING Apr 28, 2011
Makefile Revert "Fix #574 (deadlocks in player.c)" Dec 4, 2017
README.md Fixed Linux kernel style link Apr 18, 2017
ape.c ape: make sure corruption check does not underflow Apr 27, 2015
ape.h Bug #177: Include guards became consistent. Sep 5, 2014
browser.c Change mmap_file size parameter to ssize_t Oct 15, 2016
browser.h Bug #177: Include guards became consistent. Sep 5, 2014
buffer.c Bump VA copyright year with the help of sed Jan 3, 2013
buffer.h Bug #177: Include guards became consistent. Sep 5, 2014
cache.c Yield cache mutex during cache updates Sep 27, 2016
cache.h Yield cache mutex during cache updates Sep 27, 2016
channelmap.c Bump VA copyright year with the help of sed Jan 3, 2013
channelmap.h Bug #177: Include guards became consistent. Sep 5, 2014
cmdline.c Bump VA copyright year with the help of sed Jan 3, 2013
cmdline.h Bump VA copyright year with the help of sed Jan 3, 2013
cmus-status-display replace insecure use of /tmp in cmus Mar 9, 2010
cmus.c Add command to raise VTE window + implement MPRIS Raise method Dec 8, 2017
cmus.h Add command to raise VTE window + implement MPRIS Raise method Dec 8, 2017
command_mode.c Add command to raise VTE window + implement MPRIS Raise method Dec 8, 2017
command_mode.h Bug #177: Include guards became consistent. Sep 5, 2014
comment.c BPM metadata support Jan 26, 2016
comment.h Bug #177: Include guards became consistent. Sep 5, 2014
compiler.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
configure Merge pull request #592 from nsoudee/master Feb 20, 2017
convert.c fix clang compiler warnings Oct 7, 2013
convert.h Bug #177: Include guards became consistent. Sep 5, 2014
cue.c Correct parsing for cue files with byte order mark (#774) Feb 19, 2018
cue.h handle "REM COMPILATION TRUE" in cue generated by XLD Oct 9, 2017
cue_utils.c Switch cue_utils to new cue parser Oct 16, 2016
cue_utils.h Switch cue_utils to new cue parser Oct 16, 2016
debug.c Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
debug.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
discid.c Bump VA copyright year with the help of sed Jan 3, 2013
discid.h Bug #177: Include guards became consistent. Sep 5, 2014
editable.c Split editable into editable and editable_shared Jul 31, 2016
editable.h Split editable into editable and editable_shared Jul 31, 2016
expr.c Fix initialization of union (#631) Feb 5, 2017
expr.h Bug #177: Include guards became consistent. Sep 5, 2014
file.c Change mmap_file size parameter to ssize_t Oct 15, 2016
file.h Change mmap_file size parameter to ssize_t Oct 15, 2016
filters.c Fixed issue #554 (factivate) Oct 14, 2016
filters.h Fixed issue #554 (factivate) Oct 14, 2016
format_print.c Fix segfault in format_skip_cond_expr Feb 5, 2017
format_print.h Bug #177: Include guards became consistent. Sep 5, 2014
gbuf.c Bump VA copyright year with the help of sed Jan 3, 2013
gbuf.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
glob.c Bump VA copyright year with the help of sed Jan 3, 2013
glob.h Bug #177: Include guards became consistent. Sep 5, 2014
help.c Add a size parameter to opt_get_cb Jul 13, 2016
help.h Bug #177: Include guards became consistent. Sep 5, 2014
history.c remove trailing whitespace Oct 2, 2013
history.h Bug #177: Include guards became consistent. Sep 5, 2014
http.c Remove useless increment Feb 25, 2016
http.h Bug #177: Include guards became consistent. Sep 5, 2014
id3.c Split "min" into "min_i" and "min_u" Jul 13, 2016
id3.h BPM metadata support Jan 26, 2016
input.c Make LIBDIR/DATADIR configurable at runtime Sep 22, 2016
input.h Bug #177: Include guards became consistent. Sep 5, 2014
ip.h Add plugin ABI versioning checks Jul 13, 2016
iter.h Bug #177: Include guards became consistent. Sep 5, 2014
job.c Remove CONFIG_CUE guards from job.c Oct 16, 2016
job.h Add multiple playlists feature Jul 31, 2016
keys.c re-added / and ? hard coded bindings as a fallback solution for existing Jan 16, 2017
keys.h Bug #177: Include guards became consistent. Sep 5, 2014
keyval.c Bump VA copyright year with the help of sed Jan 3, 2013
keyval.h Bug #177: Include guards became consistent. Sep 5, 2014
lib.c Add lib_add_filter option Sep 26, 2016
lib.h Add lib_add_filter option Sep 26, 2016
list.h Add list_add, list_prev, list_len Jul 31, 2016
load_dir.c Bump VA copyright year with the help of sed Jan 3, 2013
load_dir.h Bug #177: Include guards became consistent. Sep 5, 2014
locking.c Improve fifo_mutex performance Sep 28, 2016
locking.h Remove compound literal from constant expression Oct 25, 2016
main.c Add player-pause-playback command (#415) Apr 10, 2016
mergesort.c Bump VA copyright year with the help of sed Jan 3, 2013
mergesort.h Bug #177: Include guards became consistent. Sep 5, 2014
misc.c Make LIBDIR/DATADIR configurable at runtime Sep 22, 2016
misc.h Make LIBDIR/DATADIR configurable at runtime Sep 22, 2016
mixer.h use a void ptr instead of an unsigned for option multiplexing Jul 4, 2016
mpris.c Add command to raise VTE window + implement MPRIS Raise method Dec 8, 2017
mpris.h use macros in mpris.h Jun 26, 2016
op.h Add plugin ABI versioning checks Jul 13, 2016
options.c options: add color_win_cur_attr Dec 11, 2017
options.h options: add color_win_cur_attr Dec 11, 2017
output.c Make LIBDIR/DATADIR configurable at runtime Sep 22, 2016
output.h Bug #177: Include guards became consistent. Sep 5, 2014
path.c Bump VA copyright year with the help of sed Jan 3, 2013
path.h Bug #177: Include guards became consistent. Sep 5, 2014
pcm.c fix clang compiler warnings Oct 7, 2013
pcm.h Bug #177: Include guards became consistent. Sep 5, 2014
pl.c Ignore `follow` when a playlist is activated Oct 29, 2016
pl.h Have pl_add_file_* return the file validity Oct 29, 2016
play_queue.c Split editable into editable and editable_shared Jul 31, 2016
play_queue.h Add an opaque parameter to for_each_ti_cb Jul 31, 2016
player.c Revert "Fix #574 (deadlocks in player.c)" Dec 4, 2017
player.h Revert "Fix #574 (deadlocks in player.c)" Dec 4, 2017
prog.c Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
prog.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
rbtree.c Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
rbtree.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
read_wrapper.c Bump VA copyright year with the help of sed Jan 3, 2013
read_wrapper.h Bug #177: Include guards became consistent. Sep 5, 2014
search.c Allow the search head to be updated Jul 31, 2016
search.h Allow the search head to be updated Jul 31, 2016
search_mode.c Added vim-like search history nav with ^P and ^N Apr 4, 2017
search_mode.h Bug #177: Include guards became consistent. Sep 5, 2014
server.c Merge branch 'get_opt' of https://github.com/mahkoh/cmus into mahkoh-… Aug 25, 2016
server.h Bug #177: Include guards became consistent. Sep 5, 2014
sf.h simplify sf_bigendian May 12, 2016
spawn.c Bump VA copyright year with the help of sed Jan 3, 2013
spawn.h Bug #177: Include guards became consistent. Sep 5, 2014
tabexp.c Bump VA copyright year with the help of sed Jan 3, 2013
tabexp.h Bug #177: Include guards became consistent. Sep 5, 2014
tabexp_file.c Bump VA copyright year with the help of sed Jan 3, 2013
tabexp_file.h Bug #177: Include guards became consistent. Sep 5, 2014
track.c Add _simple_track_search_matches Jul 31, 2016
track.h Add simple_track_to_shuffle_track Jul 31, 2016
track_info.c Remove double-inclusion of stdatomic header Aug 4, 2017
track_info.h Privatize the means of reference counting Sep 27, 2016
tree.c Change album_add_track to always add the track Feb 25, 2017
u_collate.c Initialize str_locale since convert may not initialize them Feb 25, 2016
u_collate.h Bug #177: Include guards became consistent. Sep 5, 2014
uchar.c fix character width of halfwidth forms Sep 12, 2014
uchar.h Bug #177: Include guards became consistent. Sep 5, 2014
ui_curses.c Merge pull request #759 from jcs/master Jan 9, 2018
ui_curses.h Add volatile modifier to sig_atomic_t Sep 26, 2016
unidecomp.h Map unicode punctation/quotation characters to ASCII ones Jun 27, 2011
utils.h added strip_trailing_spaces() function that removes spaces/tabs at th… Dec 29, 2016
window.c Split "min" into "min_i" and "min_u" Jul 13, 2016
window.h Add multiple playlists feature Jul 31, 2016
worker.c Start the worker only at the end of init_all Sep 26, 2016
worker.h Start the worker only at the end of init_all Sep 26, 2016
xmalloc.c Bump VA copyright year with the help of sed Jan 3, 2013
xmalloc.h Bug #177: Clean-up of reserved identifier violations Sep 5, 2014
xstrjoin.c Make xstrjoin accept arbitrarily many arguments Jul 31, 2016
xstrjoin.h Make xstrjoin accept arbitrarily many arguments Jul 31, 2016

README.md

cmus — C* Music Player

https://cmus.github.io/

Build Status

Copyright © 2004-2008 Timo Hirvonen tihirvon@gmail.com

Copyright © 2008-2017 Various Authors

Configuration

List available optional features

$ ./configure --help

Auto-detect everything

$ ./configure

To disable some feature, arts for example, and install to $HOME run

$ ./configure prefix=$HOME CONFIG_ARTS=n

After running configure you can see from the generated config.mk file what features have been configured in (see the CONFIG_* options).

Note: For some distributions you need to install development versions of the dependencies. For example if you want to use 'mad' input plugin (mp3) you need to install libmad0-dev (Debian) or libmad-devel (RPM) package. After installing dependencies you need to run ./configure again, of course.

If you want to use the Tremor library as alternative for decoding Ogg/Vorbis files you have to pass CONFIG_TREMOR=y to the configure script:

$ ./configure CONFIG_VORBIS=y CONFIG_TREMOR=y

The Tremor library is supposed to be used on hardware that has no FPU.

Building

$ make

Or on some BSD systems you need to explicitly use GNU make:

$ gmake

Installation

$ make install

Or to install to a temporary directory:

$ make install DESTDIR=~/tmp/cmus

This is useful when creating binary packages.

Remember to replace make with gmake if needed.

Manuals

$ man cmus-tutorial

And

$ man cmus

Mailing List

To subscribe to cmus-devel@lists.sourceforge.net or view the archive visit http://lists.sourceforge.net/lists/listinfo/cmus-devel.

The mailing list now serves as an archive for old releases and issues. Please use the github issues page for any problems, suggestions, or bug reports.

Reporting Bugs

Bugs should be reported using the Github issue tracker. When creating a new issue, a template will be shown containing instructions on how to collect the necessary information.

Additional debug information can be found in ~/cmus-debug.txt if you configured cmus with maximum debug level (./configure DEBUG=2). In case of a crash the last lines may be helpful.

Git Repository

https://github.com/cmus/cmus

$ git clone https://github.com/cmus/cmus.git

Hacking

cmus uses the Linux kernel coding style. Use hard tabs. Tabs are always 8 characters wide. Keep the style consistent with rest of the code.

Bug fixes and implementations of new features should be suggested as a pull request directly on Github.