Ville Skyttä wrote:
On Friday 27 February 2009, Ville Skyttä wrote:
I'm trying to build VDR 1.6.0-2 for the upcoming Fedora 11 release which
has gcc 4.4. There are a bunch of compilation errors as gcc has again
become less forgiving for C++ than it used to be.
One very common source of problems is explained here:
http://markmail.org/message/e5y6atneqztuvpw6#query:
+page:1+mid:hdkehz7bgl5b6vgc+state:results
There are quite a few of these problems in VDR 1.6.0-2 (error: invalid
conversion from 'const char*' to 'char*'). I started patching but quickly
realized that this is a job for someone who actually knows what he's doing.
[...]
...but until there's a real fix available, the attached ugly patch at least
makes the build succeed with gcc 4.4.
So gcc 4.4 finally hit openSUSE as well. I use the attached patch to
make vdr compile. Seems to work fine too. The code that requires
those const casts is really ugly though.
cu
Ludwig
--
(o_ Ludwig Nussel
//\
V_/_ http://www.suse.de/
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg)
Index: vdr-1.6.0/recording.c
===
--- vdr-1.6.0.orig/recording.c
+++ vdr-1.6.0/recording.c
@@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, co
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 *FileN
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,8 @@ void cRecordings::DelByName(const char *
if (recording) {
cThreadLock DeletedRecordingsLock(DeletedRecordings);
Del(recording, false);
- char *ext = strrchr(recording-FileName(), '.');
+ // wtf?
+ char *ext = strrchr(const_castchar*(recording-FileName()), '.');
if (ext) {
strncpy(ext, DELEXT, strlen(ext));
recording-fileSizeMB = DirSizeMB(recording-FileName());
Index: vdr-1.6.0/svdrp.c
===
--- vdr-1.6.0.orig/svdrp.c
+++ vdr-1.6.0/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;
@@ -796,12 +796,12 @@ void cSVDRP::CmdGRAB(const char *Option)
if (FileName) {
if (grabImageDir) {
cString s;
- char *slash = strrchr(FileName, '/');
+ char *slash = strrchr(const_castchar*(FileName), '/');
if (!slash) {
s = AddDirectory(grabImageDir, FileName);
FileName = s;
}
- slash = strrchr(FileName, '/'); // there definitely is one
+ slash = strrchr(const_castchar*(FileName), '/'); // there definitely is one
*slash = 0;
char *r = realpath(FileName, RealFileName);
*slash = '/';
___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr