A re-write of the firefly media server (mt-daapd). It's released under GPLv2+. Please note that this git repository is a mirror of the official one at git://git.debian.org/~jblache/forked-daapd.git
Disclaimer: I am not a programmer, I just tinker with a bunch of FreeBSD boxes and have developed very rudimentary code reading skills that enable me to fix an odd syntax bug here and there, provided it's very easy, and also use /* and */ if something does not compile.
Now, I've been toying around with forked-daapd since almost the beginning. I even maintain a small patch set for my own use, since I run a patched copy of ffmpeg (basically a modified mov.c to extract tracknumber and tracktotal correctly from m4a files) and wanted my copy of forked-daapd to use the added functionality. Introducing the changes to ffmpeg has proved impossible.
Ever since AirPlay was introduced, I have not been able to compile the software. (The functionality should be more modular, as in "./configure --without-airplay" or something, but that's another story.) Today I messed around with it some more and finally managed.
System: FreeBSD 8.2 PRE, everything compiled with base system gcc, binutils are from the ports, ANTLR 3.2, libavl, libplist and libunistring installed by hand.
Problem #1:
player.c: In function 'device_activate_cb':
player.c:1644: error: 'cmd' undeclared (first use in this function)
player.c:1644: error: (Each undeclared identifier is reported only once
player.c:1644: error: for each function it appears in.)
Relevant section in file:
elif defined(FreeBSD) || defined(FreeBSD_kernel)
if (cmd.ret != -2)
cmd.ret = -1;
goto out;
endif
I think it should read instead:
elif defined(FreeBSD) || defined(FreeBSD_kernel)
if (cur_cmd->ret != -2)
cur_cmd->ret = -1;
goto out;
endif
Problem #2:
raop.c:49:20: error: endian.h: No such file or directory
Relevant section in file:
include
I think it should read instead:
if defined(linux)
include
elif defined(FreeBSD) || defined(FreeBSD_kernel)
include <sys/endian.h>
endif
Problem #3:
IPv6 support as implemented in raop.c just plain does not work on FreeBSD, I am unable to fix it (but I bet someone can who is not me) and I just commented it out on both occasions:
raop.c: In function 'raop_v2_timing_cb':
raop.c:1954: error: 'struct in6_addr' has no member named 's6_addr32'
raop.c:1954: error: 'struct in6_addr' has no member named 's6_addr32'
raop.c: In function 'raop_v2_control_cb':
raop.c:2316: error: 'struct in6_addr' has no member named 's6_addr32'
raop.c:2316: error: 'struct in6_addr' has no member named 's6_addr32'
Having made those three minor adjustments, stuff compiles and works on FreeBSD without a glitch.
Does somebody care or am I clapping with one hand here?
Disclaimer: I am not a programmer, I just tinker with a bunch of FreeBSD boxes and have developed very rudimentary code reading skills that enable me to fix an odd syntax bug here and there, provided it's very easy, and also use /* and */ if something does not compile.
Now, I've been toying around with forked-daapd since almost the beginning. I even maintain a small patch set for my own use, since I run a patched copy of ffmpeg (basically a modified mov.c to extract tracknumber and tracktotal correctly from m4a files) and wanted my copy of forked-daapd to use the added functionality. Introducing the changes to ffmpeg has proved impossible.
Ever since AirPlay was introduced, I have not been able to compile the software. (The functionality should be more modular, as in "./configure --without-airplay" or something, but that's another story.) Today I messed around with it some more and finally managed.
System: FreeBSD 8.2 PRE, everything compiled with base system gcc, binutils are from the ports, ANTLR 3.2, libavl, libplist and libunistring installed by hand.
Problem #1:
player.c: In function 'device_activate_cb': player.c:1644: error: 'cmd' undeclared (first use in this function) player.c:1644: error: (Each undeclared identifier is reported only once player.c:1644: error: for each function it appears in.)
Relevant section in file:
elif defined(FreeBSD) || defined(FreeBSD_kernel)
endif
I think it should read instead:
elif defined(FreeBSD) || defined(FreeBSD_kernel)
endif
Problem #2:
raop.c:49:20: error: endian.h: No such file or directory
Relevant section in file:
include
I think it should read instead:
if defined(linux)
include
elif defined(FreeBSD) || defined(FreeBSD_kernel)
include <sys/endian.h>
endif
Problem #3:
IPv6 support as implemented in raop.c just plain does not work on FreeBSD, I am unable to fix it (but I bet someone can who is not me) and I just commented it out on both occasions:
raop.c: In function 'raop_v2_timing_cb': raop.c:1954: error: 'struct in6_addr' has no member named 's6_addr32' raop.c:1954: error: 'struct in6_addr' has no member named 's6_addr32' raop.c: In function 'raop_v2_control_cb': raop.c:2316: error: 'struct in6_addr' has no member named 's6_addr32' raop.c:2316: error: 'struct in6_addr' has no member named 's6_addr32'
Having made those three minor adjustments, stuff compiles and works on FreeBSD without a glitch.
Does somebody care or am I clapping with one hand here?