Commits


don't send the song' path to the player process we're not relying anymore on the file extension, so this information is useless for the player.


we have no bugs :)


don't call player_sendeof on IMSG_STOP the refactoring introduced this error where we call report an EOF upon IMSG_STOP, making the player infinitely loop.


add a simple filetype detector instead of relying on file extension just a bit of "magic" :) Flac are easy, they always start with "fLaC". mp3 are weird because they either start with "ID3" (but this theoretically only ensures that's a tagged file, not an mp3) or 0xFF 0xFB. Ogg Opus should have a magic sequence "OpusHead" somewhere near the start of the file but also have the ogg' "OggS" magic bytes. I hope it's enough to distinguish between Ogg Opus and Vorbis. Another option would be to refactor play_oggvorbis/opus to not close the file on failure and try in cascade the play_* functions, but it's more complex and this solution seems to be enough.


don't leak file descriptor on player_playnext failure


refactor player_playnext: return status code let the caller decide to call senderr or sendeof.


be slightly more informative on failures


use the standard Ds width for the options listing


we're on -current now


amused 0.5 * unbreak opus and ogg vorbis * handle flacs with bps != 16 and/or channels != 2 * speed up `load' a lot (especially if over NFS)


add back missing memzero


use a more readable strncmp to look for prefixes also while here stick an `else' before the second clausole. We're supposed to trim out only '> ' and ' ', but the missing else would also trim out ' ' after a '> '!


get rid of realpath during load it has a non-ignorable cost over NFS (sdk@ reported ~30 seconds to load 64k songs, and up to 5 minutes over wifi!) and don't provide us any real gain: files can still vanish after being imported or may appear later. The only advantage of realpath was that it would clean up the path from segments like "/./" and resolve the ".." components, but that's a minor issue anyway. prodded by, discussed with and tested by sdk@, thanks a lot!


typo


tweak the readme