- Update patch of command/decoder.cpp to allow vdr-plugin-markad to build successfully once multimedia/ffmpeg is updated to 3.0.x. Note that multimedia/ffmpeg is currently still on the 2.8.x branch, however this patch is backwards compatible with ffmpeg 2.8.x. The additional changes to this file were based on upstream bug report #1898 [1], and also the requirement to replace s/avcodec_alloc_frame/av_frame_alloc/g. - Regenerate patches with makepatch (pet portlint), and remove PATCH_STRIP=-p1 from Makefile. [1] https://projects.vdr-developer.org/issues/1898 PR: 209386 Reported by: antoine (PR207547) Reviewed by: mat (mentor) Approved by: adamw (mentor) Differential Revision: https://reviews.freebsd.org/D6283
138 lines
4.6 KiB
C++
138 lines
4.6 KiB
C++
--- 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);
|
|
}
|