diff -Nru sc/debian/changelog sc-debian/debian/changelog --- sc/debian/changelog 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/changelog 2011-11-11 20:58:05.000000000 +0000 @@ -0,0 +1,16 @@ +vdr-plugin-sc (02.10.2011-1) unstable; urgency=low + + * Add patch viaccess v3 + * Add patch emm viaccess + * Add patch ecm size camd + * Add patch FFdecsa O2 + * Add patch French + * Update debianize plugin sc + + -- micky979 Fri, 11 Nov 2011 20:50:40 +0000 + +vdr-plugin-sc (13.10.2010-1) unstable; urgency=low + + * Initial release + + -- micky979 Mon, 28 Feb 2011 13:29:55 +0000 diff -Nru sc/debian/compat sc-debian/debian/compat --- sc/debian/compat 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/compat 2011-11-11 20:45:03.000000000 +0000 @@ -0,0 +1 @@ +7 diff -Nru sc/debian/configure_FFdecsa sc-debian/debian/configure_FFdecsa --- sc/debian/configure_FFdecsa 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/configure_FFdecsa 2011-11-11 21:34:04.000000000 +0000 @@ -0,0 +1,190 @@ +#!/bin/sh + +die_unknown(){ + echo "Unknown option \"$1\"." + echo "See $0 --help for available options." + exit 1 +} + +#check whether option is supported by this cpu +check_cpu(){ + ok=0 + grep "^flags.* $1 " /proc/cpuinfo >/dev/null 2>&1 + if test $? -eq 0; then + ok=1 + else + grep "^flags.* $1\$" /proc/cpuinfo >/dev/null 2>&1 + if test $? -eq 0; then + ok=1 + fi + fi + eval test $ok -eq 1 +} + +#try to figure out best FFdecsa compiler options +get_cpu_optimization() { + FLAGS="FLAGS=-O3 -fomit-frame-pointer -fexpensive-optimizations -funroll-loops" + arch=`uname -m` + processors_flags=`cat /proc/cpuinfo | grep "flags" | head -n 1` + vendor=`cat /proc/cpuinfo |grep "vendor_id" | head -n 1 | sed -e "s/.*:\W*//"` + gcc_ver=`$CXX -v 2>&1 | grep "gcc version" | head -n 1` + gcc_major=`echo $gcc_ver | sed -e 's/^gcc version \([0-9]*\)\..*/\1/'` + gcc_minor=`echo $gcc_ver | sed -e 's/^gcc version [0-9]*\.\([0-9]*\).*/\1/'` + if test $gcc_major -gt 4; then + ARCH="native" + elif test $gcc_major -eq 4 && test $gcc_minor -ge 2; then + ARCH="native" + elif test "x$arch" = "xx86_64"; then + if test "x$vendor" = "xAuthenticAMD"; then + ARCH="k8" + elif test "x$vendor" = "xGenuineIntel"; then + ARCH="nocona" + else + echo **WARNING** - Unknown vendor $vendor - assuming nocona + ARCH="nocona" + fi + FLAGS="$FLAGS -finline-limit=6000000 --param max-unrolled-insns=500" + elif test "x$arch" = "xathlon-xp"; then + ARCH="athlon-xp" + FLAGS="$FLAGS -finline-limit=6000000 --param max-unrolled-insns=500" + else + ARCH="pentium" + fi + OPTS="" + for opt in mmx sse sse2; do + if check_cpu $opt; then + OPTS="$OPTS $opt" + FLAGS="$FLAGS -m$opt" + fi + done + FLAGS="$FLAGS -march=$ARCH" + echo "Processor capabilities: $ARCH ($OPTS )" +} + +show_help() { + echo "Usage: configure [options]" + echo "Options: [defaults in brackets after descriptions]" + echo + echo "Standard options:" + echo " --help print this message" + echo " --dvb-dir= use for DVB headers" + echo " --optimize= set FFDecsa optimiation detection" + echo " yes: Try most common optimizations" + echo " long: Try all known optimizations (default)" + echo " no: Don't do any optimizations" + echo " --ffdecsa_mode= use optimization" + echo " -cxx= command for C++ compilation (default: g++)" + exit 0 +} +MAX_MODE=PARALLEL_32_INT +ffdecsa_opt="long" +for opt do + optval="${opt#*=}" + case "$opt" in + --dvb-dir=*) dvb_path=`eval echo $optval` + ;; + --cxx=*) CXX="$optval" + ;; + --ffdecsa_mode=*) ffdecsa_opt="no"; MAX_MODE="$optval" + ;; + --ffdecsa_flags=*) ffdecsa_flags="$optval" + ;; + --optimize=*) ffdecsa_opt="$optval" + ;; + --help) show_help + ;; + *) + die_unknown $opt + ;; + esac +done + +if test "x$CXX" = "x"; then + CXX=g++ +fi + +if test "x$ffdecsa_opt" = "xlong"; then + FFDECSA_MODES="PARALLEL_32_INT PARALLEL_32_4CHAR PARALLEL_32_4CHARA \ + PARALLEL_64_8CHAR PARALLEL_64_8CHARA PARALLEL_64_2INT \ + PARALLEL_64_LONG PARALLEL_64_MMX PARALLEL_128_16CHAR \ + PARALLEL_128_16CHARA PARALLEL_128_4INT PARALLEL_128_2LONG \ + PARALLEL_128_2MMX PARALLEL_128_SSE PARALLEL_128_SSE2" +elif test "x$ffdecsa_opt" = "xyes"; then + FFDECSA_MODES="PARALLEL_32_INT PARALLEL_64_2INT PARALLEL_64_LONG \ + PARALLEL_64_MMX PARALLEL_128_2LONG PARALLEL_128_2MMX \ + PARALLEL_128_SSE PARALLEL_128_SSE2" +elif test "x$ffdecsa_opt" != "xno"; then + echo "Bad option to --optimize '$ffdecsa_opt'. Should be 'yes, no, long'" + exit 1 +fi +if test "x${TMPDIR}" = "x"; then + TMPDIR="/tmp" +fi + +TMPDIR="${TMPDIR}/sc.$$" +mkdir ${TMPDIR} + +#Test FFDECSA compile +MAX_val=0 +if test "x$ffdecsa_opt" != "xno"; then + if test "x$ffdecsa_flags" = "x"; then + if test -f /proc/cpuinfo; then + get_cpu_optimization + fi + else + FLAGS=$ffdecsa_flags + fi + FFdecsaDIR="FFdecsa" + TMPOUT="${TMPDIR}/FFdecsa/out" + mkdir "${TMPDIR}/FFdecsa" + cp $FFdecsaDIR/*.c $FFdecsaDIR/*.h $FFdecsaDIR/Makefile "${TMPDIR}/FFdecsa/" + echo "Trying various FFdecsa optimizations..." + for var in ${FFDECSA_MODES}; do + make -C "${TMPDIR}/FFdecsa" FFdecsa_test "PARALLEL_MODE=${var}" "${FLAGS}" "COMPILER=$CXX" > /dev/null 2>&1 + if test $? -ne 0 ; then + echo " ${var}: build failed" + else + rm -f ${TMPOUT} + sync;sleep 2; "${TMPDIR}/FFdecsa/FFdecsa_test" > /dev/null 2>"${TMPOUT}" + if test $? -ne 0; then + echo " ${var}: test failed" + else + grep FAILED "${TMPOUT}" >/dev/null 2>&1 + if test $? -ne 1; then + echo " ${var}: test failed" + else + res=`grep "speed=.*Mbit" "${TMPOUT}" | sed -e 's/^.*=\([0-9]*\)\.[0-9]* Mbit.*$/\1/'` + echo " ${var}: $res" + if test $res -gt $MAX_val; then + MAX_val=$res + MAX_MODE=$var + fi + fi + fi + fi + make -C "${TMPDIR}/FFdecsa" clean >/dev/null 2>&1 + done + echo "Choosing PARALLEL_MODE = ${MAX_MODE}" + echo "CPUOPT ?= $(echo "$FLAGS" | sed 's/^.* -march=\(.*\)/\1/'g)" > Make.config + echo "PARALLEL ?= ${MAX_MODE}" >> Make.config + echo "CSAFLAGS ?= -Wall -fPIC -g $(echo "$FLAGS" | sed 's/FLAGS=\(.*\) -march=native/\1/'g)" >> Make.config +else + if test "x$ffdecsa_flags" != "x"; then + echo "FFDECSA_OPTS = \"$ffdecsa_flags\" PARALLEL_MODE=${MAX_MODE} COMPILER=$CXX" + elif test "x$MAX_MODE" != "xPARALLEL_32_INT"; then + echo "FFDECSA_OPTS = PARALLEL_MODE=${MAX_MODE} COMPILER=$CXX" + fi +fi + +if test "x$dvb_path" != "x"; then + if test -e "${dvb_path}/include/linux/dvb/frontend.h"; then + echo "DVB_DIR=${dvb_path}" + echo "Using DVB_DIR: ${dvb_path}" + elif test -e "${dvb_path}/linux/include/linux/dvb/frontend.h"; then + echo "DVB_DIR=${dvb_path}/linux" + echo "Using DVB_DIR: ${dvb_path}/linux" + else + echo "Could not find DVB headers within $dvb_path" + fi +fi +rm -rf "${TMPDIR}" diff -Nru sc/debian/control sc-debian/debian/control --- sc/debian/control 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/control 2011-11-11 21:54:26.000000000 +0000 @@ -0,0 +1,96 @@ +Source: vdr-plugin-sc +Section: video +Priority: extra +Maintainer: micky979 +Build-Depends: cdbs, debhelper (>= 7.0.50~), vdr-dev, gettext, libssl-dev, dpatch, mercurial, devscripts +Standards-Version: 3.8.4 + +Package: vdr-plugin-sc +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${vdr:Depends} +Description: SoftCAM for Irdeto, Seca, Viaccess, Nagra, Conax & Cryptoworks + +Package: libvdr-sc-cardclient +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Cardclient + +Package: libvdr-sc-conax +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Conax + +Package: libvdr-sc-constcw +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Constcw + +Package: libvdr-sc-cryptoworks +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Cryptoworks + +Package: libvdr-sc-irdeto +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Irdeto + +Package: libvdr-sc-nagra +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Nagra + +Package: libvdr-sc-nds +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Nds + +Package: libvdr-sc-seca +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Seca + +Package: libvdr-sc-shl +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Shl + +Package: libvdr-sc-viaccess +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SoftCam for Viaccess + +Package: libvdr-sc-card-conax +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Conax + +Package: libvdr-sc-card-cryptoworks +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Cryptoworks + +Package: libvdr-sc-card-irdeto +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Irdeto + +Package: libvdr-sc-card-nagra +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Nagra + +Package: libvdr-sc-card-seca +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Seca + +Package: libvdr-sc-card-viaccess +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Viaccess + +Package: libvdr-sc-card-videoguard2 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, vdr-plugin-sc (= ${binary:Version}) +Description: SmartCard for Videoguard2 diff -Nru sc/debian/copyright sc-debian/debian/copyright --- sc/debian/copyright 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/copyright 2011-11-11 21:06:45.000000000 +0000 @@ -0,0 +1,30 @@ +License: + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + The complete text of the GNU General Public License can be found + in /usr/share/common-licenses/GPL-2 on most Debian systems. + +License (Debian packaging): + The Debian packaging is licensed under the GPL, version 2 or any + later version, see /usr/share/common-licenses/GPL-2. + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them in this file. +# +# Check if the upstream sources explicitly state which licenses apply to +# which action. If this is not the case, ask the upstream author to add such a +# license disclaimer to all source files or at least to the README. For the +# GPL2 or GPL3 the small license disclaimer mentioned at the end of the full license +# text in "How to Apply These Terms to Your New Programs" should be sufficient. diff -Nru sc/debian/docs sc-debian/debian/docs --- sc/debian/docs 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/docs 2011-11-11 20:45:03.000000000 +0000 @@ -0,0 +1,3 @@ +README +README.CCcam +README.FFdecsa diff -Nru sc/debian/get-orig-source.sh sc-debian/debian/get-orig-source.sh --- sc/debian/get-orig-source.sh 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/get-orig-source.sh 2011-11-11 21:07:24.000000000 +0000 @@ -0,0 +1,7 @@ +#!/bin/sh + +test -x /usr/bin/hg || ( echo "you have to install the mercurial package!" && exit 1 ) +hg update -C -q +HG_SHA=$(hg identify -i) +VERSION_DATE=$(/bin/date --utc +%0d-%0m-%0Y) +dch -v "${VERSION_DATE}-1" "New Upstream Snapshot (hg revision $HG_SHA)" diff -Nru sc/debian/install sc-debian/debian/install --- sc/debian/install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/install 2011-11-11 20:45:03.000000000 +0000 @@ -0,0 +1,2 @@ +libvdr-sc.so.* usr/lib/vdr/plugins/ +debian/tmp/usr/share/locale diff -Nru sc/debian/libvdr-sc-card-conax.install sc-debian/debian/libvdr-sc-card-conax.install --- sc/debian/libvdr-sc-card-conax.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-conax.install 2011-11-11 21:20:26.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-conax/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-cryptoworks.install sc-debian/debian/libvdr-sc-card-cryptoworks.install --- sc/debian/libvdr-sc-card-cryptoworks.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-cryptoworks.install 2011-11-11 21:20:11.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-cryptoworks/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-irdeto.install sc-debian/debian/libvdr-sc-card-irdeto.install --- sc/debian/libvdr-sc-card-irdeto.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-irdeto.install 2011-11-11 21:19:59.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-irdeto/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-nagra.install sc-debian/debian/libvdr-sc-card-nagra.install --- sc/debian/libvdr-sc-card-nagra.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-nagra.install 2011-11-11 21:19:44.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-nagra/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-seca.install sc-debian/debian/libvdr-sc-card-seca.install --- sc/debian/libvdr-sc-card-seca.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-seca.install 2011-11-11 21:19:28.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-seca/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-viaccess.install sc-debian/debian/libvdr-sc-card-viaccess.install --- sc/debian/libvdr-sc-card-viaccess.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-viaccess.install 2011-11-11 21:19:14.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-viaccess/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-card-videoguard2.install sc-debian/debian/libvdr-sc-card-videoguard2.install --- sc/debian/libvdr-sc-card-videoguard2.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-card-videoguard2.install 2011-11-11 21:18:56.000000000 +0000 @@ -0,0 +1 @@ +systems/sc-videoguard2/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-cardclient.install sc-debian/debian/libvdr-sc-cardclient.install --- sc/debian/libvdr-sc-cardclient.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-cardclient.install 2011-11-11 21:13:16.000000000 +0000 @@ -0,0 +1 @@ +systems/cardclient/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-conax.install sc-debian/debian/libvdr-sc-conax.install --- sc/debian/libvdr-sc-conax.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-conax.install 2011-11-11 21:18:33.000000000 +0000 @@ -0,0 +1 @@ +systems/conax/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-constcw.install sc-debian/debian/libvdr-sc-constcw.install --- sc/debian/libvdr-sc-constcw.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-constcw.install 2011-11-11 21:18:12.000000000 +0000 @@ -0,0 +1 @@ +systems/constcw/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-cryptoworks.install sc-debian/debian/libvdr-sc-cryptoworks.install --- sc/debian/libvdr-sc-cryptoworks.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-cryptoworks.install 2011-11-11 21:17:48.000000000 +0000 @@ -0,0 +1 @@ +systems/cryptoworks/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-irdeto.install sc-debian/debian/libvdr-sc-irdeto.install --- sc/debian/libvdr-sc-irdeto.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-irdeto.install 2011-11-11 21:17:27.000000000 +0000 @@ -0,0 +1 @@ +systems/irdeto/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-nagra.install sc-debian/debian/libvdr-sc-nagra.install --- sc/debian/libvdr-sc-nagra.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-nagra.install 2011-11-11 21:17:14.000000000 +0000 @@ -0,0 +1 @@ +systems/nagra/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-nds.install sc-debian/debian/libvdr-sc-nds.install --- sc/debian/libvdr-sc-nds.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-nds.install 2011-11-11 21:17:01.000000000 +0000 @@ -0,0 +1 @@ +systems/nds/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-seca.install sc-debian/debian/libvdr-sc-seca.install --- sc/debian/libvdr-sc-seca.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-seca.install 2011-11-11 21:16:49.000000000 +0000 @@ -0,0 +1 @@ +systems/seca/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-shl.install sc-debian/debian/libvdr-sc-shl.install --- sc/debian/libvdr-sc-shl.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-shl.install 2011-11-11 21:16:36.000000000 +0000 @@ -0,0 +1 @@ +systems/shl/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/libvdr-sc-viaccess.install sc-debian/debian/libvdr-sc-viaccess.install --- sc/debian/libvdr-sc-viaccess.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/libvdr-sc-viaccess.install 2011-11-11 21:16:24.000000000 +0000 @@ -0,0 +1 @@ +systems/viaccess/libsc-*.so.* usr/lib/vdr/plugins/ diff -Nru sc/debian/patches/00list sc-debian/debian/patches/00list --- sc/debian/patches/00list 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/00list 2011-11-11 23:03:48.000000000 +0000 @@ -0,0 +1,5 @@ +01_Makefile +02_sc-fr +03_emm-viaccess +04_sc-ecm-size-camd +05_sc-FFdecsa-O2 diff -Nru sc/debian/patches/01_Makefile.dpatch sc-debian/debian/patches/01_Makefile.dpatch --- sc/debian/patches/01_Makefile.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/01_Makefile.dpatch 2011-11-11 22:43:31.000000000 +0000 @@ -0,0 +1,38 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_Makefile.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ + +diff -urNad a/Makefile b/Makefile +--- a/Makefile 2011-02-28 13:28:05.000000000 +0000 ++++ b/Makefile 2011-02-28 13:40:42.000000000 +0000 +@@ -54,7 +54,7 @@ + + ### Includes and Defines + +-INCLUDES = -I$(VDRDIR)/include ++INCLUDES = -I$(VDRDIR) + DEFINES = -DPLUGIN_NAME_I18N='"$(PLUGIN)"' + SHAREDDEFINES = -DAPIVERSNUM=$(APIVERSNUM) -D_GNU_SOURCE + LIBS = -lcrypto +@@ -97,7 +97,7 @@ + # test VDR version + BYVERS = $(strip $(shell if test $(APIVERSNUM) -ge 010703; then echo "*"; fi)) + # test if PlayTsVideo() exists (e.g. TSplay patch) +-BYTSPL = $(strip $(shell grep -l 'PlayTsVideo' $(VDRDIR)/include/vdr/device.h)) ++BYTSPL = $(strip $(shell grep -l 'PlayTsVideo' $(VDRDIR)/device.h)) + + ifneq ($(BYVERS)$(BYTSPL),) + SHAREDDEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE +@@ -118,7 +118,7 @@ + endif + + # max number of CAIDs per slot +-MAXCAID := $(shell sed -ne '/define MAXCASYSTEMIDS/ s/^.[a-zA-Z ]*\([0-9]*\).*$$/\1/p' $(VDRDIR)/ci.c) ++MAXCAID = 64 + ifneq ($(strip $(MAXCAID)),) + DEFINES += -DVDR_MAXCAID=$(MAXCAID) + endif diff -Nru sc/debian/patches/02_sc-fr.dpatch sc-debian/debian/patches/02_sc-fr.dpatch --- sc/debian/patches/02_sc-fr.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/02_sc-fr.dpatch 2011-11-11 22:52:05.000000000 +0000 @@ -0,0 +1,262 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_Makefile.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ + +diff -Nru sc-22082011/po/fr_FR.po sc-22082011-fr//po/fr_FR.po +--- sc-22082011/po/fr_FR.po 2011-08-22 19:38:45.000000000 +0200 ++++ sc-22082011-fr//po/fr_FR.po 2011-08-22 19:39:08.000000000 +0200 +@@ -11,14 +11,14 @@ + "Last-Translator: somebody\n" + "Language-Team: somebody\n" + "MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=ISO-8859-1\n" ++"Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + + msgid "(none)" + msgstr "(aucune)" + + msgid "Key update" +-msgstr "Mise à jour des clés" ++msgstr "Mise à jour des clés" + + msgid "off" + msgstr "off" +@@ -27,54 +27,54 @@ + msgstr "SoftCAM" + + msgid "Current keys:" +-msgstr "Clés en cours:" ++msgstr "Clés en cours :" + + msgid "Key update status:" +-msgstr "Statut de la mise à jour des clés:" ++msgstr "Statut de la mise à jour des clés :" + + #. TRANSLATORS: 2 leading spaces! + msgid " [Seen keys]" +-msgstr " [Clés trouvées]" ++msgstr " [Clés trouvées]" + + #. TRANSLATORS: 2 leading spaces! + msgid " [New keys]" +-msgstr " [Nouvelles clés]" ++msgstr " [Nouvelles clés]" + + msgid "Smartcard" + msgstr "Smartcard" + + msgid "Reset card" +-msgstr "Réinitialiser la carte" ++msgstr "Réinitialiser la carte" + + msgid "Really reset card?" +-msgstr "Réinitialiser la carte?" ++msgstr "Vraiment réinitialiser la carte ?" + + msgid "Module config" +-msgstr "Paramètrer le module" ++msgstr "Paramètre du module" + + msgid "Reset module to default" +-msgstr "Réinitialiser le module" ++msgstr "Réinitialiser le module" + + msgid "Really reset module to default?" +-msgstr "Réinitialiser le module?" ++msgstr "Vraiment réinitialiser le module ?" + + msgid "Module" + msgstr "Module" + + msgid "Message logging" +-msgstr "Message logué" ++msgstr "Message logué" + + msgid "Disable ALL modules" +-msgstr "Désactiver TOUS les modules" ++msgstr "Désactiver TOUS les modules" + + msgid "Reset ALL modules to default" +-msgstr "Réinitialiser TOUS les modules" ++msgstr "Réinitialiser TOUS les modules" + + msgid "Really disable ALL modules?" +-msgstr "Désactiver TOUS les modules?" ++msgstr "Vraiement désactiver TOUS les modules ?" + + msgid "Really reset ALL modules to default?" +-msgstr "Réinitialiser TOUS les modules?" ++msgstr "Vraiment réinitialiser TOUS les modules ?" + + msgid "Cryptsystem options" + msgstr "Options Cryptsystem" +@@ -83,7 +83,7 @@ + msgstr "Options Cryptsystem..." + + msgid "Message logging..." +-msgstr "Message logué..." ++msgstr "Message logué..." + + msgid "Smartcard interface" + msgstr "Interface Smartcard" +@@ -101,13 +101,13 @@ + msgstr "Recharger les fichiers" + + msgid "Really flush ECM cache?" +-msgstr "Vider le cache ECM?" ++msgstr "Vraiment vider le cache ECM ?" + + msgid "Really reload files?" +-msgstr "Recharger les fichiers?" ++msgstr "Vraiment recharger les fichiers ?" + + msgid "Active! Can't reload files now" +-msgstr "Actif! Impossible de recharger les fichiers" ++msgstr "Actif ! Impossible de recharger les fichiers" + + msgid "active CAIDs" + msgstr "CAIDs actifs" +@@ -122,34 +122,34 @@ + msgstr "supprimer" + + msgid "enabled" +-msgstr "" ++msgstr "activé" + + msgid "read-only" +-msgstr "" ++msgstr "lecture seule" + + msgid "Update keys (AU)" +-msgstr "Mise à jour des Clés (AU)" ++msgstr "Mise à jour des Clés (AU)" + + msgid "Start AU on EPG scan" +-msgstr "Démarrer AU lors du scan EPG" ++msgstr "Démarrer AU lors du scan EPG" + + msgid "Superseded keys" +-msgstr "Clés obsolètes" ++msgstr "Clés obsolètes" + + msgid "Concurrent FF streams" +-msgstr "FF streams en parallèle" ++msgstr "FF streams en parallèle" + + msgid "Force TransferMode" + msgstr "Forcer le TransferMode" + + msgid "Prefer local systems" +-msgstr "Préférer les systèmes locaux" ++msgstr "Préférer les systèmes locaux" + + msgid "ECM cache" +-msgstr "" ++msgstr "Cache ECM" + + msgid "TS buffer size MB" +-msgstr "" ++msgstr "Taille buffer TS MB" + + msgid "Active on DVB card" + msgstr "Actif sur la carte DVB" +@@ -164,7 +164,7 @@ + msgstr "Nom du fichier" + + msgid "Filesize limit (KB)" +-msgstr "Taille limite (Ko)" ++msgstr "Taille limite (KB)" + + msgid "Log to syslog" + msgstr "Logger dans Syslog" +@@ -176,40 +176,40 @@ + msgstr "Un logiciel emulateur de CAM" + + msgid "undisclosed key" +-msgstr "clé non-révélée" ++msgstr "clé non-révélée" + + msgid "Cardclient: connect immediately" +-msgstr "Cardclient: connecter immediatement" ++msgstr "Cardclient : connecter immediatement" + + msgid "Nagra: min. ECM processing time" +-msgstr "Nagra: temps de traitement min. ECM" ++msgstr "Nagra : temps de traitement min. ECM" + + msgid "Nagra2: drop EMM-S packets" +-msgstr "Nagra2: ignorer les packets EMM-S" ++msgstr "Nagra2 : ignorer les packets EMM-S" + + msgid "Nagra2: Enable AUXserver" +-msgstr "Nagra2: Activer AUXserver" ++msgstr "Nagra2 : Activer AUXserver" + + msgid "Nagra2: AUXserver hostname" +-msgstr "Nagra2: Hostname AUXserver" ++msgstr "Nagra2 : Hostname AUXserver" + + msgid "Nagra2: AUXserver port" +-msgstr "Nagra2: Port AUXserver" ++msgstr "Nagra2 : Port AUXserver" + + msgid "Nagra2: AUXserver password" +-msgstr "Nagra2: Mot de passe AUXserver" ++msgstr "Nagra2 : Mot de passe AUXserver" + + msgid "don't touch" + msgstr "ne pas modifier" + + msgid "disable" +-msgstr "désactiver" ++msgstr "désactiver" + + msgid "SC-Cryptoworks: Parental rating" +-msgstr "SC-Cryptoworks: Contrôle parentale" ++msgstr "SC-Cryptoworks : Contrôle parentale" + + msgid "SC-Nagra: use T14 Nagra mode" +-msgstr "" ++msgstr "SC-Nagra : Utiliser mode T14 Nagra" + + msgid "allow ALL" + msgstr "permettre TOUS" +@@ -224,16 +224,16 @@ + msgstr "bloquer TOUS" + + msgid "SC-Seca: EMM updates" +-msgstr "SC-Seca: mise à jour EMM" ++msgstr "SC-Seca : mise à jour EMM" + + msgid "SC-Viaccess: Parental lock" +-msgstr "" ++msgstr "SC-Viaccess : vérouillage parental" + + msgid "stream" +-msgstr "" ++msgstr "flux" + + msgid "tps.bin" +-msgstr "" ++msgstr "tps.bin" + + msgid "Viaccess: TPS updates from" +-msgstr "" ++msgstr "Viaccess : TPS mises à jour" +diff -Nru sc-22082011/system.c sc-22082011-fr//system.c +--- sc-22082011/system.c 2011-08-22 19:38:45.000000000 +0200 ++++ sc-22082011-fr//system.c 2011-08-22 19:39:01.000000000 +0200 +@@ -264,7 +264,7 @@ + + void cSystem::KeyOK(const char *txt) + { +- snprintf(currentKeyStr,sizeof(currentKeyStr),"%s (%s)\n",txt?txt:name,tr("undisclosed key")); ++ snprintf(currentKeyStr,sizeof(currentKeyStr),"%s (%s)",txt?txt:name,tr("undisclosed key")); + doLog=true; + } + diff -Nru sc/debian/patches/03_emm-viaccess.dpatch sc-debian/debian/patches/03_emm-viaccess.dpatch --- sc/debian/patches/03_emm-viaccess.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/03_emm-viaccess.dpatch 2011-11-11 22:52:15.000000000 +0000 @@ -0,0 +1,725 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_Makefile.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ + +diff -Nru sc/parse.c sc-emm-viaccess//parse.c +--- sc/parse.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//parse.c 2011-08-14 23:16:41.000000000 +0200 +@@ -69,11 +69,11 @@ + return p; + } + +-cProvider *cProviders::MatchProv(const unsigned char *data) ++cProvider *cProviders::MatchProv(const unsigned char *data, int pid) + { + cProvider *p=First(); + while(p) { +- if(p->MatchEMM(data)) break; ++ if(p->MatchEMM(data, pid)) break; + p=Next(p); + } + return p; +@@ -140,12 +140,12 @@ + card=c; + } + +-bool cIdSet::MatchEMM(const unsigned char *data) ++bool cIdSet::MatchEMM(const unsigned char *data, int pid) + { +- return (card && card->MatchEMM(data)) || MatchProv(data); ++ return (card && card->MatchEMM(data)) || MatchProv(data, pid); + } + +-bool cIdSet::MatchAndAssemble(cAssembleData *ad, int *updtype, cProvider **prov) ++bool cIdSet::MatchAndAssemble(cAssembleData *ad, int *updtype, cProvider **prov, int pid) + { + const unsigned char *data=ad->Data(); + cProvider *p; +@@ -154,10 +154,10 @@ + if(prov) *prov=0; + if(card->Assemble(ad)>=0) return true; + } +- else if((p=MatchProv(data))) { ++ else if((p=MatchProv(data, pid))) { + if(updtype) *updtype=p->UpdateType(data); + if(prov) *prov=p; +- if(p->Assemble(ad)>=0) return true; ++ if(p->Assemble(ad, pid)>=0) return true; + } + return false; + } +@@ -176,7 +176,7 @@ + return (mode<0x10 && mode==provBase); + } + +-bool cProviderIrdeto::MatchEMM(const unsigned char *data) ++bool cProviderIrdeto::MatchEMM(const unsigned char *data, int pid) + { + const unsigned int len=cParseIrdeto::AddrLen(data); + const unsigned int mode=cParseIrdeto::AddrBase(data); +@@ -241,7 +241,7 @@ + return id && !memcmp(id,provId,sizeof(provId)); + } + +-bool cProviderSeca::MatchEMM(const unsigned char *data) ++bool cProviderSeca::MatchEMM(const unsigned char *data, int pid) + { + return TID(data)==0x84 && + !memcmp(SID(data),provId,sizeof(provId)) && !memcmp(SA(data),sa,sizeof(sa)); +@@ -326,16 +326,92 @@ + return id ? (id[0]<<8)+id[1] : -1; + } + ++// -- cSharedEmm -------------------------------------------------------- ++ ++cSharedEmm::cSharedEmm (void) ++{ ++ sharedEmm = 0; ++ sharedLen = 0; ++ sharedToggle = 0; ++ allPid = 0; ++ nbShared = 0; ++} ++ ++cSharedEmm::~cSharedEmm () ++{ ++ for (int i=0; i < nbShared; i++) { ++ free (sharedEmm [i]); ++ } ++ free (sharedEmm); ++ free (sharedLen); ++ free (sharedToggle); ++ free (allPid); ++ nbShared = 0; ++} ++ ++void cSharedEmm::set (int pid, const unsigned char *emm, int emm_len, int toggle) ++{ ++ bool found = false; ++ int index; ++ for (index=0; index < nbShared; index++) { ++ if (allPid [index] == pid) { ++ found = true; ++ break; ++ } ++ } ++ ++ if (found && toggle == sharedToggle [index]) { ++ return; ++ } ++ ++ if (!found) { ++ nbShared++; ++ index = nbShared - 1; ++ sharedEmm = (unsigned char **)realloc (sharedEmm, nbShared * sizeof (unsigned char *)); ++ sharedLen = (int *)realloc (sharedLen, nbShared * sizeof (int)); ++ sharedToggle = (int *)realloc (sharedToggle, nbShared * sizeof (int)); ++ allPid = (int *)realloc (allPid, nbShared * sizeof (int)); ++ } else { ++ if (sharedEmm [index]) { ++ free (sharedEmm [index]); ++ } ++ } ++ ++ sharedEmm [index] = (unsigned char *)malloc (emm_len * sizeof (unsigned char)); ++ memcpy (sharedEmm [index], emm, emm_len); ++ sharedLen [index] = emm_len; ++ sharedToggle [index] = toggle; ++ allPid [index] = pid; ++} ++ ++unsigned char *cSharedEmm::get (int pid) ++{ ++ for (int i=0; i < nbShared; i++) { ++ if (allPid [i] == pid) { ++ return sharedEmm [i]; ++ } ++ } ++ return 0; ++} ++ ++int cSharedEmm::len (int pid) ++{ ++ for (int i=0; i < nbShared; i++) { ++ if (allPid [i] == pid) { ++ return sharedLen [i]; ++ } ++ } ++ return 0; ++} ++ + // -- cProviderViaccess -------------------------------------------------------- + + cProviderViaccess::cProviderViaccess(void) + { +- sharedEmm=0; sharedLen=sharedToggle=0; + } + + cProviderViaccess::cProviderViaccess(const unsigned char *id, const unsigned char *s) + { +- sharedEmm=0; sharedLen=sharedToggle=0; + memcpy(ident,id,sizeof(ident)); + ident[2]&=0xf0; + memcpy(sa,s,sizeof(sa)); +@@ -343,7 +419,6 @@ + + cProviderViaccess::~cProviderViaccess() + { +- free(sharedEmm); + } + + bool cProviderViaccess::MatchID(const unsigned char *data) +@@ -352,17 +427,19 @@ + return id && id[0]==ident[0] && id[1]==ident[1] && (id[2]&0xf0)==ident[2]; + } + +-bool cProviderViaccess::MatchEMM(const unsigned char *data) ++bool cProviderViaccess::MatchEMM(const unsigned char *data, int pid) + { + switch(data[0]) { + case 0x8e: +- if(memcmp(&data[3],sa,sizeof(sa)-1)) break; +- if((data[6]&2)==0) +- return sharedEmm && MatchID(sharedEmm); +- // fall through ++ return sharedEmm.get (pid) && sharedEmm.len (pid) && memcmp(&data[3],sa,sizeof(sa)-1)==0; + case 0x8c: + case 0x8d: +- return MatchID(data); ++ int sharedLen = 0; ++ if (MatchID (data)) { ++ sharedLen = SCT_LEN (data); ++ } ++ sharedEmm.set (pid, data, sharedLen, data [0]); ++ return false; // we don't match here even if it's ok for clearing all the other sharedEmm + } + return false; + } +@@ -382,25 +459,16 @@ + } + } + +-int cProviderViaccess::Assemble(cAssembleData *ad) ++int cProviderViaccess::Assemble(cAssembleData *ad, int pid) + { + const unsigned char *data=ad->Data(); + int len=SCT_LEN(data); + switch(data[0]) { +- case 0x8C: +- case 0x8D: +- if(data[0]!=sharedToggle) { +- free(sharedEmm); +- sharedLen=len; +- sharedEmm=(unsigned char *)malloc(len); +- if(sharedEmm) memcpy(sharedEmm,data,sharedLen); +- sharedToggle=data[0]; +- } +- break; +- + case 0x8E: +- if(sharedEmm) { +- unsigned char *tmp=AUTOMEM(len+sharedLen); ++ unsigned char *currentSharedEmm = sharedEmm.get (pid); ++ int currentLen = sharedEmm.len (pid); ++ if(currentSharedEmm && currentLen) { ++ unsigned char *tmp=AUTOMEM(len+currentLen); + unsigned char *ass=(unsigned char *)cParseViaccess::NanoStart(data); + len-=(ass-data); + if((data[6]&2)==0) { +@@ -416,8 +484,8 @@ + else { + memcpy(tmp,ass,len); + } +- ass=(unsigned char *)cParseViaccess::NanoStart(sharedEmm); +- int l=sharedLen-(ass-sharedEmm); ++ ass=(unsigned char *)cParseViaccess::NanoStart(currentSharedEmm); ++ int l=currentLen-(ass-currentSharedEmm); + memcpy(&tmp[len],ass,l); len+=l; + + ass=(unsigned char *)malloc(len+7); +@@ -536,10 +604,10 @@ + + bool cProviderConax::MatchID(const unsigned char *data) + { +- return MatchEMM(data); ++ return MatchEMM(data, 0); + } + +-bool cProviderConax::MatchEMM(const unsigned char *data) ++bool cProviderConax::MatchEMM(const unsigned char *data, int pid) + { + return !memcmp(&data[3],addr,sizeof(addr)); + } +@@ -570,10 +638,10 @@ + + bool cProviderCryptoworks::MatchID(const unsigned char *data) + { +- return MatchEMM(data); ++ return MatchEMM(data, 0); + } + +-bool cProviderCryptoworks::MatchEMM(const unsigned char *data) ++bool cProviderCryptoworks::MatchEMM(const unsigned char *data, int pid) + { + return false; + } +@@ -681,10 +749,10 @@ + + bool cProviderNDS::MatchID(const unsigned char *data) + { +- return MatchEMM(data); ++ return MatchEMM(data, 0); + } + +-bool cProviderNDS::MatchEMM(const unsigned char *data) ++bool cProviderNDS::MatchEMM(const unsigned char *data, int pid) + { + return cParseNDS::HasAddr(data,sa); + } +@@ -694,7 +762,7 @@ + return Bin2LongLong(sa,sizeof(sa)); + } + +-int cProviderNDS::Assemble(cAssembleData *ad) ++int cProviderNDS::Assemble(cAssembleData *ad, int pid) + { + return cParseNDS::Assemble(ad,sa); + } +diff -Nru sc/parse.h sc-emm-viaccess//parse.h +--- sc/parse.h 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//parse.h 2011-08-14 23:16:41.000000000 +0200 +@@ -46,17 +46,17 @@ + class cProvider : public cSimpleItem { + public: + virtual bool MatchID(const unsigned char *data)=0; +- virtual bool MatchEMM(const unsigned char *data)=0; ++ virtual bool MatchEMM(const unsigned char *data, int pid)=0; + virtual unsigned long long ProvId(void)=0; + virtual int UpdateType(const unsigned char *data) { return 2; } +- virtual int Assemble(cAssembleData *ad) { return 0; } ++ virtual int Assemble(cAssembleData *ad, int pid) { return 0; } + }; + + class cProviders : public cSimpleList { + public: + void AddProv(cProvider *p); + cProvider *FindProv(const unsigned char *data); +- cProvider *MatchProv(const unsigned char *data); ++ cProvider *MatchProv(const unsigned char *data, int pid); + }; + + class cCard { +@@ -75,8 +75,8 @@ + ~cIdSet(); + void SetCard(cCard *c); + void ResetIdSet(void); +- bool MatchEMM(const unsigned char *data); +- bool MatchAndAssemble(cAssembleData *ad, int *updtype, cProvider **p); ++ bool MatchEMM(const unsigned char *data, int pid); ++ bool MatchAndAssemble(cAssembleData *ad, int *updtype, cProvider **p, int pid); + }; + + // -- IRDETO ------------------------------------------------------ +@@ -89,7 +89,7 @@ + cProviderIrdeto(void) {} + cProviderIrdeto(unsigned char pb, const unsigned char *pi); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); + }; + +@@ -156,7 +156,7 @@ + cProviderSeca(void) {} + cProviderSeca(const unsigned char *pi, const unsigned char *s); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); + }; + +@@ -181,10 +181,24 @@ + + // -- VIACCESS ----------------------------------------------------- + ++class cSharedEmm { ++private: ++ unsigned char **sharedEmm; ++ int *sharedLen; ++ int *sharedToggle; ++ int *allPid; ++ int nbShared; ++public: ++ cSharedEmm (void); ++ virtual ~cSharedEmm (); ++ virtual void set (int pid, const unsigned char *emm, int emm_len, int toggle); ++ virtual unsigned char *get (int pid); ++ virtual int len (int pid); ++}; ++ + class cProviderViaccess : public cProvider { + private: +- unsigned char *sharedEmm; +- int sharedLen, sharedToggle; ++ cSharedEmm sharedEmm; + public: + unsigned char ident[3]; + unsigned char sa[4]; +@@ -193,10 +207,10 @@ + cProviderViaccess(const unsigned char *id, const unsigned char *s); + virtual ~cProviderViaccess(); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); + virtual int UpdateType(const unsigned char *data); +- virtual int Assemble(cAssembleData *ad); ++ virtual int Assemble(cAssembleData *ad, int pid); + }; + + class cCardViaccess : public cCard { +@@ -239,7 +253,7 @@ + // + cProviderConax(const unsigned char *a); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); + }; + +@@ -259,7 +273,7 @@ + // + cProviderCryptoworks(const unsigned char *a); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); + }; + +@@ -286,9 +300,9 @@ + // + cProviderNDS(const unsigned char *s); + virtual bool MatchID(const unsigned char *data); +- virtual bool MatchEMM(const unsigned char *data); ++ virtual bool MatchEMM(const unsigned char *data, int pid); + virtual unsigned long long ProvId(void); +- virtual int Assemble(cAssembleData *ad); ++ virtual int Assemble(cAssembleData *ad, int pid); + }; + + class cCardNDS : public cCard { +diff -Nru sc/systems/cardclient/aroureos.c sc-emm-viaccess//systems/cardclient/aroureos.c +--- sc/systems/cardclient/aroureos.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/aroureos.c 2011-08-14 23:18:27.000000000 +0200 +@@ -33,7 +33,7 @@ + virtual bool Init(const char *config); + virtual bool Login(void); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *source); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *source); + }; + + static cCardClientLinkReg __aroureos("Aroureos"); +@@ -79,11 +79,11 @@ + return true; + } + +-bool cCardClientAroureos::ProcessEMM(int caSys, const unsigned char *source) ++bool cCardClientAroureos::ProcessEMM(int pid, int caSys, const unsigned char *source) + { + if(emmAllowed) { + cMutexLock lock(this); +- if(MatchEMM(source)) { ++ if(MatchEMM(source, pid)) { + const int length=SCT_LEN(source); + int id=msEMM.Get(source,length,0); + if(id>0) { +diff -Nru sc/systems/cardclient/camd.c sc-emm-viaccess//systems/cardclient/camd.c +--- sc/systems/cardclient/camd.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/camd.c 2011-08-14 23:23:18.000000000 +0200 +@@ -57,7 +57,7 @@ + virtual bool Login(void); + virtual bool Immediate(void); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *source); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *source); + }; + + cCardClientCommon::cCardClientCommon(const char *Name, bool ConReply, bool LogReply, bool DoAES, int MinMsgLen) +@@ -175,11 +175,11 @@ + return true; + } + +-bool cCardClientCommon::ProcessEMM(int caSys, const unsigned char *source) ++bool cCardClientCommon::ProcessEMM(int pid, int caSys, const unsigned char *source) + { + if(emmAllowed && CanHandleEMM(caSys)) { + cMutexLock lock(this); +- if(MatchEMM(source)) { ++ if(MatchEMM(source, pid)) { + const int length=SCT_LEN(source); + int id=msEMM.Get(source,length,0); + if(id>0) { +@@ -443,7 +443,7 @@ + virtual bool Init(const char *config); + virtual bool Login(void); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *data); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *data); + }; + + static cCardClientLinkReg __camd35("Camd35"); +@@ -605,7 +605,7 @@ + return false; + } + +-bool cCardClientCamd35::ProcessEMM(int caSys, const unsigned char *data) ++bool cCardClientCamd35::ProcessEMM(int pid, int caSys, const unsigned char *data) + { + if(emmProcessing && emmAllowed) { + cMutexLock lock(this); +@@ -615,7 +615,7 @@ + int upd; + cProvider *p; + cAssembleData ad(data); +- if(MatchAndAssemble(&ad,&upd,&p)) { ++ if(MatchAndAssemble(&ad,&upd,&p,pid)) { + PRINTF(L_CC_CAMDEXTR,"EMM matched upd=%d provId=%.4llx",upd,p ? p->ProvId() : 0); + while((data=ad.Assembled())) { + LDUMP(L_CC_CAMDEXTR,&data[0],10,"processing assembled EMM"); +diff -Nru sc/systems/cardclient/cc.c sc-emm-viaccess//systems/cardclient/cc.c +--- sc/systems/cardclient/cc.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/cc.c 2011-08-14 23:25:42.000000000 +0200 +@@ -242,7 +242,7 @@ + { + cCardClient *cc=0; + while((cc=staticCcl.FindBySysId(caid,cc))) +- cc->ProcessEMM(caid,buffer); ++ cc->ProcessEMM(pid,caid,buffer); + } + + // -- cSystemLinkCardClient ----------------------------------------------------------- +diff -Nru sc/systems/cardclient/cccam2.c sc-emm-viaccess//systems/cardclient/cccam2.c +--- sc/systems/cardclient/cccam2.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/cccam2.c 2011-08-14 23:26:11.000000000 +0200 +@@ -681,7 +681,7 @@ + virtual bool Login(void); + virtual bool CanHandle(unsigned short SysId); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *data); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *data); + }; + + static cCardClientLinkReg __ncd("cccam2"); +@@ -1221,7 +1221,7 @@ + return false; + } + +-bool cCardClientCCcam2::ProcessEMM(int caSys, const unsigned char *data) ++bool cCardClientCCcam2::ProcessEMM(int pid, int caSys, const unsigned char *data) + { + bool res=false; + if(emmProcessing && emmAllowed) { +@@ -1231,7 +1231,7 @@ + if(s->EmmReady() && s->CaID()==caSys) { + cProvider *p; + cAssembleData ad(data); +- if(s->MatchAndAssemble(&ad,0,&p)) { ++ if(s->MatchAndAssemble(&ad,0,&p,pid)) { + const unsigned char *d; + while((d=ad.Assembled())) { + int len=SCT_LEN(d); +diff -Nru sc/systems/cardclient/cc.h sc-emm-viaccess//systems/cardclient/cc.h +--- sc/systems/cardclient/cc.h 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/cc.h 2011-08-14 23:26:29.000000000 +0200 +@@ -79,7 +79,7 @@ + virtual bool Immediate(void); + virtual bool CanHandle(unsigned short SysId); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw)=0; +- virtual bool ProcessEMM(int caSys, const unsigned char *data) { return false; } ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *data) { return false; } + const char *Name(void) { return name; } + }; + +diff -Nru sc/systems/cardclient/newcamd.c sc-emm-viaccess//systems/cardclient/newcamd.c +--- sc/systems/cardclient/newcamd.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/newcamd.c 2011-08-14 23:27:10.000000000 +0200 +@@ -190,7 +190,7 @@ + virtual bool Login(void); + virtual bool CanHandle(unsigned short SysId); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *data); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *data); + }; + + static cCardClientLinkReg __ncd("Newcamd"); +@@ -499,12 +499,12 @@ + return false; + } + +-bool cCardClientNewCamd::ProcessEMM(int caSys, const unsigned char *data) ++bool cCardClientNewCamd::ProcessEMM(int pid, int caSys, const unsigned char *data) + { + if(emmProcessing && emmAllowed) { + cMutexLock lock(this); + cAssembleData ad(data); +- if(MatchAndAssemble(&ad,0,0)) { ++ if(MatchAndAssemble(&ad,0,0,pid)) { + while((data=ad.Assembled())) { + int len=SCT_LEN(data); + int id=msEMM.Get(data,len,0); +diff -Nru sc/systems/cardclient/radegast.c sc-emm-viaccess//systems/cardclient/radegast.c +--- sc/systems/cardclient/radegast.c 2011-08-14 23:02:10.000000000 +0200 ++++ sc-emm-viaccess//systems/cardclient/radegast.c 2011-08-14 23:27:32.000000000 +0200 +@@ -51,7 +51,7 @@ + virtual bool Login(void); + virtual bool CanHandle(unsigned short SysId); + virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw); +- virtual bool ProcessEMM(int caSys, const unsigned char *data); ++ virtual bool ProcessEMM(int pid, int caSys, const unsigned char *data); + }; + + static cCardClientLinkReg __rdg("Radegast"); +@@ -273,14 +273,14 @@ + return false; + } + +-bool cCardClientRadegast::ProcessEMM(int caSys, const unsigned char *data) ++bool cCardClientRadegast::ProcessEMM(int pid, int caSys, const unsigned char *data) + { + if(emmProcessing && emmAllowed) { + cMutexLock lock(this); + int upd; + cProvider *p; + cAssembleData ad(data); +- if(MatchAndAssemble(&ad,&upd,&p)) { ++ if(MatchAndAssemble(&ad,&upd,&p,pid)) { + while((data=ad.Assembled())) { + int len=SCT_LEN(data); + int id=msEMM.Get(data,len,0); +diff -Nru sc/systems/irdeto/irdeto1.c sc-emm-viaccess//systems/irdeto/irdeto1.c +--- sc/systems/irdeto/irdeto1.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/irdeto/irdeto1.c 2011-08-14 23:16:41.000000000 +0200 +@@ -388,7 +388,7 @@ + unsigned char *chkkey=AUTOMEM(max(sizeof(ci->PMK),sizeof(ci->HMK))); + while(ci) { + ci->hexBase=cParseIrdeto::AddrBase(buffer); +- if((numKeys>0 && (ci->cProviderIrdeto::MatchEMM(buffer) || CheckNull(ci->provId,sizeof(ci->provId)) )) || ++ if((numKeys>0 && (ci->cProviderIrdeto::MatchEMM(buffer, pid) || CheckNull(ci->provId,sizeof(ci->provId)) )) || + (mk && ci->haveHMK && (ci->cCardIrdeto::MatchEMM(buffer)))) { + LBSTARTF(L_SYS_EMM); + LBPUT("%02x %02x%02x%02x",buffer[3],buffer[4],buffer[5],buffer[6]); +diff -Nru sc/systems/sc-conax/sc-conax.c sc-emm-viaccess//systems/sc-conax/sc-conax.c +--- sc/systems/sc-conax/sc-conax.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-conax/sc-conax.c 2011-08-14 23:16:41.000000000 +0200 +@@ -429,7 +429,7 @@ + static unsigned char ins84[] = { 0xdd,0x84,0x00,0x00,0x00 }; + unsigned char buff[MAX_LEN]; + +- if(MatchEMM(data)) { ++ if(MatchEMM(data, pid)) { + int l; + if((l=CheckSctLen(data,2))>0) { + buff[0]=0x12; buff[1]=l; +diff -Nru sc/systems/sc-cryptoworks/sc-cryptoworks.c sc-emm-viaccess//systems/sc-cryptoworks/sc-cryptoworks.c +--- sc/systems/sc-cryptoworks/sc-cryptoworks.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-cryptoworks/sc-cryptoworks.c 2011-08-14 23:16:41.000000000 +0200 +@@ -533,7 +533,7 @@ + static unsigned char ins[] = { 0xA4,0x42,0x00,0x00,0x00 }; + + cAssembleData ad(data); +- if(MatchAndAssemble(&ad,0,0)) { ++ if(MatchAndAssemble(&ad,0,0,pid)) { + while((data=ad.Assembled())) { + int c, n; + switch(data[0]) { +diff -Nru sc/systems/sc-irdeto/sc-irdeto.c sc-emm-viaccess//systems/sc-irdeto/sc-irdeto.c +--- sc/systems/sc-irdeto/sc-irdeto.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-irdeto/sc-irdeto.c 2011-08-14 23:16:41.000000000 +0200 +@@ -640,7 +640,7 @@ + { + static const unsigned char emmCmd[] = { 0x01,0x01,0x00,0x00,0x00,0x00 }; + +- if(MatchEMM(data)) { ++ if(MatchEMM(data, pid)) { + int len=cParseIrdeto::AddrLen(data)+1; + if(len<=ADDRLEN) { + const int dataLen=SCT_LEN(data)-5-len; // sizeof of data bytes (nanos) +diff -Nru sc/systems/sc-nagra/sc-nagra.c sc-emm-viaccess//systems/sc-nagra/sc-nagra.c +--- sc/systems/sc-nagra/sc-nagra.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-nagra/sc-nagra.c 2011-08-14 23:16:41.000000000 +0200 +@@ -708,7 +708,7 @@ + + bool cSmartCardNagra::Update(int pid, int caid, const unsigned char *data) + { +- if(MatchEMM(data)) { ++ if(MatchEMM(data, pid)) { + if(DoBlkCmd(data[8],data[9]+2,0x84,0x02,data+8+2) && Status()) { + cCondWait::SleepMs(300); + PostProcess(); +diff -Nru sc/systems/sc-seca/sc-seca.c sc-emm-viaccess//systems/sc-seca/sc-seca.c +--- sc/systems/sc-seca/sc-seca.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-seca/sc-seca.c 2011-08-14 23:16:41.000000000 +0200 +@@ -321,7 +321,7 @@ + + if(blocker==0 || (data[0]==0x82 && blocker==2) || (data[0]==0x84 && blocker==1)) { + cProviderScSeca *p=(cProviderScSeca *)FindProv(data); +- if(p && MatchEMM(data)) { ++ if(p && MatchEMM(data, pid)) { + PRINTF(L_SC_PROC,"got %s update",data[0]==0x82?"UNIQUE":"SHARED"); + const unsigned char *payload; + ins40[2]=p->index | (cParseSeca::SysMode(data) & 0xF0); +diff -Nru sc/systems/sc-viaccess/sc-viaccess.c sc-emm-viaccess//systems/sc-viaccess/sc-viaccess.c +--- sc/systems/sc-viaccess/sc-viaccess.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-viaccess/sc-viaccess.c 2011-08-14 23:16:41.000000000 +0200 +@@ -471,7 +471,7 @@ + + int updtype; + cAssembleData ad(data); +- if(MatchAndAssemble(&ad,&updtype,0)) { ++ if(MatchAndAssemble(&ad,&updtype,0,pid)) { + while((data=ad.Assembled())) { + const unsigned char *start=cParseViaccess::NanoStart(data); + int nanolen=SCT_LEN(data)-(start-data); +diff -Nru sc/systems/sc-videoguard2/sc-videoguard2.c sc-emm-viaccess//systems/sc-videoguard2/sc-videoguard2.c +--- sc/systems/sc-videoguard2/sc-videoguard2.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/sc-videoguard2/sc-videoguard2.c 2011-08-14 23:16:41.000000000 +0200 +@@ -673,7 +673,7 @@ + bool cSmartCardVideoGuard2::Update(int pid, int caid, const unsigned char *data) + { + static unsigned char ins42[5] = { 0xD1,0x42,0x00,0x00,0xFF }; +- if(MatchEMM(data)) { ++ if(MatchEMM(data, pid)) { + const unsigned char *payloaddata=cParseNDS::PayloadStart(data,cardID); //points to 02 xx yy + int lenEMM; + switch(payloaddata[0]) { +diff -Nru sc/systems/seca/seca.c sc-emm-viaccess//systems/seca/seca.c +--- sc/systems/seca/seca.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/seca/seca.c 2011-08-14 23:16:41.000000000 +0200 +@@ -1602,7 +1602,7 @@ + + unsigned char *buff=AUTOMEM(msgLen); + for(cSecaCardInfo *ci=Scards.First(); ci; ci=Scards.Next(ci)) { +- if(ci->MatchEMM(buffer) || (CheckNull(ci->sa,sizeof(ci->sa)) && ci->MatchID(buffer))) { ++ if(ci->MatchEMM(buffer, pid) || (CheckNull(ci->sa,sizeof(ci->sa)) && ci->MatchID(buffer))) { + unsigned char MK[16]; + if(cParseSeca::SysMode(buffer)&0x10) { + if(ci->KeySize()!=16) continue; // don't bother +diff -Nru sc/systems/viaccess/viaccess.c sc-emm-viaccess//systems/viaccess/viaccess.c +--- sc/systems/viaccess/viaccess.c 2011-08-14 23:02:11.000000000 +0200 ++++ sc-emm-viaccess//systems/viaccess/viaccess.c 2011-08-14 23:16:41.000000000 +0200 +@@ -420,8 +420,8 @@ + HashClear(); + memcpy(hbuff+3,mkey->ua,sizeof(mkey->ua)); + } +- else if(mkey->cProviderViaccess::MatchEMM(data)) { +- if(mkey->cProviderViaccess::Assemble(&ad)<0) continue; ++ else if(mkey->cProviderViaccess::MatchEMM(data, pid)) { ++ if(mkey->cProviderViaccess::Assemble(&ad, pid)<0) continue; + updtype=2; + HashClear(); + memcpy(hbuff+5,mkey->sa,sizeof(mkey->sa)-1); diff -Nru sc/debian/patches/04_sc-ecm-size-camd.dpatch sc-debian/debian/patches/04_sc-ecm-size-camd.dpatch --- sc/debian/patches/04_sc-ecm-size-camd.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/04_sc-ecm-size-camd.dpatch 2011-11-11 22:52:24.000000000 +0000 @@ -0,0 +1,24 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_Makefile.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ + +diff -Nru sc/systems/cardclient/camd.c sc-camd-ecm-size//systems/cardclient/camd.c +--- sc/systems/cardclient/camd.c 2011-07-31 11:00:06.000000000 +0200 ++++ sc-camd-ecm-size//systems/cardclient/camd.c 2011-07-31 11:02:00.000000000 +0200 +@@ -677,10 +677,10 @@ + { + bool res=false; + const int length=SCT_LEN(data); +- if(length<=255) { ++ if(length<=511) { + Lock(); + while(exclusive) sleepCond.Wait(*this); +- unsigned char buff[300]; ++ unsigned char buff[512]; + memset(buff,0xff,sizeof(buff)); + struct CmdBlock *cb=(struct CmdBlock *)buff; + const unsigned short pid=pinid++; diff -Nru sc/debian/patches/05_sc-FFdecsa-O2.dpatch sc-debian/debian/patches/05_sc-FFdecsa-O2.dpatch --- sc/debian/patches/05_sc-FFdecsa-O2.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/patches/05_sc-FFdecsa-O2.dpatch 2011-11-11 22:52:45.000000000 +0000 @@ -0,0 +1,20 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_Makefile.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ + +diff -Nru sc-16082011/Makefile sc-16082011-FFdecsa//Makefile +--- sc-16082011/Makefile 2011-08-17 10:57:11.000000000 +0200 ++++ sc-16082011-FFdecsa//Makefile 2011-08-17 11:09:11.000000000 +0200 +@@ -137,7 +137,7 @@ + # FFdeCSA + CPUOPT ?= pentium + PARALLEL ?= PARALLEL_32_INT +-CSAFLAGS ?= -Wall -fPIC -g -O3 -mmmx -fomit-frame-pointer -fexpensive-optimizations -funroll-loops ++CSAFLAGS ?= -Wall -fPIC -g -O2 -mmmx -fomit-frame-pointer -fexpensive-optimizations -funroll-loops + FFDECSADIR = FFdecsa + FFDECSA = $(FFDECSADIR)/FFdecsa.o + FFDECSATEST = $(FFDECSADIR)/FFdecsa_test.done diff -Nru sc/debian/plugin.sc.conf sc-debian/debian/plugin.sc.conf --- sc/debian/plugin.sc.conf 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/plugin.sc.conf 2011-11-11 21:22:26.000000000 +0000 @@ -0,0 +1,11 @@ +# +# Command line parameters for softcam plugins +# +# See /usr/share/doc/vdr-plugin-sc/README.gz for a documentation +# about all available command line parameters. + +# example forces DVB device N to budget mode (using FFdecsa) +# --budget=N + +# example script for external key updates +# --external-au=CMD diff -Nru sc/debian/rules sc-debian/debian/rules --- sc/debian/rules 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/rules 2011-11-11 21:49:10.000000000 +0000 @@ -0,0 +1,23 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/dpatch.mk + +DEB_INSTALL_CHANGELOGS_ALL = HISTORY + +MAKE_OPTIONS = DVBDIR=/usr VDRDIR=/usr/include/vdr LIBDIR=. \ + LOCALEDIR=debian/tmp/usr/share/locale + +common-build-arch:: +# /bin/sh debian/configure_FFdecsa + $(MAKE) all $(MAKE_OPTIONS) + +cleanbuilddir:: + $(MAKE) -o .dependencies clean $(MAKE_OPTIONS) + rm -f libvdr-*.so.* systems/*/libsc*.so.* + +common-binary-predeb-arch:: + sh /usr/share/vdr-dev/dependencies.sh + +update:: + sh debian/get-orig-source.sh diff -Nru sc/debian/source/format sc-debian/debian/source/format --- sc/debian/source/format 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/source/format 2011-11-11 20:45:03.000000000 +0000 @@ -0,0 +1 @@ +3.0 (quilt) diff -Nru sc/debian/vdr-plugin-sc.dirs sc-debian/debian/vdr-plugin-sc.dirs --- sc/debian/vdr-plugin-sc.dirs 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/vdr-plugin-sc.dirs 2011-11-11 21:27:46.000000000 +0000 @@ -0,0 +1 @@ +etc/vdr/plugins/sc diff -Nru sc/debian/vdr-plugin-sc.doc sc-debian/debian/vdr-plugin-sc.doc --- sc/debian/vdr-plugin-sc.doc 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/vdr-plugin-sc.doc 2011-11-11 21:27:59.000000000 +0000 @@ -0,0 +1,3 @@ +README +README.CCcam +README.FFdecsa diff -Nru sc/debian/vdr-plugin-sc.install sc-debian/debian/vdr-plugin-sc.install --- sc/debian/vdr-plugin-sc.install 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/vdr-plugin-sc.install 2011-11-11 21:15:24.000000000 +0000 @@ -0,0 +1,4 @@ +libvdr-sc.so.* usr/lib/vdr/plugins/ +examples/* usr/share/vdr-plugin-sc/examples/ +debian/plugin.sc.conf etc/vdr/plugins/ +debian/tmp/usr/share/locale diff -Nru sc/debian/vdr-plugin-sc.postinst sc-debian/debian/vdr-plugin-sc.postinst --- sc/debian/vdr-plugin-sc.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sc-debian/debian/vdr-plugin-sc.postinst 2011-11-11 21:23:59.000000000 +0000 @@ -0,0 +1,45 @@ +#!/bin/sh +# postinst script for vdr-plugin-sc +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +case "$1" in + configure) + if [ ! -L /var/lib/vdr/plugins/sc ] + then + rm -fr /var/lib/vdr/plugins/sc/ + ln -s /etc/vdr/plugins/sc/ /var/lib/vdr/plugins/sc + fi + + chown -R vdr:vdr /etc/vdr/plugins/sc/ + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0