diff -Nru vdr-1.6.0-2-br/dvbdevice.h vdr-1.6.0-2-br-gcc4.4//dvbdevice.h --- vdr-1.6.0-2-br/dvbdevice.h 2008-09-14 16:23:36.000000000 +0200 +++ vdr-1.6.0-2-br-gcc4.4//dvbdevice.h 2010-06-27 10:42:44.000000000 +0200 @@ -15,7 +15,7 @@ #include "device.h" #include "dvbspu.h" -#if DVB_API_VERSION != 3 +#if DVB_API_VERSION != 5 #error VDR requires Linux DVB driver API version 3! #endif diff -Nru vdr-1.6.0-2-br/menu.c vdr-1.6.0-2-br-gcc4.4//menu.c --- vdr-1.6.0-2-br/menu.c 2008-09-14 16:24:02.000000000 +0200 +++ vdr-1.6.0-2-br-gcc4.4//menu.c 2010-06-27 10:42:44.000000000 +0200 @@ -2463,7 +2463,7 @@ priority = recording->priority; lifetime = recording->lifetime; - char* p = strrchr(recording->Name(), '~'); + char* p = strrchr(const_cast(recording->Name()), '~'); if (p) { p++; Utf8Strn0Cpy(name, p, sizeof(name)); diff -Nru vdr-1.6.0-2-br/recording.c vdr-1.6.0-2-br-gcc4.4//recording.c --- vdr-1.6.0-2-br/recording.c 2008-09-14 16:24:10.000000000 +0200 +++ vdr-1.6.0-2-br-gcc4.4//recording.c 2010-06-27 10:42:44.000000000 +0200 @@ -554,8 +554,8 @@ 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); @@ -612,7 +612,7 @@ #endif /* SORTRECORDS */ fileName = strdup(FileName); FileName += strlen(VideoDirectory) + 1; - char *p = strrchr(FileName, '/'); + const char *p = strrchr(FileName, '/'); name = NULL; #ifdef USE_DVDARCHIVE @@ -1644,7 +1644,8 @@ if (recording) { cThreadLock DeletedRecordingsLock(&DeletedRecordings); Del(recording, false); - char *ext = strrchr(recording->FileName(), '.'); + // wtf? + char *ext = strrchr(const_cast(recording->FileName()), '.'); if (ext) { strncpy(ext, DELEXT, strlen(ext)); recording->fileSizeMB = DirSizeMB(recording->FileName()); diff -Nru vdr-1.6.0-2-br/svdrp.c vdr-1.6.0-2-br-gcc4.4//svdrp.c --- vdr-1.6.0-2-br/svdrp.c 2008-09-14 16:23:36.000000000 +0200 +++ vdr-1.6.0-2-br-gcc4.4//svdrp.c 2010-06-27 10:42:44.000000000 +0200 @@ -740,7 +740,7 @@ 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; @@ -799,16 +799,17 @@ 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 -Nru vdr-1.6.0-2-br/videodir.c vdr-1.6.0-2-br-gcc4.4//videodir.c --- vdr-1.6.0-2-br/videodir.c 2008-09-14 16:23:36.000000000 +0200 +++ vdr-1.6.0-2-br-gcc4.4//videodir.c 2010-06-27 10:43:06.000000000 +0200 @@ -198,7 +198,7 @@ { cString Name(FileName); char *p; - while ((p = strrchr((const char*)Name + 1, '/')) != NULL) { + while ((p = strrchr((char*)(const char*)Name + 1, '/')) != NULL) { *p = 0; // truncate at last '/' if (stat(Name, Stat) == 0) { isyslog("StatNearestDir: Stating %s", (const char*)Name);