aboutsummaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authorJuergen Lock <nox@FreeBSD.org>2011-03-26 19:18:18 +0000
committerJuergen Lock <nox@FreeBSD.org>2011-03-26 19:18:18 +0000
commit64f3861442f393e33ffeae8143047216adf36ccf (patch)
treee1ceb847eefbe511dcbad2eea5f9c911418ba331 /multimedia
parentcebeac87712e72006b582b214fc68ea4dd27c8dd (diff)
downloadports-64f3861442f393e33ffeae8143047216adf36ccf.tar.gz
ports-64f3861442f393e33ffeae8143047216adf36ccf.zip
This plugin reads infosat EPG data from DVB-S. WWW: http://projects.vdr-developer.org/projects/show/plg-infosatepg
Notes
Notes: svn path=/head/; revision=271801
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/Makefile1
-rw-r--r--multimedia/vdr-plugin-infosatepg/Makefile36
-rw-r--r--multimedia/vdr-plugin-infosatepg/distinfo2
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-Makefile21
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-filter.cpp110
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-filter.h13
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-global.cpp40
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-global.h22
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-infosatepg.cpp11
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-process.cpp26
-rw-r--r--multimedia/vdr-plugin-infosatepg/files/patch-readline.cpp50
-rw-r--r--multimedia/vdr-plugin-infosatepg/pkg-descr5
-rw-r--r--multimedia/vdr-plugin-infosatepg/pkg-plist4
13 files changed, 341 insertions, 0 deletions
diff --git a/multimedia/Makefile b/multimedia/Makefile
index 8ced98e27aca..37aecf4396bf 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -338,6 +338,7 @@
SUBDIR += vdr-plugin-control
SUBDIR += vdr-plugin-epgsearch
SUBDIR += vdr-plugin-femon
+ SUBDIR += vdr-plugin-infosatepg
SUBDIR += vic
SUBDIR += vlc
SUBDIR += vodcatcher
diff --git a/multimedia/vdr-plugin-infosatepg/Makefile b/multimedia/vdr-plugin-infosatepg/Makefile
new file mode 100644
index 000000000000..b7a414d74580
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/Makefile
@@ -0,0 +1,36 @@
+# New ports collection makefile for: vdr-plugin-infosatepg
+# Date created: Wed Apr 14 18:11:42 CEST 2010
+# Whom: Juergen Lock <nox@freebsd.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= vdr-plugin-infosatepg
+PORTVERSION= 0.0.11
+PORTREVISION= 6
+CATEGORIES= multimedia
+MASTER_SITES= http://projects.vdr-developer.org/attachments/download/342/
+DISTNAME= ${PORTNAME:S/-plugin-/-/}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}
+EXTRACT_SUFX= .tgz
+
+MAINTAINER= nox@FreeBSD.org
+COMMENT= Video Disk Recorder - infosat EPG plugin
+
+PATCH_STRIP= -p1
+HAVE_CONFIGURE= yes
+PORTDOCS= COPYING README
+MAKE_JOBS_SAFE= yes
+WRKSRC= ${WRKDIR}/${PLUGIN}-${DISTVERSION}
+
+.include "${.CURDIR}/../vdr/Makefile.plugins"
+
+post-patch: post-patch-plugin
+
+post-install: post-install-pluginlocales
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${DOCSDIR})
+.endif
+ ${INSTALL} -o ${VDR_USER} -g ${VDR_GROUP} -d /var/cache/vdr/${PLUGIN}
+
+.include <bsd.port.mk>
diff --git a/multimedia/vdr-plugin-infosatepg/distinfo b/multimedia/vdr-plugin-infosatepg/distinfo
new file mode 100644
index 000000000000..b9b123f29030
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/distinfo
@@ -0,0 +1,2 @@
+SHA256 (vdr/vdr-infosatepg-0.0.11.tgz) = 14495b07f15f928b9ae66d6ec2f6e9639aa0cf86865900b7d6a9e212d7eb80ac
+SIZE (vdr/vdr-infosatepg-0.0.11.tgz) = 35585
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-Makefile b/multimedia/vdr-plugin-infosatepg/files/patch-Makefile
new file mode 100644
index 000000000000..442e90a98803
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-Makefile
@@ -0,0 +1,21 @@
+--- a/Makefile
++++ b/Makefile
+@@ -97,7 +97,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
+
+ libvdr-$(PLUGIN).so: $(OBJS)
+ $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
++ifdef FREEBSD
++ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
++else
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
++endif
+
+ dist: clean
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
+@@ -110,3 +114,6 @@ dist: clean
+
+ clean:
+ @-rm -f $(OBJS) $(DEPFILE) *.so* *.tgz core* *~ $(PODIR)/*.mo $(PODIR)/*.pot
++
++install:
++ ${INSTALL_PROGRAM} $(LIBDIR)/libvdr-$(PLUGIN).so.$(APIVERSION) $(PREFIX)/lib/vdr/libvdr-$(PLUGIN).so.$(APIVERSION)
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-filter.cpp b/multimedia/vdr-plugin-infosatepg/files/patch-filter.cpp
new file mode 100644
index 000000000000..262ac078db15
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-filter.cpp
@@ -0,0 +1,110 @@
+--- a/filter.cpp
++++ b/filter.cpp
+@@ -6,6 +6,9 @@
+ * $Id$
+ */
+
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
+ #include <netinet/if_ether.h>
+ #include <unistd.h>
+
+@@ -47,24 +50,32 @@ u_short cFilterInfosatepg::foldsum(u_lon
+ return ((u_short) ~sum);
+ }
+
+-u_short cFilterInfosatepg::IPChecksum(iphdr *ipHeader)
++u_short cFilterInfosatepg::IPChecksum(ip *ipHeader)
+ {
+- return foldsum(do_sum(0, (u_char*) ipHeader, sizeof(iphdr)));
++ return foldsum(do_sum(0, (u_char*) ipHeader, sizeof(ip)));
+
+ } /* IpChecksum() */
+
+
+-u_short cFilterInfosatepg::UDPChecksum(iphdr *ipHeader, udphdr *udpHeader)
++u_short cFilterInfosatepg::UDPChecksum(ip *ipHeader, udphdr *udpHeader)
+ {
+ u_long sum = 0;
+
+ // Ip-Pseudo-Header
+- sum = do_sum(sum, (u_char*)(&ipHeader->saddr), sizeof(ipHeader->saddr));
+- sum = do_sum(sum, (u_char*)(&ipHeader->daddr), sizeof(ipHeader->daddr));
++ sum = do_sum(sum, (u_char*)(&ipHeader->ip_src), sizeof(ipHeader->ip_src));
++ sum = do_sum(sum, (u_char*)(&ipHeader->ip_dst), sizeof(ipHeader->ip_dst));
++#ifdef __linux__
+ sum += udpHeader->len;
+- sum += ipHeader->protocol<<8;
++#else
++ sum += udpHeader->uh_ulen;
++#endif
++ sum += ipHeader->ip_p<<8;
+
++#ifdef __linux__
+ sum = do_sum(sum, (u_char*)udpHeader, ntohs(udpHeader->len));
++#else
++ sum = do_sum(sum, (u_char*)udpHeader, ntohs(udpHeader->uh_ulen));
++#endif
+
+ return foldsum(sum);
+ }
+@@ -78,27 +89,27 @@ void cFilterInfosatepg::Process(u_short
+
+ if (Data[0]!=0x3E) return;
+
+- struct ethhdr eth_hdr;
+- memset(&eth_hdr,0,sizeof(struct ethhdr));
++ struct ether_header eth_hdr;
++ memset(&eth_hdr,0,sizeof(struct ether_header));
+
+- eth_hdr.h_dest[0]=Data[11];
+- eth_hdr.h_dest[1]=Data[10];
+- eth_hdr.h_dest[2]=Data[9];
+- eth_hdr.h_dest[3]=Data[8];
+- eth_hdr.h_dest[4]=Data[4];
+- eth_hdr.h_dest[5]=Data[3];
++ eth_hdr.ether_dhost[0]=Data[11];
++ eth_hdr.ether_dhost[1]=Data[10];
++ eth_hdr.ether_dhost[2]=Data[9];
++ eth_hdr.ether_dhost[3]=Data[8];
++ eth_hdr.ether_dhost[4]=Data[4];
++ eth_hdr.ether_dhost[5]=Data[3];
+
+ // check mac and range
+ if (!global->CheckMAC(&eth_hdr)) return;
+
+- int mac = eth_hdr.h_dest[5];
++ int mac = eth_hdr.ether_dhost[5];
+ global->ActualMac=mac;
+
+- struct iphdr *ip_hdr = (iphdr *) &Data[SECT_IP_HDR_START];
++ struct ip *ip_hdr = (ip *) &Data[SECT_IP_HDR_START];
+ struct udphdr *udp_hdr = (udphdr *) &Data[SECT_UDP_HDR_START];
+
+ // Only IPv4
+- if (ip_hdr->version!=4) return;
++ if (ip_hdr->ip_v!=4) return;
+
+ // Check IP checksum
+ if (IPChecksum(ip_hdr)!=0)
+@@ -108,7 +119,7 @@ void cFilterInfosatepg::Process(u_short
+ }
+
+ // Only UDP
+- if (ip_hdr->protocol!=17) return;
++ if (ip_hdr->ip_p!=17) return;
+
+ // Check UDP checksum
+ if (UDPChecksum(ip_hdr,udp_hdr)!=0)
+@@ -149,8 +160,8 @@ void cFilterInfosatepg::Process(u_short
+
+
+ #ifdef VDRDEBUG
+- dsyslog("infosatepg: mac=%02x-%02x-%02x-%02x-%02x-%02x",eth_hdr.h_dest[0],eth_hdr.h_dest[1],
+- eth_hdr.h_dest[2],eth_hdr.h_dest[3],eth_hdr.h_dest[4],eth_hdr.h_dest[5] );
++ dsyslog("infosatepg: mac=%02x-%02x-%02x-%02x-%02x-%02x",eth_hdr.ether_dhost[0],eth_hdr.ether_dhost[1],
++ eth_hdr.ether_dhost[2],eth_hdr.ether_dhost[3],eth_hdr.ether_dhost[4],eth_hdr.ether_dhost[5] );
+
+ dsyslog("infosatepg: tid=%04i tbl=%04i stbl=%04i day=%02i month=%02i pktnr=%03i pktcnt=%03i len=%i",
+ ntohs(ishdr->technisatId),ishdr->tableId,ishdr->tablesubId,ishdr->day,
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-filter.h b/multimedia/vdr-plugin-infosatepg/files/patch-filter.h
new file mode 100644
index 000000000000..12eba25de4c9
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-filter.h
@@ -0,0 +1,13 @@
+--- a/filter.h
++++ b/filter.h
+@@ -33,8 +33,8 @@ private:
+ cGlobalInfosatepg *global;
+ u_long do_sum(u_long sum, u_char *buf, int nBytes);
+ u_short foldsum(u_long sum);
+- u_short IPChecksum(iphdr *ipHeader);
+- u_short UDPChecksum(iphdr *ipHeader, udphdr *udpHeader);
++ u_short IPChecksum(ip *ipHeader);
++ u_short UDPChecksum(ip *ipHeader, udphdr *udpHeader);
+ protected:
+ virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
+ public:
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-global.cpp b/multimedia/vdr-plugin-infosatepg/files/patch-global.cpp
new file mode 100644
index 000000000000..ef930518b315
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-global.cpp
@@ -0,0 +1,40 @@
+--- a/global.cpp
++++ b/global.cpp
+@@ -164,7 +164,11 @@ cGlobalInfosatepg::cGlobalInfosatepg()
+ MAC[3]=0x02;
+ MAC[4]=0x02;
+ WaitTime=10; // default 10 seconds
++#ifdef __FreeBSD__
++ SetDirectory ("/var/cache/vdr/infosatepg");
++#else
+ SetDirectory ("/tmp");
++#endif
+ NoWakeup=false;
+ NoDeferredShutdown=false;
+ ActualMac=0;
+@@ -194,17 +198,17 @@ bool cGlobalInfosatepg::SetDirectory(con
+ return true;
+ }
+
+-bool cGlobalInfosatepg::CheckMAC(struct ethhdr *eth_hdr)
++bool cGlobalInfosatepg::CheckMAC(ether_header *eth_hdr)
+ {
+ if (!eth_hdr) return false;
+- if (eth_hdr->h_dest[0]!=MAC[0]) return false;
+- if (eth_hdr->h_dest[1]!=MAC[1]) return false;
+- if (eth_hdr->h_dest[2]!=MAC[2]) return false;
+- if (eth_hdr->h_dest[3]!=MAC[3]) return false;
+- if (eth_hdr->h_dest[4]!=MAC[4]) return false;
++ if (eth_hdr->ether_dhost[0]!=MAC[0]) return false;
++ if (eth_hdr->ether_dhost[1]!=MAC[1]) return false;
++ if (eth_hdr->ether_dhost[2]!=MAC[2]) return false;
++ if (eth_hdr->ether_dhost[3]!=MAC[3]) return false;
++ if (eth_hdr->ether_dhost[4]!=MAC[4]) return false;
+
+- if (eth_hdr->h_dest[5]<EPG_FIRST_DAY_MAC) return false;
+- if (eth_hdr->h_dest[5]>EPG_LAST_DAY_MAC) return false;
++ if (eth_hdr->ether_dhost[5]<EPG_FIRST_DAY_MAC) return false;
++ if (eth_hdr->ether_dhost[5]>EPG_LAST_DAY_MAC) return false;
+
+ return true;
+ }
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-global.h b/multimedia/vdr-plugin-infosatepg/files/patch-global.h
new file mode 100644
index 000000000000..3d2c418628a0
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-global.h
@@ -0,0 +1,22 @@
+--- a/global.h
++++ b/global.h
+@@ -9,8 +9,10 @@
+ #ifndef __global_h_
+ #define __global_h_
+
++#include <sys/socket.h>
+ #include <netinet/if_ether.h>
+ #include <sys/types.h>
++#include <ctype.h>
+
+ #include <vdr/channels.h>
+ #include <vdr/timers.h>
+@@ -162,7 +164,7 @@ public:
+ return directory;
+ }
+ bool SetDirectory (const char *Directory);
+- bool CheckMAC (struct ethhdr *eth_hdr);
++ bool CheckMAC (ether_header *eth_hdr);
+ void SetWaitTimer()
+ {
+ timer=time (NULL);
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-infosatepg.cpp b/multimedia/vdr-plugin-infosatepg/files/patch-infosatepg.cpp
new file mode 100644
index 000000000000..620910c6656e
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-infosatepg.cpp
@@ -0,0 +1,11 @@
+--- a/infosatepg.cpp
++++ b/infosatepg.cpp
+@@ -403,7 +403,7 @@ cString cPluginInfosatepg::SVDRPCommand(
+ cString head2;
+ head2="\n" \
+ " | | missed | | | unlocated\n" \
+- " Day | Date | Packets | Received %% | Processed | Events\n" \
++ " Day | Date | Packets | Received % | Processed | Events\n" \
+ "------+--------+---------+------------+------------+----------\n";
+
+ cString mstr;
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-process.cpp b/multimedia/vdr-plugin-infosatepg/files/patch-process.cpp
new file mode 100644
index 000000000000..7abc929f0483
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-process.cpp
@@ -0,0 +1,26 @@
+--- a/process.cpp
++++ b/process.cpp
+@@ -1047,7 +1047,9 @@ bool cProcessInfosatepg::ParseInfosatepg
+ int ieventnr=1;
+ cChannel *chan=NULL;
+ cInfosatevent *ievent=NULL;
+-#if VDRVERSNUM < 10701
++// XXX don't default to assuming UTF-8 on FreeBSD (that's what the NULL does),
++// its still often used without.
++#if VDRVERSNUM < 10701 || defined(__FreeBSD__)
+ cCharSetConv *conv = new cCharSetConv("ISO-8859-1",cCharSetConv::SystemCharacterTable() ?
+ cCharSetConv::SystemCharacterTable() : "UTF-8");
+ #else
+@@ -1139,7 +1141,12 @@ bool cProcessInfosatepg::ParseInfosatepg
+ }
+ int shour,sminute;
+ char *title;
++#ifdef __FreeBSD__
++ title = (char *)malloc(strlen(s));
++ fields=sscanf(s,"%d:%d %[^^]",&shour,&sminute,title);
++#else
+ fields=sscanf(s,"%d:%d %a[^^]",&shour,&sminute,&title);
++#endif
+ if (fields==3)
+ {
+ if (!ievent) ievent = new cInfosatevent;
diff --git a/multimedia/vdr-plugin-infosatepg/files/patch-readline.cpp b/multimedia/vdr-plugin-infosatepg/files/patch-readline.cpp
new file mode 100644
index 000000000000..c16dbcdbb13a
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/files/patch-readline.cpp
@@ -0,0 +1,50 @@
+--- a/readline.cpp
++++ b/readline.cpp
+@@ -10,6 +10,15 @@
+ #include <stdio.h>
+ #include "readline.h"
+
++#ifdef __FreeBSD__
++#include <string.h>
++#if __FreeBSD_version > 800000
++#define HAVE_GETLINE
++#endif
++#else
++#define HAVE_GETLINE
++#endif
++
+ extern char *strcatrealloc(char *dest, const char *src);
+
+ // --- cReadLineInfosatepg ---------------------------------------------------
+@@ -36,7 +45,31 @@ char *cReadLineInfosatepg::Read(FILE *f,
+ do
+ {
+ ext=false;
++#ifndef HAVE_GETLINE
++ size_t n;
++
++ if (!tempbuffer)
++ {
++ if (!(tempbuffer = (char *)malloc(tempsize = 4096)))
++ return NULL;
++ }
++ if (!fgets(tempbuffer, tempsize, f))
++ {
++ if (tempbuffer) free(tempbuffer);
++ return buffer;
++ }
++ while ((n = strlen(tempbuffer)) >= tempsize - 1 &&
++ tempbuffer[n - 1] != '\n')
++ {
++ if (!(tempbuffer = (char *)realloc(tempbuffer, tempsize * 2)))
++ return NULL;
++ tempsize *= 2;
++ if (!fgets(tempbuffer + n, tempsize - n, f))
++ break;
++ }
++#else
+ int n = getline(&tempbuffer, &tempsize, f);
++#endif
+ if (n > 0)
+ {
+ if (tempbuffer[n-1] == '\n')
diff --git a/multimedia/vdr-plugin-infosatepg/pkg-descr b/multimedia/vdr-plugin-infosatepg/pkg-descr
new file mode 100644
index 000000000000..909346f183c1
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/pkg-descr
@@ -0,0 +1,5 @@
+http://vdr-wiki.de/wiki/index.php/Infosatepg-plugin
+
+This plugin reads infosat EPG data from DVB-S.
+
+WWW: http://projects.vdr-developer.org/projects/show/plg-infosatepg
diff --git a/multimedia/vdr-plugin-infosatepg/pkg-plist b/multimedia/vdr-plugin-infosatepg/pkg-plist
new file mode 100644
index 000000000000..305b7f3f6ed5
--- /dev/null
+++ b/multimedia/vdr-plugin-infosatepg/pkg-plist
@@ -0,0 +1,4 @@
+lib/vdr/libvdr-infosatepg.so.1.7.17
+@exec /usr/bin/install -o %%VDR_USER%% -g %%VDR_GROUP%% -d /var/cache/vdr/infosatepg
+%%NLS%%share/locale/de_DE/LC_MESSAGES/vdr-infosatepg.mo
+%%NLS%%share/locale/it_IT/LC_MESSAGES/vdr-infosatepg.mo