Hello community,

here is the log from the commit of package vdr-plugin-remote for 
openSUSE:Factory checked in at 2018-03-24 16:15:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vdr-plugin-remote (Old)
 and      /work/SRC/openSUSE:Factory/.vdr-plugin-remote.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "vdr-plugin-remote"

Sat Mar 24 16:15:58 2018 rev:15 rq:590425 version:0.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/vdr-plugin-remote/vdr-plugin-remote.changes      
2014-04-22 11:55:52.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.vdr-plugin-remote.new/vdr-plugin-remote.changes 
2018-03-24 16:16:11.181753722 +0100
@@ -1,0 +2,19 @@
+Thu Mar 22 20:46:34 UTC 2018 - [email protected]
+
+- update to version 0.7.0 (2015-09-20)
+  - Fix a random crash when terminating the tcp remote.
+  - Use plgcfg from pkg-config (thanks to Ville Skytt344).
+  - Support VDR version 2.3.1+.
+- changes from version 0.6.0:
+  - Use Repeat Delay/Repeat Delta settings (VDR->Setup->
+    Miscellaneous).
+  - Support event type 2 (mouse wheel, rotary-encoder) as a remote
+    control (thanks to Thomas Reufer).
+  - Improved OSD emulation:
+    o Reworked tabulator processing.
+    o Optimal use of limited screen width.
+    o Avoid display errors with VDR 2.2.0.
+    o Fixed misaligned output caused by multi-byte characters.
+    o Some speed improvements.
+
+-------------------------------------------------------------------

Old:
----
  vdr-remote-0.5.0.tgz

New:
----
  vdr-remote-0.7.0.tgz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ vdr-plugin-remote.spec ++++++
--- /var/tmp/diff_new_pack.Vh8dRh/_old  2018-03-24 16:16:12.193717243 +0100
+++ /var/tmp/diff_new_pack.Vh8dRh/_new  2018-03-24 16:16:12.197717099 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package vdr-plugin-remote
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
 #
 
 
-%define pluginversion 0.5.0
+%define pluginversion 0.7.0
 %define pluginname remote
 %define pluginurl http://www.escape-edv.de/endriss/vdr
 #
@@ -27,7 +27,7 @@
 Version:        %{pluginversion}
 Release:        0
 Summary:        VDR %{pluginname} plugin
-License:        GPL-2.0+
+License:        GPL-2.0-or-later
 Group:          Hardware/TV
 Url:            %{pluginurl}
 Source:         %{plugintarball}

++++++ vdr-remote-0.5.0.tgz -> vdr-remote-0.7.0.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/CONTRIBUTORS 
new/remote-0.7.0/CONTRIBUTORS
--- old/remote-0.5.0/CONTRIBUTORS       2012-12-26 02:36:47.000000000 +0100
+++ new/remote-0.7.0/CONTRIBUTORS       2015-09-20 01:54:53.000000000 +0200
@@ -9,6 +9,7 @@
 
 Ville Skytt� <ville dot skytta at iki dot fi>
  for translating OSD texts to the Finnish language
+ for providing a patch to use plgcfg from pkg-config
 
 Ronny Kornexl <ronny dot kornexl at online dot de>
  for reporting that cTtyStatus::Recording() and cTtyStatus::Replaying()
@@ -29,5 +30,8 @@
 Joachim Selinger <selinger at idefix dot s dot bawue dot de>
  for suggesting to implement selection of the input device by path.
 
-Tobias Grimm tobias dot grimm at e-tobi dot net
+Tobias Grimm <tobias dot grimm at e-tobi dot net>
  for providing a better gettext detection using i18n.h.
+
+Thomas Reufer <thomas at reufer dot ch>
+ for adding support for event type 2 (mouse wheel, rotary-encoder).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/HISTORY new/remote-0.7.0/HISTORY
--- old/remote-0.5.0/HISTORY    2012-12-26 02:54:17.000000000 +0100
+++ new/remote-0.7.0/HISTORY    2015-09-20 01:56:35.000000000 +0200
@@ -130,3 +130,19 @@
 - Access /proc/av7110_ir in write-only mode (required by kernel 2.6.34+).
 - Adopt Makefile for vdr 1.7.34+.
 
+
+2015-04-12: Version 0.6.0
+- Use Repeat Delay/Repeat Delta settings (VDR->Setup->Miscellaneous).
+- Support event type 2 (mouse wheel, rotary-encoder) as a remote control
+  (thanks to Thomas Reufer).
+- Improved OSD emulation:
+  o Reworked tabulator processing.
+  o Optimal use of limited screen width.
+  o Avoid display errors with VDR 2.2.0.
+  o Fixed misaligned output caused by multi-byte characters.
+  o Some speed improvements.
+
+2015-09-20: Version 0.7.0
+- Fix a random crash when terminating the tcp remote.
+- Use plgcfg from pkg-config (thanks to Ville Skytt�).
+- Support VDR version 2.3.1+.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/Makefile new/remote-0.7.0/Makefile
--- old/remote-0.5.0/Makefile   2012-12-26 02:16:57.000000000 +0100
+++ new/remote-0.7.0/Makefile   2015-09-20 01:39:34.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # Remote Control plugin for the Video Disk Recorder
 #
-# Copyright (C) 2002-2010 Oliver Endriss <[email protected]>
+# Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -34,6 +34,7 @@
 PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) 
$(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config 
--variable=$(1) ../../../vdr.pc))
 LIBDIR = $(DESTDIR)$(call PKGCFG,libdir)
 LOCDIR = $(DESTDIR)$(call PKGCFG,locdir)
+PLGCFG = $(call PKGCFG,plgcfg)
 #
 TMPDIR ?= /tmp
 
@@ -90,6 +91,11 @@
 i18n install-i18n:
        
 endif
+
+else # compatibility section
+
+-include $(PLGCFG)
+
 endif # compatibility section
 
 ### The name of the distribution archive:
@@ -119,6 +125,7 @@
 ifneq ($(OLD_I18N),)
 OBJS += i18n.o
 endif
+OBJS += compat.o
 
 ### The main target:
 
@@ -191,6 +198,6 @@
 env:
        @echo "Configuration:"
        @echo "  APIVERSION $(APIVERSION)"
-       @echo "  CXX $(CXX)  CXXFLAGS $(CXXFLAGS)"
+       @echo "  CXX $(CXX)  CXXFLAGS $(CXXFLAGS)  LDFLAGS $(LDFLAGS)"
        @echo "  VDRDIR $(VDRDIR)  LIBDIR $(LIBDIR)  LOCDIR $(LOCDIR)"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/README new/remote-0.7.0/README
--- old/remote-0.5.0/README     2012-12-26 03:53:56.000000000 +0100
+++ new/remote-0.7.0/README     2015-09-20 01:45:55.000000000 +0200
@@ -1,7 +1,7 @@
 remote - Remote Control plugin for the Video Disk Recorder (VDR)
 ================================================================
 
-Version:                      0.5.0
+Version:                      0.7.0
 
 Written by:                   Oliver Endriss <[email protected]>
 
@@ -24,7 +24,7 @@
     - Built-in remote control port of the av711x-based DVB cards
       (SD full-featured cards), e.g. DVB-S Nexus.
     - Remote control port of some budget cards, e.g. Nova-CI.
-    - Other input devices.
+    - Other input devices (rotary-encoder, wheel mouse).
     See file FAQ for a list of cards which have been reported to work.
 
 (b) keyboard (tty driver): /dev/console, /dev/ttyX
@@ -33,17 +33,13 @@
 
 (d) LIRC
 
-Notes:
-[1] supported by DVB and dvb-kernel
-[2] supported by dvb-kernel only
-
 
 Installation:
 -------------
 The Remote Control plugin is installed the same way as any other plugin:
 - cd VDR/PLUGINS/src
-- tar xfz vdr-remote-0.5.0.tgz
-- ln -s remote-0.5.0 remote
+- tar xfz vdr-remote-0.7.0.tgz
+- ln -s remote-0.7.0 remote
 - cd ../..
 - make plugins
 
@@ -94,7 +90,7 @@
 
 Notes:
 [3] There is a restriction:
-    By default, /proc/av7110 is owned by root with permissions -rw-r-r- (0644).
+    By default, /proc/av7110 is owned by root with permissions --w------- 
(0200).
     Therefore, the new autodetect feature can be used only,
     - if vdr runs as root
     or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/compat.c new/remote-0.7.0/compat.c
--- old/remote-0.5.0/compat.c   1970-01-01 01:00:00.000000000 +0100
+++ new/remote-0.7.0/compat.c   2015-09-20 03:38:20.000000000 +0200
@@ -0,0 +1,119 @@
+/*
+ * Remote Control plugin for the Video Disk Recorder
+ *
+ * compat.h: Compatibility stuff
+ *
+ * Copyright (C) 2015 Oliver Endriss <[email protected]>
+ *
+ * cSocketRemote was copied from cSocket (svdrp.c, VDR 2.2.0):
+ * Copyright (C) 2000, 2003, 2006, 2008, 2013 Klaus Schmidinger
+ *
+ * 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
+ * Or, point your browser to 
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ */
+
+#include <vdr/config.h>
+#include "compat.h"
+
+#if VDRVERSNUM >= 20300
+// --- cSocket ---------------------------------------------------------------
+
+cSocketRemote::cSocketRemote(int Port, int Queue)
+{
+  port = Port;
+  sock = -1;
+  queue = Queue;
+}
+
+cSocketRemote::~cSocketRemote()
+{
+  Close();
+}
+
+void cSocketRemote::Close(void)
+{
+  if (sock >= 0) {
+     close(sock);
+     sock = -1;
+     }
+}
+
+bool cSocketRemote::Open(void)
+{
+  if (sock < 0) {
+     // create socket:
+     sock = socket(PF_INET, SOCK_STREAM, 0);
+     if (sock < 0) {
+        LOG_ERROR;
+        port = 0;
+        return false;
+        }
+     // allow it to always reuse the same port:
+     int ReUseAddr = 1;
+     setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &ReUseAddr, sizeof(ReUseAddr));
+     //
+     struct sockaddr_in name;
+     name.sin_family = AF_INET;
+     name.sin_port = htons(port);
+     name.sin_addr.s_addr = SVDRPhosts.LocalhostOnly() ? 
htonl(INADDR_LOOPBACK) : htonl(INADDR_ANY);
+     if (bind(sock, (struct sockaddr *)&name, sizeof(name)) < 0) {
+        LOG_ERROR;
+        Close();
+        return false;
+        }
+     // make it non-blocking:
+     int oldflags = fcntl(sock, F_GETFL, 0);
+     if (oldflags < 0) {
+        LOG_ERROR;
+        return false;
+        }
+     oldflags |= O_NONBLOCK;
+     if (fcntl(sock, F_SETFL, oldflags) < 0) {
+        LOG_ERROR;
+        return false;
+        }
+     // listen to the socket:
+     if (listen(sock, queue) < 0) {
+        LOG_ERROR;
+        return false;
+        }
+     }
+  return true;
+}
+
+int cSocketRemote::Accept(void)
+{
+  if (Open()) {
+     struct sockaddr_in clientname;
+     uint size = sizeof(clientname);
+     int newsock = accept(sock, (struct sockaddr *)&clientname, &size);
+     if (newsock > 0) {
+        bool accepted = SVDRPhosts.Acceptable(clientname.sin_addr.s_addr);
+        if (!accepted) {
+           const char *s = "Access denied!\n";
+           if (write(newsock, s, strlen(s)) < 0)
+              LOG_ERROR;
+           close(newsock);
+           newsock = -1;
+           }
+        isyslog("connect from %s, port %hu - %s", 
inet_ntoa(clientname.sin_addr), ntohs(clientname.sin_port), accepted ? 
"accepted" : "DENIED");
+        }
+     else if (errno != EINTR && errno != EAGAIN)
+        LOG_ERROR;
+     return newsock;
+     }
+  return -1;
+}
+#endif // VDRVERSNUM >= 20300
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/compat.h new/remote-0.7.0/compat.h
--- old/remote-0.5.0/compat.h   1970-01-01 01:00:00.000000000 +0100
+++ new/remote-0.7.0/compat.h   2015-09-20 03:39:14.000000000 +0200
@@ -0,0 +1,52 @@
+/*
+ * Remote Control plugin for the Video Disk Recorder
+ *
+ * compat.h: Compatibility stuff
+ *
+ * Copyright (C) 2015 Oliver Endriss <[email protected]>
+ *
+ * cSocketRemote was copied from cSocket (svdrp.h, VDR 2.2.0):
+ * Copyright (C) 2000, 2003, 2006, 2008, 2013 Klaus Schmidinger
+ *
+ * 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
+ * Or, point your browser to 
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ */
+
+#ifndef __PLUGIN_REMOTE_COMPAT_H
+#define __PLUGIN_REMOTE_COMPAT_H
+
+#if VDRVERSNUM >= 20300
+
+class cSocketRemote {
+private:
+  int port;
+  int sock;
+  int queue;
+  void Close(void);
+public:
+  cSocketRemote(int Port, int Queue = 1);
+  ~cSocketRemote();
+  bool Open(void);
+  int Accept(void);
+  };
+
+#else // VDRVERSNUM >= 20300
+
+#include <vdr/svdrp.h>
+typedef cSocket        cSocketRemote;
+
+#endif // VDRVERSNUM >= 20300
+
+#endif //__PLUGIN_REMOTE_COMPAT_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/misc/remote.conf.event5.wheelmouse 
new/remote-0.7.0/misc/remote.conf.event5.wheelmouse
--- old/remote-0.5.0/misc/remote.conf.event5.wheelmouse 1970-01-01 
01:00:00.000000000 +0100
+++ new/remote-0.7.0/misc/remote.conf.event5.wheelmouse 2015-04-12 
03:42:09.000000000 +0200
@@ -0,0 +1,5 @@
+remote-event5.0        0000000100010112
+remote-event5.7        0000000100010110
+remote-event5.9        0000000100010111
+remote-event5.4        0000000100020008
+remote-event5.6        FFFFFFFF00020008
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/remote-0.5.0/misc/remote.conf.event5.wheelmouse.readme 
new/remote-0.7.0/misc/remote.conf.event5.wheelmouse.readme
--- old/remote-0.5.0/misc/remote.conf.event5.wheelmouse.readme  1970-01-01 
01:00:00.000000000 +0100
+++ new/remote-0.7.0/misc/remote.conf.event5.wheelmouse.readme  2015-04-12 
04:09:35.000000000 +0200
@@ -0,0 +1,14 @@
+Configuration for a rotary-encoder/wheel mouse
+==============================================
+
+Notes:
+- This is an example how a standard wheel mouse can be used to move editing 
marks.
+- See 
http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/125341-schneiden-wie-die-profis
+
+vdr key            code                mouse action                  vdr action
+-------------------------------------------------------------------------------------
+remote-event5.0    0000000100010112    press wheel (middle button)   toggle 
mark
+remote-event5.7    0000000100010110    press left button             previous 
mark
+remote-event5.9    0000000100010111    press right button            next mark
+remote-event5.4    0000000100020008    turn wheel up                 move mark 
left
+remote-event5.6    FFFFFFFF00020008    turn wheel down               move mark 
right
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/de_DE.po new/remote-0.7.0/po/de_DE.po
--- old/remote-0.5.0/po/de_DE.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/de_DE.po        2015-09-20 18:32:01.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-05-27 17:56+0200\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-10-05 06:58+0200\n"
 "Last-Translator: Oliver Endriss <[email protected]>, 2002-2007\n"
 "Language-Team: <[email protected]>\n"
@@ -16,47 +16,36 @@
 "Content-Type: text/plain; charset=ISO-8859-15\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: remote.c:52
 msgid "Remote control"
 msgstr "Fernbedienung"
 
-#: remote.c:233 remote.c:777
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: remote.c:255
 msgid "Error uploading keymap"
 msgstr "Fehler beim Laden der Tastenbelegung"
 
-#: remote.c:336
 msgid "Press any key to use pre-loaded keymap"
 msgstr "Taste dr�cken, um zuvor geladene Keymap zu verwenden"
 
-#: remote.c:341
 msgid "User-supplied keymap will be used"
 msgstr "Benutzerdefinierte Keymap wird verwendet"
 
-#: remote.c:347
 msgid "Remote control test - press and hold down any key"
 msgstr "Test der Fernbedienung - beliebige Taste gedr�ckt halten"
 
-#: remote.c:366
 msgid "RC5 protocol detected"
 msgstr "RC5-Protokoll erkannt"
 
-#: remote.c:390
 msgid "RC5 protocol detected (inverted signal)"
 msgstr "RC5-Protokoll erkannt (invertiertes Signal)"
 
-#: remote.c:401
 msgid "RCMM protocol detected"
 msgstr "RCMM-Protokoll erkannt"
 
-#: remote.c:412
 msgid "RCMM protocol detected (inverted signal)"
 msgstr "RCMM-Protokoll erkannt (invertiertes Signal)"
 
-#: remote.c:420
 msgid "No remote control detected"
 msgstr "Keine Fernbedienung erkannt"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/fi_FI.po new/remote-0.7.0/po/fi_FI.po
--- old/remote-0.5.0/po/fi_FI.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/fi_FI.po        2015-09-20 18:32:01.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-05-27 17:56+0200\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-10-05 06:58+0200\n"
 "Last-Translator: Ville Skytt� <ville dot skytta at iki dot fi>, 2004\n"
 "Language-Team: <[email protected]>\n"
@@ -16,47 +16,36 @@
 "Content-Type: text/plain; charset=ISO-8859-15\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: remote.c:52
 msgid "Remote control"
 msgstr "Kaukos��din"
 
-#: remote.c:233 remote.c:777
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: remote.c:255
 msgid "Error uploading keymap"
 msgstr "N�pp�inkartan lataaminen ep�onnistui"
 
-#: remote.c:336
 msgid "Press any key to use pre-loaded keymap"
 msgstr "Paina mit� tahansa n�pp�int� k�ytt��ksesi oletusn�pp�inkarttaa"
 
-#: remote.c:341
 msgid "User-supplied keymap will be used"
 msgstr "K�ytet��n k�ytt�j�n m��rittelem�� n�pp�inkarttaa"
 
-#: remote.c:347
 msgid "Remote control test - press and hold down any key"
 msgstr "Kaukos��dintesti - paina ja pid� alhaalla jotain kaukos��timen 
n�pp�int�"
 
-#: remote.c:366
 msgid "RC5 protocol detected"
 msgstr "RC5-yhteysk�yt�nt� tunnistettu"
 
-#: remote.c:390
 msgid "RC5 protocol detected (inverted signal)"
 msgstr "RC5-yhteysk�yt�nt� tunnistettu (k��nteinen signaali)"
 
-#: remote.c:401
 msgid "RCMM protocol detected"
 msgstr "RCMM-yhteysk�yt�nt� tunnistettu"
 
-#: remote.c:412
 msgid "RCMM protocol detected (inverted signal)"
 msgstr "RCMM-yhteysk�yt�nt� tunnistettu (k��nteinen signaali)"
 
-#: remote.c:420
 msgid "No remote control detected"
 msgstr "Kaukos��dint� ei tunnistettu"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/fr_FR.po new/remote-0.7.0/po/fr_FR.po
--- old/remote-0.5.0/po/fr_FR.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/fr_FR.po        2015-09-20 18:32:01.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-05-27 17:56+0200\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-10-05 06:58+0200\n"
 "Last-Translator: Pierre Briec <eclipse dot vdr at gmail dot com>, 2006\n"
 "Language-Team: <[email protected]>\n"
@@ -16,47 +16,36 @@
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: remote.c:52
 msgid "Remote control"
 msgstr "T�l�commande"
 
-#: remote.c:233 remote.c:777
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: remote.c:255
 msgid "Error uploading keymap"
 msgstr "Erreur chargement tables de touches"
 
-#: remote.c:336
 msgid "Press any key to use pre-loaded keymap"
 msgstr "Appuyez sur une touche pour utiliser un Keymap pr�charg�"
 
-#: remote.c:341
 msgid "User-supplied keymap will be used"
 msgstr "Keymap personnalis� va �tre utilis�"
 
-#: remote.c:347
 msgid "Remote control test - press and hold down any key"
 msgstr "Test t�l�commande - Appuyer et maintenir une touche enfonc�e"
 
-#: remote.c:366
 msgid "RC5 protocol detected"
 msgstr "Protocole RC5 d�tect�"
 
-#: remote.c:390
 msgid "RC5 protocol detected (inverted signal)"
 msgstr "Protocole RC5 d�tect� (signal invers�)"
 
-#: remote.c:401
 msgid "RCMM protocol detected"
 msgstr "Protocole RCMM d�tect�"
 
-#: remote.c:412
 msgid "RCMM protocol detected (inverted signal)"
 msgstr "Protocole RCMM d�tect� (signal invers�)"
 
-#: remote.c:420
 msgid "No remote control detected"
 msgstr "Aucune t�l�commande d�tect�e"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/it_IT.po new/remote-0.7.0/po/it_IT.po
--- old/remote-0.5.0/po/it_IT.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/it_IT.po        2015-09-20 18:32:01.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-12-26 02:52+0100\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-12-29 02:22+0100\n"
 "Last-Translator: Gringo <[email protected]>\n"
 "Language-Team:  <[email protected]>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/pl_PL.po new/remote-0.7.0/po/pl_PL.po
--- old/remote-0.5.0/po/pl_PL.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/pl_PL.po        2015-09-20 18:32:02.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-05-27 17:56+0200\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-10-05 06:58+0200\n"
 "Last-Translator: Jakub Wolnicki, 2006\n"
 "Language-Team: <[email protected]>\n"
@@ -16,47 +16,36 @@
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: remote.c:52
 msgid "Remote control"
 msgstr "Zdalne sterowanie"
 
-#: remote.c:233 remote.c:777
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: remote.c:255
 msgid "Error uploading keymap"
 msgstr "Blad przy przesylaniu mapy klawiszy"
 
-#: remote.c:336
 msgid "Press any key to use pre-loaded keymap"
 msgstr "Nacisnij dowolny klawisz, aby uzyc zaladowanej mapy klawiszy"
 
-#: remote.c:341
 msgid "User-supplied keymap will be used"
 msgstr "Uzyta zostanie mapa klawiszy, zdefinowana przez uzytkownika"
 
-#: remote.c:347
 msgid "Remote control test - press and hold down any key"
 msgstr "Test zdalnego sterowania - nacisnij i przytrzymaj dowolny klawisz"
 
-#: remote.c:366
 msgid "RC5 protocol detected"
 msgstr "Wykryto protokol RC5"
 
-#: remote.c:390
 msgid "RC5 protocol detected (inverted signal)"
 msgstr "Wykryto protokol RC5 (sygnal odwrocony)"
 
-#: remote.c:401
 msgid "RCMM protocol detected"
 msgstr "Wykryto protokol RCMM"
 
-#: remote.c:412
 msgid "RCMM protocol detected (inverted signal)"
 msgstr "Wykryto protokol RCMM (sygnal odwrocony)"
 
-#: remote.c:420
 msgid "No remote control detected"
 msgstr "Nie znaleziono zdalnego sterowania"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/po/ru_RU.po new/remote-0.7.0/po/ru_RU.po
--- old/remote-0.5.0/po/ru_RU.po        2012-12-26 04:12:47.000000000 +0100
+++ new/remote-0.7.0/po/ru_RU.po        2015-09-20 18:32:02.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Remote Control plugin 0.4.0\n"
 "Report-Msgid-Bugs-To: <[email protected]>\n"
-"POT-Creation-Date: 2012-05-27 17:56+0200\n"
+"POT-Creation-Date: 2015-09-15 18:54+0200\n"
 "PO-Revision-Date: 2007-10-05 06:58+0200\n"
 "Last-Translator: Waldemar Nikel, 2006\n"
 "Language-Team: <[email protected]>\n"
@@ -16,47 +16,36 @@
 "Content-Type: text/plain; charset=ISO-8859-5\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: remote.c:52
 msgid "Remote control"
 msgstr "����� ����������"
 
-#: remote.c:233 remote.c:777
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: remote.c:255
 msgid "Error uploading keymap"
 msgstr "������ ��� �������� ���������"
 
-#: remote.c:336
 msgid "Press any key to use pre-loaded keymap"
 msgstr "������� ����� ������ ��� ������������� ����� ���������� ���������"
 
-#: remote.c:341
 msgid "User-supplied keymap will be used"
 msgstr "����� �������������� ��������� ������������"
 
-#: remote.c:347
 msgid "Remote control test - press and hold down any key"
 msgstr "�������� ������ - ������� � �������� ����� ������"
 
-#: remote.c:366
 msgid "RC5 protocol detected"
 msgstr "������� �������� RC5"
 
-#: remote.c:390
 msgid "RC5 protocol detected (inverted signal)"
 msgstr "������� �������� RC5 (� ��������������� �������)"
 
-#: remote.c:401
 msgid "RCMM protocol detected"
 msgstr "������� �������� RCMM"
 
-#: remote.c:412
 msgid "RCMM protocol detected (inverted signal)"
 msgstr "������� �������� RCMM (� ��������������� �������)"
 
-#: remote.c:420
 msgid "No remote control detected"
 msgstr "����� ���������� �� �������"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/remote.c new/remote-0.7.0/remote.c
--- old/remote-0.5.0/remote.c   2012-12-26 02:50:33.000000000 +0100
+++ new/remote-0.7.0/remote.c   2015-09-20 01:45:12.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * remote.c: main source file
  *
- * Copyright (C) 2002-2012 Oliver Endriss <[email protected]>
+ * Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -48,7 +48,7 @@
 #define AV7110_PARM_INVERSION     
"/sys/module/dvb_ttpci/parameters/ir_inversion"
 #endif
 
-static const char *VERSION        = "0.5.0";
+static const char *VERSION        = "0.7.0";
 static const char *DESCRIPTION    = trNOOP("Remote control");
 
 
@@ -137,6 +137,10 @@
                 Put(code);
                 DSYSLOG("%s: press %016llx\n", device, code);
                 lastcode = code;
+#if APIVERSNUM >= 10741
+                repeatdelay = Setup.RcRepeatDelay;
+                repeatfreq = Setup.RcRepeatDelta;
+#endif
 #if VDRVERSNUM <= 10317
                 last = first = now;
 #else
@@ -443,11 +447,11 @@
 
     do
         n = read(fh, &ev, sizeof ev);
-    while (n == sizeof ev && ev.type != 1);
+    while (n == sizeof ev && ev.type != 1 && ev.type != 2);
 
     if (n == sizeof ev)
     {
-        if (ev.value)
+        if (ev.value && ev.type == 1)
             ev.value = 1;
         code = ((uint64_t)ev.value << 32) | ((uint64_t)ev.type << 16) | 
(uint64_t)ev.code;
     }
@@ -509,6 +513,7 @@
 // ---------------------------------------------------------------------------
 {
     struct termios t;
+    memset(&tm, 0, sizeof tm);
 
     if (!tcgetattr(f, &tm))
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/remotetcp.c new/remote-0.7.0/remotetcp.c
--- old/remote-0.5.0/remotetcp.c        2012-12-26 02:50:40.000000000 +0100
+++ new/remote-0.7.0/remotetcp.c        2015-09-20 03:57:27.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * remotetcp.c: tcp/telnet remote control
  *
- * Copyright (C) 2002-2012 Oliver Endriss <[email protected]>
+ * Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -46,10 +46,16 @@
     }
 
     if (fh != -1)
+    {
         close(fh);
+        fh = -1;
+    }
 
     if (csock)
+    {
         delete csock;
+        csock = NULL;
+    }
 }                
 
 
@@ -59,7 +65,7 @@
     {
         int port;
         sscanf (device, "tcp:%d", &port);
-        csock = new cSocket(port);
+        csock = new cSocketRemote(port);
         if (! csock)
         {
             esyslog("error creating socket");
@@ -77,6 +83,9 @@
     while (fh < 0)
     {
         usleep(100000);
+        if (csock == NULL)
+               return INVALID_KEY;
+
         fh = csock->Accept();
         if (fh >= 0)
         {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/remotetcp.h new/remote-0.7.0/remotetcp.h
--- old/remote-0.5.0/remotetcp.h        2012-12-26 02:49:51.000000000 +0100
+++ new/remote-0.7.0/remotetcp.h        2015-09-20 03:57:56.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * remotetcp.h: tcp/telnet remote control
  *
- * Copyright (C) 2002-2012 Oliver Endriss <[email protected]>
+ * Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -26,7 +26,7 @@
 #define __PLUGIN_REMOTETCP_H
 
 
-#include <vdr/svdrp.h>
+#include "compat.h"
 #include "remote.h"
 
 
@@ -36,7 +36,7 @@
 {
 private:
   cTtyStatus *cstatus;
-  cSocket *csock;
+  cSocketRemote *csock;
 
 protected:
   virtual uint64_t getKey(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/ttystatus.c new/remote-0.7.0/ttystatus.c
--- old/remote-0.5.0/ttystatus.c        2012-12-26 02:50:48.000000000 +0100
+++ new/remote-0.7.0/ttystatus.c        2015-04-11 13:56:39.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * ttystatus.c: tty osd emulation
  *
- * Copyright (C) 2002-2012 Oliver Endriss <[email protected]>
+ * Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -24,72 +24,97 @@
 
 #include <vdr/plugin.h>
 #include <vdr/status.h>
+#include <wchar.h>
 #include "ttystatus.h"
 
 
-void cTtyStatus::display(const char *buf)
+void cTtyStatus::dprintf(const char *Text)
 {
-    int n = strlen(buf);
-    int tabs = 0;
-    int tabstop = 30;
-    int pos = 0;
+    char *text = strdup(Text);
 
-    for (int i = 0; i < n; i++)
+    if (text)
     {
-        if (buf[i] == '\t')
-            tabs++;
+        for (int i = 0; i < (int)strlen(text); i++)
+        {
+            switch(text[i])
+            {
+                case '\t':
+                    text[i] = '|';
+                    break;
+            }
+        }
+        printf("%s: '%s'\n", __func__, text);
+        free(text);
     }
+}
 
-    if (tabs == 1)
-        tabstop = 40;
-    else if (tabs == 2)
-        tabstop = 10;
-    else if (tabs == 3)
-        tabstop = 8;
-    else
-        tabstop = 4;
-  
-    for (int i = 0; i < n && pos < 80; i++)
+
+void cTtyStatus::display(const char *buf, const bool fillEOL, const int limit)
+{
+    int n = strlen(buf);
+    int pos = 0;
+    int t = 0;
+    mbstate_t ps;
+    static const char blanks[] = "                    ";
+
+    memset(&ps, 0, sizeof ps);
+
+    for (int i = 0; i < n && pos < limit; )
     {
         switch (buf[i])
         {
             case '\t':
                 do 
                 {
-                    write(fd, " ", 1);
+                    write(fd, blanks, 1);
                     pos++;
                 }
-                while (pos % tabstop != 0);
+                while (t < numTabs && pos <= tabPos[t] + t+1);
+                if (t < numTabs)
+                    t++;
+                i++;
                 break;
 
             case '\n':
                 write(fd, "\r\n", 2);
+                i++;
                 break;
 
             default:
-                write(fd, buf+i, 1);
+#if 1
+                // first calculate number of bytes, then perform a single 
'write'
+                const char *p = buf+i;
+                int l = 0;
+                while (*p != '\t' && *p != '\n' && pos < limit)
+                {
+                    int l2 = mbrlen(p, MB_CUR_MAX, &ps);
+                    if (l2 == 0)
+                        break;
+                    if (l2 < 0)
+                        l2 = 1;
+                    p += l2;
+                    l += l2;
+                    pos++;
+                }
+#else
+                // simple but suboptimal: one 'write' for each character
+                int l = mbrlen(buf+i, MB_CUR_MAX, &ps);
+                if (l < 0)
+                    l = 1;
                 pos++;
+#endif
+                write(fd, buf+i, l);
+                i += l;
                 break;
         }
     }
-}
-
 
-void cTtyStatus::display2(const char *buf)
-{
-    for (size_t i = 0; i < strlen(buf); i++)
+    while (fillEOL && pos < limit)
     {
-        switch(buf[i])
-        {
-            case '\n':
-                write(fd, "\r\n", 2);
-                break;
-
-            default:
-                write(fd, buf+i, 1);
-                break;
-        }
-    } 
+        n = min(limit-pos, (int)sizeof(blanks)-1);
+        write(fd, blanks, n);
+        pos += n;
+    }
 }
 
 
@@ -98,35 +123,35 @@
     switch(col)
     {
         case WHITE_BLACK:
-            print("\e[1m\e[37m\e[40m");
+            display("\e[1m\e[37m\e[40m");
            break;
 
         case YELLOW_BLACK:
-            print("\e[1m\e[33m\e[40m");
+            display("\e[1m\e[33m\e[40m");
            break;
 
         case CYAN_BLACK:
-            print("\e[1m\e[36m\e[40m");
+            display("\e[1m\e[36m\e[40m");
            break;
 
         case BLACK_CYAN:
-            print("\e[0m\e[30m\e[46m");
+            display("\e[0m\e[30m\e[46m");
            break;
 
         case BLACK_RED:
-            print("\e[0m\e[30m\e[41m");
+            display("\e[0m\e[30m\e[41m");
            break;
 
         case BLACK_GREEN:
-            print("\e[0m\e[30m\e[42m");
+            display("\e[0m\e[30m\e[42m");
             break;
 
         case BLACK_YELLOW:
-            print("\e[0m\e[30m\e[43m");
+            display("\e[0m\e[30m\e[43m");
             break;
 
         case WHITE_BLUE:
-            print("\e[1m\e[37m\e[44m");
+            display("\e[1m\e[37m\e[44m");
             break;
     }
 }                
@@ -220,7 +245,8 @@
     clear_screen();
     set_color(BLACK_CYAN);
     set_pos(0, 0);
-    print("     %-80s", Title);
+    display("", true, 5);
+    display(Title, true, 75);
     set_color(WHITE_BLACK);
     refresh();
     set_pos(2, 0);
@@ -233,12 +259,13 @@
     if (Message)
     {
         set_color(BLACK_YELLOW);
-        print("     %-80s", Message);
+        display("", true, 5);
+        display(Message, true, 75);
     }
     else
     {
         set_color(WHITE_BLACK);
-        print("%-80s", "");
+        display("", true);
     }
     refresh();
     set_pos(2, 0);
@@ -249,20 +276,24 @@
                              const char *Yellow, const char *Blue)
 {
     set_color(Red ? BLACK_RED : WHITE_BLACK);
-    set_pos(24,0);
-    print("     %-15s", Red ? Red : "");
+    set_pos(24, 0);
+    display("", true, 5);
+    display(Red ? Red : "", true, 15);
 
     set_color(Green ? BLACK_GREEN: WHITE_BLACK);
-    set_pos(24,20);
-    print("     %-15s", Green ? Green : "");
+    set_pos(24, 20);
+    display("", true, 5);
+    display(Green ? Green : "", true, 15);
 
     set_color(Yellow ? BLACK_YELLOW : WHITE_BLACK);
-    set_pos(24,40);
-    print("     %-15s", Yellow ? Yellow : "");
+    set_pos(24, 40);
+    display("", true, 5);
+    display(Yellow ? Yellow : "", true, 15);
 
     set_color(Blue ? WHITE_BLUE : WHITE_BLACK);
-    set_pos(24,60);
-    print("     %-15s", Blue ? Blue : "");
+    set_pos(24, 60);
+    display("", true, 5);
+    display(Blue ? Blue : "", true, 15);
 
     refresh();
     set_pos(2, 0);
@@ -331,13 +362,35 @@
         first = max(first,0);
         last = min(first+20,lastIndex);
 
+        // Update tab positions in window
+        memset(tabPos, 0, sizeof tabPos);
+        numTabs = 0;
+        for (i = first; i <= last; i++)
+        {
+            int n = strlen(lineBuf[i]);
+            int t = 0;
+            for (int j = 0; j < n; j++)
+            {
+                if (lineBuf[i][j] == '\t' && t < maxTabs)
+                {
+                    tabPos[t] = max(tabPos[t], j);
+                    t++;
+                }
+            }
+            numTabs = max(numTabs, t);
+        }
+#if 0
+       for (i = 0; i < numTabs; i++)
+           printf("tab %d at position %d\n", i, tabPos[i]);
+#endif
+
         set_color(WHITE_BLACK);
         for (i = first; i <= last; i++)
         {
             if (i == currIndex)
                 set_color(BLACK_CYAN);
             set_pos(2+i-first, 0);
-            print("%-80s", lineBuf[i]);
+            display(lineBuf[i], true);
             if (i == currIndex)
                 set_color(WHITE_BLACK);
         }
@@ -346,6 +399,10 @@
     }
 }
 
+
+//
+// Note: Used for event decription, recording info etc.
+//
 void cTtyStatus::OsdTextItem(const char *Text, bool Scroll)
 {
     // dsyslog("%s: '%s' scroll %d", __FUNCTION__, Text, Scroll);
@@ -353,8 +410,8 @@
     if (Text)
     {
         set_color(CYAN_BLACK);
-        display2(Text);
-        display2("\n\n");
+        display(Text, false, 0x7fff);
+        display("\n\n");
         refresh();
     }
     else
@@ -369,7 +426,7 @@
     clear_screen();
     set_color(WHITE_BLACK);
     set_pos(19, 0);
-    print("%-80s", Text);
+    display(Text);
     refresh();
 }
 
@@ -387,16 +444,16 @@
     {
         set_color(YELLOW_BLACK);
         set_pos(line++, 0);
-        print("%5s ", buffer);
+        display(buffer, true, 6);
         set_color(CYAN_BLACK);
-        print("%s", PresentTitle);
+        display(PresentTitle);
     }
     if (PresentSubtitle)
     {
         if (strlen(PresentSubtitle))
         {
-            set_pos(line++, 0);
-            print("%5s %s", "", PresentSubtitle);
+            set_pos(line++, 6);
+            display(PresentSubtitle);
         }
     }
 
@@ -405,14 +462,14 @@
     {
         set_color(YELLOW_BLACK);
         set_pos(line++, 0);
-        print("%5s ", buffer);
+        display(buffer, true, 6);
         set_color(CYAN_BLACK);
-        print("%s", FollowingTitle);
+        display(FollowingTitle);
     }
     if (FollowingSubtitle)
     {
-        set_pos(line++, 0);
-        print("%5s %s", "", FollowingSubtitle);
+        set_pos(line++, 6);
+        display(FollowingSubtitle);
     }
 
     refresh();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/remote-0.5.0/ttystatus.h new/remote-0.7.0/ttystatus.h
--- old/remote-0.5.0/ttystatus.h        2012-12-26 02:49:59.000000000 +0100
+++ new/remote-0.7.0/ttystatus.h        2015-04-11 02:45:08.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * ttystatus.h: tty osd emulation
  *
- * Copyright (C) 2002-2012 Oliver Endriss <[email protected]>
+ * Copyright (C) 2002-2015 Oliver Endriss <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -39,10 +39,10 @@
 #include <vdr/status.h>
 
 
-#define clear_screen()   { set_color(WHITE_BLACK); print("\e[2J"); }
+#define clear_screen()   { set_color(WHITE_BLACK); display("\e[2J"); }
 #define refresh()        
 #define set_pos(y,x)     print("\e[%d;%dH", y+1, x+1);
-#define print(fmt...)    { char buf[100]; snprintf(buf,100, fmt); 
display(buf); }
+#define print(fmt...)    { char buf[140]; snprintf(buf,sizeof buf,fmt); 
display(buf); }
   
 
 /****************************************************************************/
@@ -54,11 +54,13 @@
   int numEntries;
   int lastIndex;
   int currIndex;
-  int tabstop;
+  static const int maxTabs = 10;
+  int numTabs;
+  int tabPos[maxTabs];
 
 protected:
-  virtual void display(const char *buf);
-  virtual void display2(const char *buf);
+  void dprintf(const char *Text);
+  virtual void display(const char *buf, const bool fillEOL = false, const int 
limit = 80);
   virtual void set_color(int col);
 #if VDRVERSNUM <= 10337
   virtual void Replaying(const cControl *Control, const char *Name);


Reply via email to