Re: What about vdr-1.6.1?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Dienstag, 16. Juni 2009, Joachim Welker wrote:
> Hi Klaus,
> I see you are very busy in developing the new vdr-1.7.* (thanks for your
> great work !). But what about stable vdr-1.6.0? You released two patches
> which should result in version vdr-1.6.1. AFAIR there were no complaints
> about these patches, so I think it's save to release vdr-1.6.1 in order to
> rule off the last stable version.
>
Well, if the goal is to release a vdr-1.6.1 version,
I suggest to first collect further patches needed to compile it on recent 
systems:
* compiling with gcc-4.4 and glibc-2.10: fixing some variable const issues and 
some other warnings
* compiling against linux-headers with s2api (api version 5)

The gentoo versions of these patches are attached.
The gcc-4.4 patch is based on Ludwig Nussels version plus improvments of 
Klaus. The last const_cast is replaced by using the fileName member of 
cRecording as cRecordings is a friend class.

I don't know if more fixes are floating around that need to be applied.

Regards
Matthias
diff --git a/recording.c b/recording.c
--- a/recording.c
+++ b/recording.c
@@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
      Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
      Subtitle = SubtitleBuffer;
      }
-  char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
-  char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
+  const char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
+  const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
   if (macroTITLE || macroEPISODE) {
      name = strdup(Timer->File());
      name = strreplace(name, TIMERMACRO_TITLE, Title);
@@ -551,7 +551,7 @@ cRecording::cRecording(const char *FileName)
   sortBuffer = NULL;
   fileName = strdup(FileName);
   FileName += strlen(VideoDirectory) + 1;
-  char *p = strrchr(FileName, '/');
+  const char *p = strrchr(FileName, '/');
 
   name = NULL;
   info = new cRecordingInfo;
@@ -1022,7 +1022,7 @@ void cRecordings::DelByName(const char *FileName)
   if (recording) {
      cThreadLock DeletedRecordingsLock(&DeletedRecordings);
      Del(recording, false);
-     char *ext = strrchr(recording->FileName(), '.');
+     char *ext = strrchr(recording->fileName, '.');
      if (ext) {
         strncpy(ext, DELEXT, strlen(ext));
         recording->fileSizeMB = DirSizeMB(recording->FileName());
diff --git a/svdrp.c b/svdrp.c
--- a/svdrp.c
+++ b/svdrp.c
@@ -736,7 +736,7 @@ void cSVDRP::CmdGRAB(const char *Option)
      char *strtok_next;
      FileName = strtok_r(p, delim, &strtok_next);
      // image type:
-     char *Extension = strrchr(FileName, '.');
+     const char *Extension = strrchr(FileName, '.');
      if (Extension) {
         if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
            Jpeg = true;
@@ -795,16 +795,17 @@ void cSVDRP::CmdGRAB(const char *Option)
      char RealFileName[PATH_MAX];
      if (FileName) {
         if (grabImageDir) {
-           cString s;
-           char *slash = strrchr(FileName, '/');
+           cString s(FileName);
+           FileName = s;
+           const char *slash = strrchr(FileName, '/');
            if (!slash) {
               s = AddDirectory(grabImageDir, FileName);
               FileName = s;
               }
            slash = strrchr(FileName, '/'); // there definitely is one
-           *slash = 0;
-           char *r = realpath(FileName, RealFileName);
-           *slash = '/';
+           cString t(s);
+           t.Truncate(slash - FileName);
+           char *r = realpath(t, RealFileName);
            if (!r) {
               LOG_ERROR_STR(FileName);
               Reply(501, "Invalid file name \"%s\"", FileName);
diff --git a/channels.c b/channels.c
--- a/channels.c
+++ b/channels.c
@@ -574,7 +574,7 @@ void cChannel::SetLinkChannels(cLinkChannels *LinkChannels)
      }
   else
      q += sprintf(q, " none");
-  dsyslog(buffer);
+  dsyslog("%s", buffer);
 }
 
 void cChannel::SetRefChannel(cChannel *RefChannel)
diff --git a/device.c b/device.c
--- a/device.c
+++ b/device.c
@@ -529,7 +529,7 @@ eVideoSystem cDevice::GetVideoSystem(void)
   return vsPAL;
 }
 
-//#define PRINTPIDS(s) { char b[500]; char *q = b; q += sprintf(q, "%d %s ", CardIndex(), s); for (int i = 0; i < MAXPIDHANDLES; i++) q += sprintf(q, " %s%4d %d", i == ptOther ? "* " : "", pidHandles[i].pid, pidHandles[i].used); dsyslog(b); }
+//#define PRINTPIDS(s) { char b[500]; char *q = b; q += sprintf(q, "%d %s ", CardIndex(), s); for (int i = 0; i < MAXPIDHANDLES; i++) q += sprintf(q, " %s%4d %d", i == ptOther ? "* " : "", pidHandles[i].pid, pidHandles[i].used); dsyslog("%s", b); }
 #define PRINTPIDS(s)
 
 bool cDevice::HasPid(int Pid) const
diff --git a/pat.c b/pat.c
--- a/pat.c
+++ b/pat.c
@@ -144,7 +144,7 @@ void cCaDescriptors::AddCaDescriptor(SI::CaDescriptor *d, bool Stream)
   q += sprintf(q, "CAM: %04X %5d %5d %04X %d -", source, transponder, serviceId, d->getCaType(), Stream);
   for (int i = 0; i < nca->Length(); i++)
       q += sprintf(q, " %02X", nca->Data()[i]);
-  dsyslog(buffer);
+  dsyslog("%s", buffer);
 #endif
 }
 
diff --git a/receiver.c b/receiver.c
--- a/receiver.c
+++ b/receiver.c
@@ -40,7 +40,7 @@ cReceiver::~cReceiver()
 {
   if (device) {
      const char *msg = "ERROR: cReceiver has not been detached yet! This is a design fault and VDR will segfault now!";
-     esyslog(msg);
+     esyslog("%s", msg);
      fprintf(stderr, "%s\n", msg);
      *(char *)0 = 0; // cause a segfault
      }
diff -ru vdr-1.6.0-orig/dvbdevice.h vdr-1.6.0/dvbdevice.h
--- vdr-1.6.0-orig/dvbdevice.h	2009-01-12 14:05:10.000000000 +0100
+++ vdr-1.6.0/dvbdevice.h	2009-01-12 14:05:52.000000000 +0100
@@ -15,7 +15,7 @@
 #include "device.h"
 #include "dvbspu.h"
 
-#if DVB_API_VERSION != 3
+#if (DVB_API_VERSION != 3) && (DVB_API_VERSION != 5)
 #error VDR requires Linux DVB driver API version 3!
 #endif
 
_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux