mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-28 10:08:24 +00:00
09b9dd6fc5
Submitted by: pointyhat via bapt
1247 lines
36 KiB
Plaintext
1247 lines
36 KiB
Plaintext
Index: Make.config.template
|
|
@@ -8,6 +8,11 @@
|
|
#
|
|
# $Id: Make.config.template 2.8 2012/03/20 11:20:13 kls Exp $
|
|
|
|
+OSTYPE ?= $(shell uname -s)
|
|
+ifeq ($(OSTYPE),FreeBSD)
|
|
+FREEBSD=1
|
|
+endif
|
|
+
|
|
### The C compiler and options:
|
|
|
|
CC = gcc
|
|
@@ -28,11 +33,22 @@ PREFIX = $(DESTDIR)/usr/local
|
|
MANDIR = $(PREFIX)/man
|
|
BINDIR = $(PREFIX)/bin
|
|
|
|
+ifdef FREEBSD
|
|
+# you have to set DVBDIR to a valid path!!!
|
|
+# you will need extra patches for DVBDIR!!!
|
|
+#DVBDIR = /usr/local/include
|
|
+LOCDIR = $(PREFIX)/share/locale
|
|
+PLUGINDIR = ./PLUGINS
|
|
+PLUGINLIBDIR = $(PREFIX)/lib/vdr
|
|
+VIDEODIR = /video
|
|
+CONFDIR = $(PREFIX)/etc/vdr
|
|
+else
|
|
LOCDIR = ./locale
|
|
PLUGINDIR = ./PLUGINS
|
|
PLUGINLIBDIR = $(PLUGINDIR)/lib
|
|
VIDEODIR = /video
|
|
CONFDIR = $(VIDEODIR)
|
|
+endif
|
|
|
|
### The remote control:
|
|
|
|
@@ -46,3 +62,7 @@ LIRC_DEVICE = /var/run/lirc/lircd
|
|
ifdef DVBDIR
|
|
INCLUDES += -I$(DVBDIR)/include
|
|
endif
|
|
+
|
|
+ifdef FREEBSD
|
|
+INCLUDES += -I$(VDRDIR)/include -I/usr/local/include
|
|
+endif
|
|
Index: Makefile
|
|
@@ -8,6 +8,11 @@
|
|
|
|
.DELETE_ON_ERROR:
|
|
|
|
+OSTYPE ?= $(shell uname -s)
|
|
+ifeq ($(OSTYPE),FreeBSD)
|
|
+FREEBSD=1
|
|
+endif
|
|
+
|
|
CC ?= gcc
|
|
CFLAGS ?= -g -O3 -Wall
|
|
|
|
@@ -21,7 +26,11 @@ MANDIR ?= $(PREFIX)/share/man
|
|
BINDIR ?= $(PREFIX)/bin
|
|
INCDIR ?= $(PREFIX)/include
|
|
LOCDIR ?= ./locale
|
|
+ifdef FREEBSD
|
|
+LIBS = -ljpeg -lpthread -lrt -lutil -lintl -liconv $(shell pkg-config --libs freetype2 fontconfig)
|
|
+else
|
|
LIBS = -ljpeg -lpthread -ldl -lcap -lrt $(shell pkg-config --libs freetype2 fontconfig)
|
|
+endif
|
|
INCLUDES ?= $(shell pkg-config --cflags freetype2 fontconfig)
|
|
|
|
PLUGINDIR= ./PLUGINS
|
|
@@ -150,7 +159,11 @@ i18n: $(I18Nmsgs)
|
|
|
|
install-i18n:
|
|
@mkdir -p $(DESTDIR)$(LOCDIR)
|
|
+ifdef FREEBSD
|
|
+ @(cd $(LOCALEDIR); cp -R * $(DESTDIR)$(LOCDIR))
|
|
+else
|
|
@(cd $(LOCALEDIR); cp -r --parents * $(DESTDIR)$(LOCDIR))
|
|
+endif
|
|
|
|
# The 'include' directory (for plugins):
|
|
|
|
@@ -189,7 +202,11 @@ install: install-bin install-conf instal
|
|
|
|
install-bin: vdr
|
|
@mkdir -p $(DESTDIR)$(BINDIR)
|
|
+ifdef FREEBSD
|
|
+ @cp -f vdr svdrpsend $(DESTDIR)$(BINDIR)
|
|
+else
|
|
@cp --remove-destination vdr svdrpsend $(DESTDIR)$(BINDIR)
|
|
+endif
|
|
|
|
# Configuration files:
|
|
|
|
@@ -212,13 +229,18 @@ install-doc:
|
|
|
|
install-plugins: plugins
|
|
@mkdir -p $(DESTDIR)$(PLUGINLIBDIR)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $(PLUGINDIR)/lib/lib*-*.so.$(APIVERSION) $(DESTDIR)$(PLUGINLIBDIR)
|
|
+else
|
|
@cp --remove-destination $(PLUGINDIR)/lib/lib*-*.so.$(APIVERSION) $(DESTDIR)$(PLUGINLIBDIR)
|
|
+endif
|
|
|
|
# Includes:
|
|
|
|
install-includes: include-dir
|
|
@mkdir -p $(DESTDIR)$(INCDIR)
|
|
@cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR)
|
|
+ @cp Make.config Make.global $(DESTDIR)$(INCDIR)/vdr
|
|
|
|
# pkg-config file:
|
|
|
|
Index: channels.c
|
|
@@ -29,7 +29,12 @@ tChannelID tChannelID::FromString(const
|
|
int tid;
|
|
int sid;
|
|
int rid = 0;
|
|
+#ifdef __FreeBSD__
|
|
+ sourcebuf = MALLOC(char, 10);
|
|
+ int fields = sscanf(s, "%9[^-]-%d-%d-%d-%d", sourcebuf, &nid, &tid, &sid, &rid);
|
|
+#else
|
|
int fields = sscanf(s, "%a[^-]-%d-%d-%d-%d", &sourcebuf, &nid, &tid, &sid, &rid);
|
|
+#endif
|
|
if (fields == 4 || fields == 5) {
|
|
int source = cSource::FromString(sourcebuf);
|
|
free(sourcebuf);
|
|
@@ -554,7 +559,18 @@ bool cChannel::Parse(const char *s)
|
|
char *apidbuf = NULL;
|
|
char *tpidbuf = NULL;
|
|
char *caidbuf = NULL;
|
|
+#ifdef __FreeBSD__
|
|
+ namebuf = MALLOC(char, 256);
|
|
+ sourcebuf = MALLOC(char, 10);
|
|
+ parambuf = MALLOC(char, 256);
|
|
+ vpidbuf = MALLOC(char, 256);
|
|
+ apidbuf = MALLOC(char, 256);
|
|
+ tpidbuf = MALLOC(char, 256);
|
|
+ caidbuf = MALLOC(char, 256);
|
|
+ int fields = sscanf(s, "%255[^:]:%d :%255[^:]:%255[^:] :%d :%255[^:]:%255[^:]:%255[^:]:%255[^:]:%d :%d :%d :%d ", namebuf, &frequency, parambuf, sourcebuf, &srate, vpidbuf, apidbuf, tpidbuf, caidbuf, &sid, &nid, &tid, &rid);
|
|
+#else
|
|
int fields = sscanf(s, "%a[^:]:%d :%a[^:]:%a[^:] :%d :%a[^:]:%a[^:]:%a[^:]:%a[^:]:%d :%d :%d :%d ", &namebuf, &frequency, ¶mbuf, &sourcebuf, &srate, &vpidbuf, &apidbuf, &tpidbuf, &caidbuf, &sid, &nid, &tid, &rid);
|
|
+#endif
|
|
if (fields >= 9) {
|
|
if (fields == 9) {
|
|
// allow reading of old format
|
|
Index: ci.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/ci.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- ci.c 2010/02/17 10:14:44 1.1.1.2
|
|
+++ ci.c 2010/02/17 10:46:55 1.3
|
|
@@ -10,7 +10,11 @@
|
|
#include "ci.h"
|
|
#include <ctype.h>
|
|
#include <linux/dvb/ca.h>
|
|
+#ifdef __FreeBSD__
|
|
+#include <stdlib.h>
|
|
+#else
|
|
#include <malloc.h>
|
|
+#endif
|
|
#include <netinet/in.h>
|
|
#include <poll.h>
|
|
#include <string.h>
|
|
Index: config.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/config.c,v
|
|
retrieving revision 1.1.1.4
|
|
retrieving revision 1.4
|
|
diff -u -r1.1.1.4 -r1.4
|
|
--- config.c 2010/06/07 09:07:28 1.1.1.4
|
|
+++ config.c 2010/06/07 09:12:57 1.4
|
|
@@ -10,6 +10,9 @@
|
|
#include "config.h"
|
|
#include <ctype.h>
|
|
#include <stdlib.h>
|
|
+#ifdef __FreeBSD__
|
|
+#include <netinet/in.h>
|
|
+#endif
|
|
#include "device.h"
|
|
#include "i18n.h"
|
|
#include "interface.h"
|
|
Index: diseqc.c
|
|
@@ -114,7 +114,14 @@ bool cDiseqc::Parse(const char *s)
|
|
return true;
|
|
bool result = false;
|
|
char *sourcebuf = NULL;
|
|
+#ifdef __FreeBSD__
|
|
+ sourcebuf = MALLOC(char, 10);
|
|
+ if (commands == NULL)
|
|
+ commands = MALLOC(char, 256);
|
|
+ int fields = sscanf(s, "%9[^ ] %d %c %d %255[^\n]", sourcebuf, &slof, &polarization, &lof, commands);
|
|
+#else
|
|
int fields = sscanf(s, "%a[^ ] %d %c %d %a[^\n]", &sourcebuf, &slof, &polarization, &lof, &commands);
|
|
+#endif
|
|
if (fields == 4)
|
|
commands = NULL; //XXX Apparently sscanf() doesn't work correctly if the last %a argument results in an empty string
|
|
if (4 <= fields && fields <= 5) {
|
|
Index: eit.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/eit.c,v
|
|
retrieving revision 1.1.1.3
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.3 -r1.5
|
|
--- eit.c 2010/06/07 09:07:27 1.1.1.3
|
|
+++ eit.c 2010/06/07 09:12:57 1.5
|
|
@@ -339,10 +339,15 @@
|
|
if (diff > 2) {
|
|
mutex.Lock();
|
|
if (abs(diff - lastDiff) < 3) {
|
|
+#ifdef __FreeBSD__
|
|
+ isyslog("system time would have changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
|
|
+ esyslog("stime() not available on FreeBSD, maybe use adjtime()?");
|
|
+#else
|
|
if (stime(&sattim) == 0)
|
|
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
|
|
else
|
|
esyslog("ERROR while setting system time: %m");
|
|
+#endif
|
|
}
|
|
lastDiff = diff;
|
|
mutex.Unlock();
|
|
Index: epg.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/epg.c,v
|
|
retrieving revision 1.1.1.3
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.3 -r1.5
|
|
--- epg.c 2010/03/01 09:42:48 1.1.1.3
|
|
+++ epg.c 2010/03/01 09:58:06 1.5
|
|
@@ -31,7 +31,13 @@
|
|
bool tComponent::FromString(const char *s)
|
|
{
|
|
unsigned int Stream, Type;
|
|
+#ifdef __FreeBSD__
|
|
+ if (description == NULL)
|
|
+ description = MALLOC(char, 256);
|
|
+ int n = sscanf(s, "%X %02X %7s %255[^\n]", &Stream, &Type, language, description); // 7 = MAXLANGCODE2 - 1
|
|
+#else
|
|
int n = sscanf(s, "%X %02X %7s %a[^\n]", &Stream, &Type, language, &description); // 7 = MAXLANGCODE2 - 1
|
|
+#endif
|
|
if (n != 4 || isempty(description)) {
|
|
free(description);
|
|
description = NULL;
|
|
Index: font.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/font.c,v
|
|
retrieving revision 1.1.1.3
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.3 -r1.5
|
|
--- font.c 2010/10/19 20:28:48 1.1.1.3
|
|
+++ font.c 2010/10/19 20:32:58 1.5
|
|
@@ -383,7 +383,11 @@
|
|
{
|
|
if (!FontNames->Size()) {
|
|
FcInit();
|
|
+#ifdef __FreeBSD__
|
|
+ FcObjectSet *os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, (char *)NULL);
|
|
+#else
|
|
FcObjectSet *os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, NULL);
|
|
+#endif
|
|
FcPattern *pat = FcPatternCreate();
|
|
FcPatternAddBool(pat, FC_SCALABLE, FcTrue);
|
|
if (Monospaced)
|
|
Index: i18n.h
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/i18n.h,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- i18n.h 2010/02/17 10:14:45 1.1.1.2
|
|
+++ i18n.h 2010/02/17 10:46:55 1.3
|
|
@@ -48,7 +48,11 @@
|
|
///< have an actual locale installed. The rest are just dummy entries
|
|
///< to allow having three letter language codes for other languages
|
|
///< that have no actual locale on this system.
|
|
+#ifdef __FreeBSD__
|
|
+const char *I18nTranslate(const char *s, const char *Plugin = NULL) __format_arg(1);
|
|
+#else
|
|
const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute_format_arg__(1);
|
|
+#endif
|
|
///< Translates the given string (with optional Plugin context) into
|
|
///< the current language. If no translation is available, the original
|
|
///< string will be returned.
|
|
Index: menu.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/menu.c,v
|
|
retrieving revision 1.1.1.6
|
|
retrieving revision 1.7
|
|
diff -u -r1.1.1.6 -r1.7
|
|
Index: menuitems.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/menuitems.c,v
|
|
retrieving revision 1.1.1.4
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.4 -r1.5
|
|
--- menuitems.c 2010/06/07 09:07:27 1.1.1.4
|
|
+++ menuitems.c 2010/06/07 09:12:57 1.5
|
|
@@ -838,7 +838,11 @@
|
|
struct tm tm_r;
|
|
localtime_r(value, &tm_r);
|
|
strftime(buf, DATEBUFFERSIZE, "%Y-%m-%d ", &tm_r);
|
|
+#ifdef __FreeBSD__
|
|
+ strcat(buf, WeekDayNameReal(tm_r.tm_wday));
|
|
+#else
|
|
strcat(buf, WeekDayName(tm_r.tm_wday));
|
|
+#endif
|
|
}
|
|
else
|
|
*buf = 0;
|
|
Index: pat.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/pat.c,v
|
|
retrieving revision 1.1.1.5
|
|
retrieving revision 1.6
|
|
diff -u -r1.1.1.5 -r1.6
|
|
--- pat.c 2010/10/19 20:28:48 1.1.1.5
|
|
+++ pat.c 2010/10/19 20:32:58 1.6
|
|
@@ -8,7 +8,11 @@
|
|
*/
|
|
|
|
#include "pat.h"
|
|
+#ifdef __FreeBSD__
|
|
+#include <stdlib.h>
|
|
+#else
|
|
#include <malloc.h>
|
|
+#endif
|
|
#include "channels.h"
|
|
#include "libsi/section.h"
|
|
#include "libsi/descriptor.h"
|
|
Index: recording.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/recording.c,v
|
|
retrieving revision 1.1.1.3
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.3 -r1.5
|
|
--- recording.c 2010/03/16 15:18:58 1.1.1.3
|
|
+++ recording.c 2010/03/16 15:21:05 1.5
|
|
@@ -1825,7 +1829,11 @@
|
|
// Search for a PAT packet from the end of the file:
|
|
cPatPmtParser PatPmtParser;
|
|
sprintf(pFileNumber, RECORDFILESUFFIXTS, Number);
|
|
+#ifdef __FreeBSD__
|
|
+ int fd = open(fileName, O_RDONLY, DEFFILEMODE);
|
|
+#else
|
|
int fd = open(fileName, O_RDONLY | O_LARGEFILE, DEFFILEMODE);
|
|
+#endif
|
|
if (fd >= 0) {
|
|
off_t pos = lseek(fd, -TS_SIZE, SEEK_END);
|
|
while (pos >= 0) {
|
|
@@ -1866,14 +1874,22 @@
|
|
int BlockingFlag = blocking ? 0 : O_NONBLOCK;
|
|
if (record) {
|
|
dsyslog("recording to '%s'", fileName);
|
|
+#ifdef __FreeBSD__
|
|
+ file = OpenVideoFile(fileName, O_RDWR | O_CREAT | BlockingFlag);
|
|
+#else
|
|
file = OpenVideoFile(fileName, O_RDWR | O_CREAT | O_LARGEFILE | BlockingFlag);
|
|
+#endif
|
|
if (!file)
|
|
LOG_ERROR_STR(fileName);
|
|
}
|
|
else {
|
|
if (access(fileName, R_OK) == 0) {
|
|
dsyslog("playing '%s'", fileName);
|
|
+#ifdef __FreeBSD__
|
|
+ file = cUnbufferedFile::Create(fileName, O_RDONLY | BlockingFlag);
|
|
+#else
|
|
file = cUnbufferedFile::Create(fileName, O_RDONLY | O_LARGEFILE | BlockingFlag);
|
|
+#endif
|
|
if (!file)
|
|
LOG_ERROR_STR(fileName);
|
|
}
|
|
Index: skins.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/skins.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- skins.c 2010/02/17 10:14:45 1.1.1.2
|
|
+++ skins.c 2010/02/17 10:46:55 1.3
|
|
@@ -11,6 +11,20 @@
|
|
#include "interface.h"
|
|
#include "status.h"
|
|
|
|
+#if defined(__FreeBSD__) && __FreeBSD_version < 1000029
|
|
+/* XXX Implement strchrnul for FreeBSD. */
|
|
+static char *
|
|
+strchrnul (const char *s, int c_in)
|
|
+{
|
|
+ char c = c_in;
|
|
+ while (*s && (*s != c))
|
|
+ s++;
|
|
+
|
|
+ return (char *) s;
|
|
+}
|
|
+#endif
|
|
+
|
|
+
|
|
// --- cSkinQueuedMessage ----------------------------------------------------
|
|
|
|
class cSkinQueuedMessage : public cListObject {
|
|
Index: sources.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/sources.c,v
|
|
retrieving revision 1.1.1.4
|
|
retrieving revision 1.5
|
|
diff -u -r1.1.1.4 -r1.5
|
|
--- sources.c 2010/03/16 15:18:58 1.1.1.4
|
|
+++ sources.c 2010/03/16 15:21:05 1.5
|
|
@@ -31,7 +31,14 @@
|
|
bool cSource::Parse(const char *s)
|
|
{
|
|
char *codeBuf = NULL;
|
|
+#ifdef __FreeBSD__
|
|
+ codeBuf = MALLOC(char, 10);
|
|
+ if (description == NULL)
|
|
+ description = MALLOC(char, 256);
|
|
+ if (2 == sscanf(s, "%9[^ ] %255[^\n]", codeBuf, description))
|
|
+#else
|
|
if (2 == sscanf(s, "%a[^ ] %a[^\n]", &codeBuf, &description))
|
|
+#endif
|
|
code = FromString(codeBuf);
|
|
free(codeBuf);
|
|
return code != stNone && description && *description;
|
|
Index: svdrp.c
|
|
@@ -40,6 +40,12 @@
|
|
#include "tools.h"
|
|
#include "videodir.h"
|
|
|
|
+/* FreeBSD has it's own version of isnumber(),
|
|
+ but VDR's version is incompatible */
|
|
+#ifdef __FreeBSD__
|
|
+#undef isnumber
|
|
+#endif
|
|
+
|
|
// --- cSocket ---------------------------------------------------------------
|
|
|
|
cSocket::cSocket(int Port, int Queue)
|
|
@@ -124,6 +130,23 @@ int cSocket::Accept(void)
|
|
}
|
|
else if (errno != EINTR && errno != EAGAIN)
|
|
LOG_ERROR;
|
|
+#ifdef __FreeBSD__
|
|
+ // Linux' accept() doesn't inherit O_NONBLOCK... (this fixes
|
|
+ // cSVDRP::Send() failing due to EAGAIN when vdradmin-am downloads EPG.)
|
|
+ if (newsock >= 0) {
|
|
+ // make it blocking:
|
|
+ int oldflags = fcntl(newsock, F_GETFL, 0);
|
|
+ if (oldflags < 0) {
|
|
+ LOG_ERROR;
|
|
+ return -1;
|
|
+ }
|
|
+ oldflags &= ~O_NONBLOCK;
|
|
+ if (fcntl(newsock, F_SETFL, oldflags) < 0) {
|
|
+ LOG_ERROR;
|
|
+ return -1;
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
return newsock;
|
|
}
|
|
return -1;
|
|
Index: themes.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/themes.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- themes.c 2010/02/17 10:14:44 1.1.1.2
|
|
+++ themes.c 2010/02/17 10:46:55 1.3
|
|
@@ -47,7 +47,11 @@
|
|
// FileName is ok
|
|
if (SetName) {
|
|
free(name);
|
|
+#ifdef __FreeBSD__
|
|
+ name = (char *)strndup(n, e - n);
|
|
+#else
|
|
name = strndup(n, e - n);
|
|
+#endif
|
|
}
|
|
}
|
|
else
|
|
Index: thread.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/thread.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.6
|
|
diff -u -r1.1.1.2 -r1.6
|
|
--- thread.c 2010/02/17 10:14:45 1.1.1.2
|
|
+++ thread.c 2010/02/24 08:41:13 1.6
|
|
@@ -9,15 +9,22 @@
|
|
|
|
#include "thread.h"
|
|
#include <errno.h>
|
|
+#ifdef __FreeBSD__
|
|
+#include <pthread_np.h>
|
|
+#include <stdlib.h>
|
|
+#else
|
|
#include <linux/unistd.h>
|
|
#include <malloc.h>
|
|
+#endif
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <sys/resource.h>
|
|
#include <sys/syscall.h>
|
|
#include <sys/time.h>
|
|
#include <sys/wait.h>
|
|
+#ifndef __FreeBSD__
|
|
#include <sys/prctl.h>
|
|
+#endif
|
|
#include <unistd.h>
|
|
#include "tools.h"
|
|
|
|
@@ -143,7 +150,9 @@
|
|
{
|
|
pthread_rwlockattr_t attr;
|
|
pthread_rwlockattr_init(&attr);
|
|
+#ifndef __FreeBSD__
|
|
pthread_rwlockattr_setkind_np(&attr, PreferWriter ? PTHREAD_RWLOCK_PREFER_WRITER_NP : PTHREAD_RWLOCK_PREFER_READER_NP);
|
|
+#endif
|
|
pthread_rwlock_init(&rwlock, &attr);
|
|
}
|
|
|
|
@@ -179,7 +188,11 @@
|
|
locked = 0;
|
|
pthread_mutexattr_t attr;
|
|
pthread_mutexattr_init(&attr);
|
|
+#ifdef __FreeBSD__
|
|
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
|
|
+#else
|
|
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
|
|
+#endif
|
|
pthread_mutex_init(&mutex, &attr);
|
|
}
|
|
|
|
@@ -228,8 +241,12 @@
|
|
|
|
void cThread::SetIOPriority(int Priority)
|
|
{
|
|
+#ifdef __FreeBSD__
|
|
+ esyslog("ERROR: syscall(SYS_ioprio_set ...) unsupported on FreeBSD");
|
|
+#else
|
|
if (syscall(SYS_ioprio_set, 1, 0, (Priority & 0xff) | (2 << 13)) < 0) // best effort class
|
|
LOG_ERROR;
|
|
+#endif
|
|
}
|
|
|
|
void cThread::SetDescription(const char *Description, ...)
|
|
@@ -335,7 +352,11 @@
|
|
|
|
tThreadId cThread::ThreadId(void)
|
|
{
|
|
+#ifdef __FreeBSD__
|
|
+ return reinterpret_cast<long>(::pthread_self());
|
|
+#else
|
|
return syscall(__NR_gettid);
|
|
+#endif
|
|
}
|
|
|
|
void cThread::SetMainThreadId(void)
|
|
@@ -461,7 +482,11 @@
|
|
int MaxPossibleFileDescriptors = getdtablesize();
|
|
for (int i = STDERR_FILENO + 1; i < MaxPossibleFileDescriptors; i++)
|
|
close(i); //close all dup'ed filedescriptors
|
|
+#ifdef __FreeBSD__
|
|
+ if (execl("/bin/sh", "sh", "-c", Command, (char *)NULL) == -1) {
|
|
+#else
|
|
if (execl("/bin/sh", "sh", "-c", Command, NULL) == -1) {
|
|
+#endif
|
|
LOG_ERROR_STR(Command);
|
|
close(fd[1 - iopipe]);
|
|
_exit(-1);
|
|
@@ -544,7 +569,11 @@
|
|
int MaxPossibleFileDescriptors = getdtablesize();
|
|
for (int i = STDERR_FILENO + 1; i < MaxPossibleFileDescriptors; i++)
|
|
close(i); //close all dup'ed filedescriptors
|
|
+#ifdef __FreeBSD__
|
|
+ if (execl("/bin/sh", "sh", "-c", Command, (char *)NULL) == -1) {
|
|
+#else
|
|
if (execl("/bin/sh", "sh", "-c", Command, NULL) == -1) {
|
|
+#endif
|
|
LOG_ERROR_STR(Command);
|
|
_exit(-1);
|
|
}
|
|
Index: thread.h
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/thread.h,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- thread.h 2010/02/17 10:14:44 1.1.1.2
|
|
+++ thread.h 2010/02/17 10:46:55 1.3
|
|
@@ -13,6 +13,9 @@
|
|
#include <pthread.h>
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
+#ifdef __FreeBSD__
|
|
+#include <signal.h>
|
|
+#endif
|
|
|
|
class cCondWait {
|
|
private:
|
|
Index: timers.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/timers.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- timers.c 2010/02/17 10:14:45 1.1.1.2
|
|
+++ timers.c 2010/02/17 10:46:55 1.3
|
|
@@ -23,6 +23,12 @@
|
|
// format characters in order to allow any number of blanks after a numeric
|
|
// value!
|
|
|
|
+/* FreeBSD has it's own version of isnumber(),
|
|
+ but VDR's version is incompatible */
|
|
+#ifdef __FreeBSD__
|
|
+#undef isnumber
|
|
+#endif
|
|
+
|
|
// --- cTimer ----------------------------------------------------------------
|
|
|
|
cTimer::cTimer(bool Instant, bool Pause, cChannel *Channel)
|
|
@@ -292,7 +298,15 @@
|
|
s = s2;
|
|
}
|
|
bool result = false;
|
|
+#ifdef __FreeBSD__
|
|
+ channelbuffer = MALLOC(char, 256);
|
|
+ daybuffer = MALLOC(char, 256);
|
|
+ filebuffer = MALLOC(char, 256);
|
|
+ aux = MALLOC(char, 256);
|
|
+ if (8 <= sscanf(s, "%u :%255[^:]:%255[^:]:%d :%d :%d :%d :%255[^:\n]:%255[^\n]", &flags, channelbuffer, daybuffer, &start, &stop, &priority, &lifetime, filebuffer, aux)) {
|
|
+#else
|
|
if (8 <= sscanf(s, "%u :%a[^:]:%a[^:]:%d :%d :%d :%d :%a[^:\n]:%a[^\n]", &flags, &channelbuffer, &daybuffer, &start, &stop, &priority, &lifetime, &filebuffer, &aux)) {
|
|
+#endif
|
|
ClrFlags(tfRecording);
|
|
if (aux && !*skipspace(aux)) {
|
|
free(aux);
|
|
Index: tools.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/tools.c,v
|
|
retrieving revision 1.1.1.5
|
|
retrieving revision 1.8
|
|
diff -u -r1.1.1.5 -r1.8
|
|
--- tools.c 2010/10/19 20:28:48 1.1.1.5
|
|
+++ tools.c 2010/10/19 20:32:58 1.8
|
|
@@ -21,13 +21,24 @@
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <sys/time.h>
|
|
+#ifdef __FreeBSD__
|
|
+#include <sys/param.h>
|
|
+#include <sys/mount.h>
|
|
+#else
|
|
#include <sys/vfs.h>
|
|
+#endif
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
#include <utime.h>
|
|
#include "i18n.h"
|
|
#include "thread.h"
|
|
|
|
+/* FreeBSD has it's own version of isnumber(),
|
|
+ but VDR's version is incompatible */
|
|
+#ifdef __FreeBSD__
|
|
+#undef isnumber
|
|
+#endif
|
|
+
|
|
int SysLogLevel = 3;
|
|
|
|
#define MAXSYSLOGBUF 256
|
|
@@ -493,6 +504,18 @@
|
|
{
|
|
if (!FileName)
|
|
return NULL;
|
|
+#ifdef __FreeBSD__
|
|
+ char *resolved_path = NULL;
|
|
+ resolved_path = MALLOC(char, PATH_MAX+1);
|
|
+ if (realpath(FileName, resolved_path) == NULL)
|
|
+ {
|
|
+ if (errno != ENOENT) // some other error occurred
|
|
+ LOG_ERROR_STR(FileName);
|
|
+ else // file doesn't exist
|
|
+ resolved_path = strdup(FileName);
|
|
+ }
|
|
+ return resolved_path;
|
|
+#else
|
|
char *TargetName = canonicalize_file_name(FileName);
|
|
if (!TargetName) {
|
|
if (errno == ENOENT) // file doesn't exist
|
|
@@ -501,6 +524,7 @@
|
|
LOG_ERROR_STR(FileName);
|
|
}
|
|
return TargetName;
|
|
+#endif
|
|
}
|
|
|
|
bool SpinUpDisk(const char *FileName)
|
|
@@ -517,7 +541,11 @@
|
|
int f = open(buf, O_WRONLY | O_CREAT, DEFFILEMODE);
|
|
// O_SYNC doesn't work on all file systems
|
|
if (f >= 0) {
|
|
+#ifdef __FreeBSD__
|
|
+ if (fsync(f) < 0)
|
|
+#else
|
|
if (fdatasync(f) < 0)
|
|
+#endif
|
|
LOG_ERROR_STR(*buf);
|
|
close(f);
|
|
remove(buf);
|
|
@@ -818,7 +846,11 @@
|
|
const char *cCharSetConv::Convert(const char *From, char *To, size_t ToLength)
|
|
{
|
|
if (cd != (iconv_t)-1 && From && *From) {
|
|
+#ifdef __FreeBSD__
|
|
+ const char *FromPtr = (char *)From;
|
|
+#else
|
|
char *FromPtr = (char *)From;
|
|
+#endif
|
|
size_t FromLength = strlen(From);
|
|
char *ToPtr = To;
|
|
if (!ToPtr) {
|
|
@@ -920,7 +952,11 @@
|
|
return cString(buffer, true);
|
|
}
|
|
|
|
+#ifdef __FreeBSD__
|
|
+cString WeekDayNameReal(int WeekDay)
|
|
+#else
|
|
cString WeekDayName(int WeekDay)
|
|
+#endif
|
|
{
|
|
char buffer[16];
|
|
WeekDay = WeekDay == 0 ? 6 : WeekDay - 1; // we start with Monday==0!
|
|
@@ -938,10 +974,18 @@
|
|
cString WeekDayName(time_t t)
|
|
{
|
|
struct tm tm_r;
|
|
+#ifdef __FreeBSD__
|
|
+ return WeekDayNameReal(localtime_r(&t, &tm_r)->tm_wday);
|
|
+#else
|
|
return WeekDayName(localtime_r(&t, &tm_r)->tm_wday);
|
|
+#endif
|
|
}
|
|
|
|
+#ifdef __FreeBSD__
|
|
+cString WeekDayNameFullReal(int WeekDay)
|
|
+#else
|
|
cString WeekDayNameFull(int WeekDay)
|
|
+#endif
|
|
{
|
|
WeekDay = WeekDay == 0 ? 6 : WeekDay - 1; // we start with Monday==0!
|
|
switch (WeekDay) {
|
|
@@ -959,7 +1003,11 @@
|
|
cString WeekDayNameFull(time_t t)
|
|
{
|
|
struct tm tm_r;
|
|
+#ifdef __FreeBSD__
|
|
+ return WeekDayNameFullReal(localtime_r(&t, &tm_r)->tm_wday);
|
|
+#else
|
|
return WeekDayNameFull(localtime_r(&t, &tm_r)->tm_wday);
|
|
+#endif
|
|
}
|
|
|
|
cString DayDateTime(time_t t)
|
|
@@ -969,7 +1017,11 @@
|
|
time(&t);
|
|
struct tm tm_r;
|
|
tm *tm = localtime_r(&t, &tm_r);
|
|
+#ifdef __FreeBSD__
|
|
+ snprintf(buffer, sizeof(buffer), "%s %02d.%02d. %02d:%02d", *WeekDayNameReal(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
|
|
+#else
|
|
snprintf(buffer, sizeof(buffer), "%s %02d.%02d. %02d:%02d", *WeekDayName(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
|
|
+#endif
|
|
return buffer;
|
|
}
|
|
|
|
@@ -988,7 +1040,11 @@
|
|
char buf[32];
|
|
struct tm tm_r;
|
|
tm *tm = localtime_r(&t, &tm_r);
|
|
+#ifdef __FreeBSD__
|
|
+ char *p = stpcpy(buf, WeekDayNameReal(tm->tm_wday));
|
|
+#else
|
|
char *p = stpcpy(buf, WeekDayName(tm->tm_wday));
|
|
+#endif
|
|
*p++ = ' ';
|
|
strftime(p, sizeof(buf) - (p - buf), "%d.%m.%Y", tm);
|
|
return buf;
|
|
@@ -1315,7 +1371,11 @@
|
|
if (!IsOpen()) {
|
|
f = FileDes;
|
|
if (f >= 0) {
|
|
+#ifdef __FreeBSD__
|
|
+ if ((uint)f < FD_SETSIZE) {
|
|
+#else
|
|
if (f < FD_SETSIZE) {
|
|
+#endif
|
|
if (f >= maxFiles)
|
|
maxFiles = f + 1;
|
|
if (!files[f])
|
|
@@ -1356,7 +1416,11 @@
|
|
if (files[i])
|
|
FD_SET(i, &set);
|
|
}
|
|
+#ifdef __FreeBSD__
|
|
+ if (0 <= FileDes && (uint)FileDes < FD_SETSIZE && !files[FileDes])
|
|
+#else
|
|
if (0 <= FileDes && FileDes < FD_SETSIZE && !files[FileDes])
|
|
+#endif
|
|
FD_SET(FileDes, &set); // in case we come in with an arbitrary descriptor
|
|
if (TimeoutMs == 0)
|
|
TimeoutMs = 10; // load gets too heavy with 0
|
|
@@ -1451,7 +1515,9 @@
|
|
|
|
// --- cUnbufferedFile -------------------------------------------------------
|
|
|
|
+#ifndef __FreeBSD__
|
|
#define USE_FADVISE
|
|
+#endif
|
|
|
|
#define WRITE_BUFFER KILOBYTE(800)
|
|
|
|
@@ -1512,11 +1578,13 @@
|
|
readahead = ra;
|
|
}
|
|
|
|
+#ifdef USE_FADVISE
|
|
int cUnbufferedFile::FadviseDrop(off_t Offset, off_t Len)
|
|
{
|
|
// rounding up the window to make sure that not PAGE_SIZE-aligned data gets freed.
|
|
return posix_fadvise(fd, Offset - (FADVGRAN - 1), Len + (FADVGRAN - 1) * 2, POSIX_FADV_DONTNEED);
|
|
}
|
|
+#endif
|
|
|
|
off_t cUnbufferedFile::Seek(off_t Offset, int Whence)
|
|
{
|
|
Index: tools.h
|
|
@@ -27,6 +27,12 @@
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
|
|
+#ifdef __FreeBSD__
|
|
+#include <sys/param.h>
|
|
+typedef int (*__compar_fn_t) (__const void *, __const void *);
|
|
+#undef isnumber
|
|
+#endif
|
|
+
|
|
typedef unsigned char uchar;
|
|
|
|
extern int SysLogLevel;
|
|
@@ -227,12 +233,20 @@ bool SpinUpDisk(const char *FileName);
|
|
void TouchFile(const char *FileName);
|
|
time_t LastModifiedTime(const char *FileName);
|
|
off_t FileSize(const char *FileName); ///< returns the size of the given file, or -1 in case of an error (e.g. if the file doesn't exist)
|
|
+#ifdef __FreeBSD__
|
|
+cString WeekDayNameReal(int WeekDay);
|
|
+#else
|
|
cString WeekDayName(int WeekDay);
|
|
+#endif
|
|
///< Converts the given WeekDay (0=Sunday, 1=Monday, ...) to a three letter
|
|
///< day name.
|
|
cString WeekDayName(time_t t);
|
|
///< Converts the week day of the given time to a three letter day name.
|
|
+#ifdef __FreeBSD__
|
|
+cString WeekDayNameFullReal(int WeekDay);
|
|
+#else
|
|
cString WeekDayNameFull(int WeekDay);
|
|
+#endif
|
|
///< Converts the given WeekDay (0=Sunday, 1=Monday, ...) to a full
|
|
///< day name.
|
|
cString WeekDayNameFull(time_t t);
|
|
Index: vdr.c
|
|
--- vdr.c
|
|
+++ vdr.c
|
|
@@ -32,8 +32,13 @@
|
|
#include <pwd.h>
|
|
#include <signal.h>
|
|
#include <stdlib.h>
|
|
+#ifndef __FreeBSD__
|
|
#include <sys/capability.h>
|
|
#include <sys/prctl.h>
|
|
+#else
|
|
+#include <sys/types.h>
|
|
+#include <login_cap.h>
|
|
+#endif
|
|
#include <termios.h>
|
|
#include <unistd.h>
|
|
#include "audio.h"
|
|
@@ -107,12 +112,15 @@ static bool SetUser(const char *UserName
|
|
fprintf(stderr, "vdr: cannot set user id %u: %s\n", (unsigned int)user->pw_uid, strerror(errno));
|
|
return false;
|
|
}
|
|
+#ifndef __FreeBSD__
|
|
if (UserDump && prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) < 0)
|
|
fprintf(stderr, "vdr: warning - cannot set dumpable: %s\n", strerror(errno));
|
|
+#endif
|
|
}
|
|
return true;
|
|
}
|
|
|
|
+#ifndef __FreeBSD__
|
|
static bool DropCaps(void)
|
|
{
|
|
// drop all capabilities except selected ones
|
|
@@ -139,6 +147,7 @@ static bool SetKeepCaps(bool On)
|
|
}
|
|
return true;
|
|
}
|
|
+#endif
|
|
|
|
static void SignalHandler(int signum)
|
|
{
|
|
@@ -400,14 +409,18 @@ int main(int argc, char *argv[])
|
|
if (VdrUser && geteuid() == 0) {
|
|
StartedAsRoot = true;
|
|
if (strcmp(VdrUser, "root")) {
|
|
+#ifndef __FreeBSD__
|
|
if (!SetKeepCaps(true))
|
|
return 2;
|
|
+#endif
|
|
if (!SetUser(VdrUser, UserDump))
|
|
return 2;
|
|
+#ifndef __FreeBSD__
|
|
if (!SetKeepCaps(false))
|
|
return 2;
|
|
if (!DropCaps())
|
|
return 2;
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
@@ -556,6 +569,25 @@ int main(int argc, char *argv[])
|
|
CodeSet++; // skip the dot
|
|
}
|
|
}
|
|
+#ifdef __FreeBSD__
|
|
+ // If we are started without a locale query login.conf(5) for
|
|
+ // a lang setting
|
|
+
|
|
+ if (!CodeSet || !strcmp(CodeSet, "US-ASCII")) {
|
|
+ struct passwd *User = getpwnam(VdrUser);
|
|
+ login_cap_t *Lc = login_getuserclass(User);
|
|
+ if (!Lc)
|
|
+ Lc = login_getpwclass(User);
|
|
+ if (Lc) {
|
|
+ const char *Lang = login_getcapstr(Lc, "lang", NULL, NULL);
|
|
+ if (Lang && setlocale(LC_CTYPE, Lang)) {
|
|
+ CodeSet = nl_langinfo(CODESET);
|
|
+ setenv("LANG", Lang, 1);
|
|
+ }
|
|
+ login_close(Lc);
|
|
+ }
|
|
+ }
|
|
+#endif
|
|
if (CodeSet) {
|
|
bool known = SI::SetSystemCharacterTable(CodeSet);
|
|
isyslog("codeset is '%s' - %s", CodeSet, known ? "known" : "unknown");
|
|
Index: PLUGINS/src/svdrpdemo/svdrpdemo.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/PLUGINS/src/svdrpdemo/svdrpdemo.c,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.4
|
|
diff -u -r1.1.1.2 -r1.4
|
|
Index: libsi/headers.h
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/libsi/headers.h,v
|
|
retrieving revision 1.1.1.2
|
|
retrieving revision 1.3
|
|
diff -u -r1.1.1.2 -r1.3
|
|
--- libsi/headers.h 2010/02/17 10:14:45 1.1.1.2
|
|
+++ libsi/headers.h 2010/02/17 10:46:56 1.3
|
|
@@ -17,7 +17,11 @@
|
|
#ifndef LIBSI_HEADERS_H
|
|
#define LIBSI_HEADERS_H
|
|
|
|
+#ifdef __FreeBSD__
|
|
+#include <sys/endian.h>
|
|
+#else
|
|
#include <endian.h>
|
|
+#endif
|
|
|
|
namespace SI {
|
|
|
|
Index: libsi/si.c
|
|
===================================================================
|
|
RCS file: /progs/network/ccvs/vdr/libsi/si.c,v
|
|
retrieving revision 1.1.1.4
|
|
retrieving revision 1.7
|
|
diff -u -r1.1.1.4 -r1.7
|
|
--- libsi/si.c 2010/03/01 09:42:49 1.1.1.4
|
|
+++ libsi/si.c 2010/03/01 09:58:08 1.7
|
|
@@ -13,7 +13,9 @@
|
|
#include "si.h"
|
|
#include <errno.h>
|
|
#include <iconv.h>
|
|
+#ifndef __FreeBSD__
|
|
#include <malloc.h>
|
|
+#endif
|
|
#include <stdlib.h> // for broadcaster stupidity workaround
|
|
#include <string.h>
|
|
#include "descriptor.h"
|
|
@@ -381,7 +383,11 @@
|
|
if (SystemCharacterTable) {
|
|
iconv_t cd = iconv_open(SystemCharacterTable, fromCode);
|
|
if (cd != (iconv_t)-1) {
|
|
+#ifdef __FreeBSD__
|
|
+ const char *fromPtr = from;
|
|
+#else
|
|
char *fromPtr = (char *)from;
|
|
+#endif
|
|
while (fromLength > 0 && toLength > 1) {
|
|
if (iconv(cd, &fromPtr, &fromLength, &to, &toLength) == size_t(-1)) {
|
|
if (errno == EILSEQ) {
|
|
--- PLUGINS/src/dvbsddevice/Makefile.orig
|
|
+++ PLUGINS/src/dvbsddevice/Makefile
|
|
@@ -45,7 +45,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/hello/Makefile.orig
|
|
+++ PLUGINS/src/hello/Makefile
|
|
@@ -45,7 +45,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/osddemo/Makefile.orig
|
|
+++ PLUGINS/src/osddemo/Makefile
|
|
@@ -43,7 +43,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -73,7 +73,11 @@ $(DEPFILE): Makefile
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/pictures/Makefile.orig
|
|
+++ PLUGINS/src/pictures/Makefile
|
|
@@ -45,7 +45,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/servicedemo/Makefile.orig
|
|
+++ PLUGINS/src/servicedemo/Makefile
|
|
@@ -45,7 +45,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -75,11 +75,19 @@ $(DEPFILE): Makefile
|
|
|
|
libvdr-$(PLUGIN1).so: $(PLUGIN1).o
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(PLUGIN1).o -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
libvdr-$(PLUGIN2).so: $(PLUGIN2).o
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(PLUGIN2).o -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/skincurses/Makefile.orig
|
|
+++ PLUGINS/src/skincurses/Makefile
|
|
@@ -45,7 +45,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -lncursesw -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/status/Makefile.orig
|
|
+++ PLUGINS/src/status/Makefile
|
|
@@ -43,7 +43,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -73,7 +73,11 @@ $(DEPFILE): Makefile
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/svdrpdemo/Makefile.orig
|
|
+++ PLUGINS/src/svdrpdemo/Makefile
|
|
@@ -43,7 +43,7 @@ PACKAGE = vdr-$(ARCHIVE)
|
|
|
|
### Includes and Defines (add further entries here):
|
|
|
|
-INCLUDES += -I$(VDRDIR)/include
|
|
+INCLUDES = -I$(VDRDIR)/include -I${LOCALBASE}/include
|
|
|
|
DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
|
|
|
@@ -73,7 +73,11 @@ $(DEPFILE): Makefile
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
- @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
+ @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/epgtableid0/Makefile.orig
|
|
+++ PLUGINS/src/epgtableid0/Makefile
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
@cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|
|
--- PLUGINS/src/rcu/Makefile.orig
|
|
+++ PLUGINS/src/rcu/Makefile
|
|
@@ -100,7 +100,11 @@ i18n: $(I18Nmsgs) $(I18Npot)
|
|
|
|
libvdr-$(PLUGIN).so: $(OBJS)
|
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@
|
|
+ifdef FREEBSD
|
|
+ @cp -f $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+else
|
|
@cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION)
|
|
+endif
|
|
|
|
dist: $(I18Npo) clean
|
|
@-rm -rf $(TMPDIR)/$(ARCHIVE)
|