[ANNOUNCE] VDR developer version 1.7.9
Commit Message
Anssi Hannula wrote:
> Thank you. The bug is in libcap header file
> /usr/include/sys/capability.h
>
> It does evil stuff like this:
>
> 25 /*
> 26 * Make sure we can be included from userland by preventing
> 27 * capability.h from including other kernel headers
> 28 */
> 29 #define _LINUX_TYPES_H
> 30 #define _LINUX_FS_H
> 31 #define __LINUX_COMPILER_H
> 32 #define __user
> 33
> 34 typedef unsigned int __u32;
> 35 typedef __u32 __le32;
>
> This completely prevents including /usr/include/linux/types.h, etc.
>
> It seems my distro has a patch that removes all the above lines to
> resolve this issue. I'll try contacting libcap upstream on this issue.
In the meantime, attached is a workaround that contains a clear comment
describing the issue.
===================================================================
@@ -32,7 +32,6 @@
#include <pwd.h>
#include <signal.h>
#include <stdlib.h>
-#include <sys/capability.h>
#include <sys/prctl.h>
#include <termios.h>
#include <unistd.h>
@@ -64,6 +63,9 @@
#include "tools.h"
#include "transfer.h"
#include "videodir.h"
+// include this one last due to some versions of it being buggy:
+// http://www.linuxtv.org/pipermail/vdr/2009-August/021194.html
+#include <sys/capability.h>
#define MINCHANNELWAIT 10 // seconds to wait between failed channel switchings
#define ACTIVITYTIMEOUT 60 // seconds before starting housekeeping