Hello, 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. Anyway, attached is a patch against VDR 1.6.0-2 that fixes the first few of these errors. Approach with caution: I'm fairly confident that for example the changes to cRecordings::DelByName are not the right thing to do but then again I might not understand what it's doing anyway (changing the extension of the filename to .del but not actually renaming the file accordingly?). In addition to these errors, similar ones exist at least in StatNearestDir (videodir.c) cSVDRP::CmdGRAB. Help appreciated! By the way, in case someone runs into it, some recent changes in DVB headers (as in current Fedora devel) have caused other unrelated compilation issues, -D__KERNEL_STRICT_NAMES appears to be needed to get compilation past dvbdevice.c. See https://bugzilla.redhat.com/show_bug.cgi?id=483644
diff -up vdr-1.6.0/recording.c~ vdr-1.6.0/recording.c --- vdr-1.6.0/recording.c~ 2008-02-24 12:28:53.000000000 +0200 +++ vdr-1.6.0/recording.c 2009-02-27 21:18:55.000000000 +0200 @@ -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,15 +1022,17 @@ void cRecordings::DelByName(const char * if (recording) { cThreadLock DeletedRecordingsLock(&DeletedRecordings); Del(recording, false); - char *ext = strrchr(recording->FileName(), '.'); + char *NewName = strdup(recording->FileName()); + char *ext = strrchr(NewName, '.'); if (ext) { strncpy(ext, DELEXT, strlen(ext)); - recording->fileSizeMB = DirSizeMB(recording->FileName()); + recording->fileSizeMB = DirSizeMB(NewName); recording->deleted = time(NULL); DeletedRecordings.Add(recording); } else delete recording; + free(NewName); ChangeState(); TouchUpdate(); }
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr