diff options
Diffstat (limited to 'multimedia/vdr-plugin-markad/files/patch-command_markad-standalone.cpp')
-rw-r--r-- | multimedia/vdr-plugin-markad/files/patch-command_markad-standalone.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/multimedia/vdr-plugin-markad/files/patch-command_markad-standalone.cpp b/multimedia/vdr-plugin-markad/files/patch-command_markad-standalone.cpp new file mode 100644 index 000000000000..3417fbdee961 --- /dev/null +++ b/multimedia/vdr-plugin-markad/files/patch-command_markad-standalone.cpp @@ -0,0 +1,138 @@ +--- command/markad-standalone.cpp.orig 2012-09-11 11:06:28 UTC ++++ command/markad-standalone.cpp +@@ -24,7 +24,13 @@ + #include <locale.h> + #include <libintl.h> + #include <execinfo.h> ++#ifndef __FreeBSD__ + #include <mntent.h> ++#else ++#include <netinet/in.h> ++#include <sys/socket.h> ++#include <sys/mount.h> ++#endif + #include <utime.h> + #include <math.h> + #include <limits.h> +@@ -1428,6 +1434,7 @@ bool cMarkAdStandalone::SaveInfo() + time_t cMarkAdStandalone::GetBroadcastStart(time_t start, int fd) + { + // get broadcast start from atime of directory (if the volume is mounted with noatime) ++#ifndef __FreeBSD__ + struct mntent *ent; + struct stat statbuf; + FILE *mounts=setmntent(_PATH_MOUNTED,"r"); +@@ -1454,6 +1461,14 @@ time_t cMarkAdStandalone::GetBroadcastSt + } + } + endmntent(mounts); ++#else ++ struct stat statbuf; ++ struct statfs statfsbuf; ++ bool useatime=false; ++ if ((statfs(directory, &statfsbuf) == 0) && ++ !(statfsbuf.f_flags & MNT_NOATIME)) ++ useatime=true; ++#endif + + if ((useatime) && (stat(directory,&statbuf)!=-1)) + { +@@ -1554,6 +1569,16 @@ bool cMarkAdStandalone::LoadInfo() + if (lf) *lf=0; + char *cr=strchr(macontext.Info.ChannelName,13); + if (cr) *cr=0; ++#if 1 ++ int len = strlen(macontext.Info.ChannelName); ++ if (len > 5 && ++ (!strcmp(macontext.Info.ChannelName + len - 4, " (A)") || ++ !strcmp(macontext.Info.ChannelName + len - 4, " (C)") || ++ !strcmp(macontext.Info.ChannelName + len - 4, " (S)") || ++ !strcmp(macontext.Info.ChannelName + len - 4, " (T)") || ++ !strcmp(macontext.Info.ChannelName + len - 4, " (I)"))) ++ macontext.Info.ChannelName[len - 4] = '\0'; ++#endif + for (int i=0; i<(int) strlen(macontext.Info.ChannelName); i++) + { + if (macontext.Info.ChannelName[i]==' ') macontext.Info.ChannelName[i]='_'; +@@ -1961,10 +1986,14 @@ bool cMarkAdStandalone::CreatePidfile() + int pid; + if (fscanf(oldpid,"%10i\n",&pid)==1) + { ++#ifndef __FreeBSD__ + char procname[256]=""; + snprintf(procname,sizeof(procname),"/proc/%i",pid); + struct stat statbuf; + if (stat(procname,&statbuf)!=-1) ++#else ++ if (kill(pid, 0) == 0) ++#endif + { + // found another, running markad + fprintf(stderr,"another instance is running on %s",directory); +@@ -2081,6 +2110,7 @@ cMarkAdStandalone::cMarkAdStandalone(con + } + } + ++#ifndef __FreeBSD__ + long lb; + errno=0; + lb=sysconf(_SC_LONG_BIT); +@@ -2089,6 +2119,7 @@ cMarkAdStandalone::cMarkAdStandalone(con + isyslog("starting v%s (%libit)",VERSION,lb); + } + else ++#endif + { + isyslog("starting v%s",VERSION); + } +@@ -2319,7 +2350,7 @@ cMarkAdStandalone::~cMarkAdStandalone() + RemovePidfile(); + } + +-bool isnumber(const char *s) ++bool str_isnumber(const char *s) + { + while (*s) + { +@@ -2345,7 +2376,11 @@ int usage(int svdrpport) + " ignores hints from info(.vdr) file\n" + " <info> 4 = ignore timer info\n" + "-l --logocachedir\n" ++#ifdef DATADIR ++ " directory where logos stored, default " DATADIR "/logos\n" ++#else + " directory where logos stored, default /var/lib/markad\n" ++#endif + "-p --priority=<priority>\n" + " software priority of markad when running in background\n" + " <priority> from -20...19, default 19\n" +@@ -2489,7 +2524,11 @@ int main(int argc, char *argv[]) + config.logoHeight=-1; + config.threads=-1; + strcpy(config.svdrphost,"127.0.0.1"); ++#ifdef DATADIR ++ strcpy(config.logoDirectory,DATADIR "/logos"); ++#else + strcpy(config.logoDirectory,"/var/lib/markad"); ++#endif + + struct servent *serv=getservbyname("svdrp","tcp"); + if (serv) +@@ -2620,7 +2659,7 @@ int main(int argc, char *argv[]) + + case 'p': + // --priority +- if (isnumber(optarg) || *optarg=='-') ++ if (str_isnumber(optarg) || *optarg=='-') + niceLevel = atoi(optarg); + else + { +@@ -2806,7 +2845,7 @@ int main(int argc, char *argv[]) + break; + + case 9: // --svdrpport +- if (isnumber(optarg) && atoi(optarg) > 0 && atoi(optarg) < 65536) ++ if (str_isnumber(optarg) && atoi(optarg) > 0 && atoi(optarg) < 65536) + { + config.svdrpport=atoi(optarg); + } |