From: Michael Tremer Date: Sun, 19 Aug 2012 19:24:52 +0000 (-0400) Subject: vdr: Fix build with GCC 4.4. X-Git-Tag: v2.13-beta1~239 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=07ee61b2f9df3569eb77b24e53047348a05abf77 vdr: Fix build with GCC 4.4. --- diff --git a/lfs/vdr b/lfs/vdr index af5b92150b..6907e00e3f 100644 --- a/lfs/vdr +++ b/lfs/vdr @@ -104,6 +104,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP)/PLUGINS/src && tar xvf $(DIR_DL)/$(DL_FILE4) cd $(DIR_APP)/PLUGINS/src && ln -s epgsearch-0.9.24 epgsearch cd $(DIR_APP) && patch -Np1 -i PLUGINS/src/epgsearch/patches/MainMenuHooks-v1_0.patch + cd $(DIR_APP)/PLUGINS/src/epgsearch && sed -i '/include/a #include /' \ + epgsearch.c + cd $(DIR_APP)/PLUGINS/src/epgsearch && patch -Np1 < $(DIR_SRC)/src/patches/vdr-plugin-epgsearch-gcc44.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vdr-1.6.0-gcc44-fixes.patch cd $(DIR_APP) && make VIDEODIR=/var/video plugins $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make VIDEODIR=/var/video vdr $(MAKETUNING) $(EXTRA_MAKE) cd $(DIR_APP) && make DFB_SUPPORT=1 FB_SUPPORT=1 VIDIX_SUPPORT=1 $(MAKETUNING) $(EXTRA_MAKE) diff --git a/src/patches/vdr-1.6.0-gcc44-fixes.patch b/src/patches/vdr-1.6.0-gcc44-fixes.patch new file mode 100644 index 0000000000..d8841d8b08 --- /dev/null +++ b/src/patches/vdr-1.6.0-gcc44-fixes.patch @@ -0,0 +1,62 @@ +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_cast(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_cast(FileName), '/'); + if (!slash) { + s = AddDirectory(grabImageDir, FileName); + FileName = s; + } +- slash = strrchr(FileName, '/'); // there definitely is one ++ slash = strrchr(const_cast(FileName), '/'); // there definitely is one + *slash = 0; + char *r = realpath(FileName, RealFileName); + *slash = '/'; diff --git a/src/patches/vdr-plugin-epgsearch-gcc44.patch b/src/patches/vdr-plugin-epgsearch-gcc44.patch new file mode 100644 index 0000000000..2a92a3b178 --- /dev/null +++ b/src/patches/vdr-plugin-epgsearch-gcc44.patch @@ -0,0 +1,78 @@ +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchsvdrp.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchsvdrp.c 2009-10-26 20:27:07.000000000 +0100 +@@ -742,12 +742,13 @@ + { + if (*Option) + { +- char* pipePos = strchr(Option, '|'); ++ const char* pipePos = strchr(Option, '|'); + if (pipePos) + { +- *pipePos = 0; +- const char* oldName = Option; +- const char* newName = pipePos+1; ++ int index = pipePos - Option; ++ char* oldName = strdup(Option); ++ *(oldName + index) = 0; ++ const char* newName = oldName + index + 1; + if (strlen(oldName) > 0 && strlen(newName) > 0) + { + cChannelGroup *changrp = ChannelGroups.GetGroupByName(Option); +@@ -769,15 +770,18 @@ + } + ChannelGroups.Save(); + SearchExts.Save(); ++ free(oldName); + return cString::sprintf("renamed channel group '%s' to '%s'", oldName, newName); + + } + else + { ++ free(oldName); + ReplyCode = 901; + return cString::sprintf("channel group '%s' not defined", Option); + } + } ++ free(oldName); + } + ReplyCode = 901; + return cString("Error in channel group parameters"); +diff -urNad vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c vdr-plugin-epgsearch-0.9.24/epgsearchtools.c +--- vdr-plugin-epgsearch-0.9.24~/epgsearchtools.c 2008-04-13 20:53:42.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/epgsearchtools.c 2009-10-26 20:27:07.000000000 +0100 +@@ -743,7 +743,7 @@ + while(tmp) + { + // extract a single line +- char* lf = strchr(tmp, '\n'); ++ const char* lf = strchr(tmp, '\n'); + char* line = NULL; + if (lf) + line = strndup(tmp, lf-tmp); +diff -urNad vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c vdr-plugin-epgsearch-0.9.24/menu_dirselect.c +--- vdr-plugin-epgsearch-0.9.24~/menu_dirselect.c 2008-04-13 20:53:44.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/menu_dirselect.c 2009-10-26 20:27:07.000000000 +0100 +@@ -83,7 +83,7 @@ + return 1; + do + { +- char* pos = strchr(szDir, '~'); ++ const char* pos = strchr(szDir, '~'); + if (pos) + { + iLevel++; +diff -urNad vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c +--- vdr-plugin-epgsearch-0.9.24~/searchtimer_thread.c 2008-04-28 18:22:31.000000000 +0200 ++++ vdr-plugin-epgsearch-0.9.24/searchtimer_thread.c 2009-10-26 20:27:28.000000000 +0100 +@@ -565,8 +565,8 @@ + if (!isempty(aux)) + { + tmpaux = strdup(aux); +- char* begin = strstr(aux, ""); +- char* end = strstr(aux, ""); ++ const char* begin = strstr(aux, ""); ++ const char* end = strstr(aux, ""); + if (begin && end) + { + if (begin == aux) strcpy(tmpaux, ""); else strn0cpy(tmpaux, aux, begin-aux+1);