[ANNOUNCE] VDR developer version 1.7.9

Message ID 4A91A6D1.7070007@gmail.com
State New
Headers

Commit Message

Anssi Hannula Aug. 23, 2009, 8:30 p.m. UTC
  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.
  

Patch

Index: vdr-1.7.9/vdr.c
===================================================================
--- vdr-1.7.9/vdr.c
+++ vdr-1.7.9/vdr.c	2009-08-23 23:26:15.935332431 +0300
@@ -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