summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS27
-rw-r--r--HISTORY31
-rw-r--r--Makefile24
-rw-r--r--PLUGINS/src/hello/Makefile22
-rw-r--r--PLUGINS/src/skincurses/Makefile22
-rw-r--r--config.h10
-rw-r--r--device.c26
-rw-r--r--device.h4
-rw-r--r--dvbsubtitle.c17
-rw-r--r--font.c26
-rwxr-xr-xi18n-to-gettext.pl24
-rw-r--r--i18n.c3
-rw-r--r--menu.c9
-rw-r--r--menuitems.c8
-rw-r--r--menuitems.h4
-rwxr-xr-xnewplugin22
-rw-r--r--osdbase.h10
-rw-r--r--po/ca_ES.po6
-rw-r--r--po/cs_CZ.po8
-rw-r--r--po/da_DK.po8
-rw-r--r--po/de_DE.po8
-rw-r--r--po/el_GR.po6
-rw-r--r--po/es_ES.po8
-rw-r--r--po/et_EE.po78
-rw-r--r--po/fi_FI.po8
-rw-r--r--po/fr_FR.po39
-rw-r--r--po/hr_HR.po6
-rw-r--r--po/hu_HU.po8
-rw-r--r--po/it_IT.po38
-rw-r--r--po/nl_NL.po6
-rw-r--r--po/nn_NO.po4
-rw-r--r--po/pl_PL.po8
-rw-r--r--po/pt_PT.po4
-rw-r--r--po/ro_RO.po8
-rw-r--r--po/ru_RU.po8
-rw-r--r--po/sl_SI.po8
-rw-r--r--po/sv_SE.po8
-rw-r--r--po/tr_TR.po8
-rw-r--r--po/uk_UA.po999
-rw-r--r--recording.c11
-rw-r--r--remux.c7
-rw-r--r--shutdown.c13
-rw-r--r--thread.c4
-rw-r--r--tools.c4
-rw-r--r--vdr.c13
45 files changed, 1355 insertions, 268 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 34b4803..e49400a 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -222,6 +222,7 @@ Stefan Huelswitt <huels@iname.com>
for reporting a double fdopen() in cPipe::Open()
for suggesting to increase the APIVERSION to allow plugins that relied on the
cStatus::MsgSetVolume() bug to react properly
+ for improving the 'i18n' target in the Makefile to avoid unnecessary work
Ulrich Rіder <roeder@efr-net.de>
for pointing out that there are channels that have a symbol rate higher than 27500
@@ -587,6 +588,8 @@ Helmut Auer <vdr@helmutauer.de>
is a recording going on or about to start, and the user insists in shutting down now
for suggesting to make the channel entry timeout configurable
for a patch that was used to implement the SVDRP command REMO
+ for reporting a possible crash in decoding filename characters in case there are
+ not two hex digits after the '#'
Jeremy Hall <jhall@UU.NET>
for fixing an incomplete initialization of the filter parameters in eit.c
@@ -743,6 +746,7 @@ Georg Hitsch <georg@hitsch.at>
Clemens Kirchgatterer <clemens@thf.ath.cx>
for suggesting to change source directory name for plugins from 'SRC' to 'src'
for reporting a problem with user defined CFLAGS in libdtv/libvdr/Makefile
+ for suggesting an error log message if no fonts are found
Emil Naepflein <Emil.Naepflein@philosys.de>
for suggesting to take an active SVDRP connection into account when doing shutdown or
@@ -889,6 +893,7 @@ Ludwig Nussel <ludwig.nussel@web.de>
for a patch that was used for implementing setting the user id
for pointing out that the canonical spelling of codesets is with '-'
for a hint on using _nl_msg_cat_cntr
+ for adding some missing 'const' keywords
Thomas Koch <tom@harhar.net>
for his support in keeping the Premiere World channels up to date in 'channels.conf'
@@ -1028,6 +1033,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
the subtitles plugin
for implementing cDevice::CloseFilter()
for some fixes to PLUGINS.html
+ for fixing handling CONFDIR
Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark
@@ -1430,6 +1436,7 @@ Marco Schlќпler <marco@lordzodiac.de>
for implementing handling DVB subtitles
for fixing the description of DeviceSetAvailableTrack() and cReceiver(), and adding
an example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlќпler).
+ for fixing checking compatibility mode for old subtitles plugin
Jќrgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP
@@ -1535,6 +1542,8 @@ Udo Richter <udo_richter@gmx.de>
for adding a missing error report to cCuttingThread::Action()
for reporting a problem in handling reallocated memory in cCharSetConv::Convert()
for fixing a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode()
+ for improving shutdown handling
+ for making housekeeping wait for a while after a replay has ended
Sven Kreiensen <svenk@kammer.uni-hannover.de>
for his help in keeping 'channels.conf.terr' up to date
@@ -1709,6 +1718,8 @@ Ville Skyttф <ville.skytta@iki.fi>
for suggesting to add the "...or (at your option) any later version" phrase to the
license information of all plugins, and also the 'newplugin' script
for fixing the link to the GPL2 at http://www.gnu.org in vdr.c
+ for making the "Play" key start replay of the selected recording in the Recordings
+ menu
Steffen Beyer <cpunk@reactor.de>
for fixing setting the colored button help after deleting a recording in case the next
@@ -1788,6 +1799,10 @@ Thomas Gќnther <tom1@toms-cafe.de>
for removing a duplicate ',' from the ca_ES.po file
for suggesting to add the 'п' character to the "allowed characters" in the
de_DE.po file
+ for adding more special characters to the list of allowed characters when entering
+ strings
+ for suggesting to make the 'Allowed' parameter in cMenuEditStrItem() NULL by default,
+ which results in using tr(FileNameChars)
David Woodhouse <dwmw2@infradead.org>
for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with
@@ -2210,3 +2225,15 @@ Elias Luttinen <el@iki.fi>
Torsten Kunkel <vdrml@tkunkel.de>
for pointing out that it was not obvious how to initiate internationalization
support for a plugin
+
+Michael Nival <mnival@club-internet.fr>
+ for translating OSD texts to the French language
+
+Yarema Aka Knedlyk <yupadmin@gmail.com>
+ for translating OSD texts to the Ukrainian language
+
+Lauri Nurmi <lanurmi@iki.fi>
+ for adding a missing '.' to the date returned by DayDateTime()
+
+Mario Ivankovits <mario@ops.co.at>
+ for fixing a crash if no fonts are found
diff --git a/HISTORY b/HISTORY
index 91d32fb..6984bbd 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5487,3 +5487,34 @@ Video Disk Recorder Revision History
- Added cDevice::CloseFilter() to allow a device to have complete control over
both opening and closing section filters (thanks to Rolf Ahrenberg).
- Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
+
+2007-11-04: Version 1.5.11
+
+- Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
+ Schlќпler).
+- Updated the French OSD texts (thanks to Michael Nival).
+- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
+- Updated the Italian OSD texts (thanks to Diego Pierotto).
+- The "Play" key now starts replay of the selected recording in the Recordings
+ menu (thanks to Ville Skyttф);
+- Improved shutdown handling (thanks to Udo Richter).
+- Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
+- Added more special characters to the list of allowed characters when entering
+ strings (thanks to Thomas Gќnther).
+- Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
+- Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
+- Fixed a possible blocking in replay when subtitles are active.
+- Fixed displaying subtitles in live mode.
+- Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
+- Added some missing 'const' keywords (thanks to Sascha Volkenandt).
+- The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
+ in using tr(FileNameChars) (suggested by Thomas Gќnther).
+- Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
+- Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
+ Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
+ changed accordingly. Plugin authors may want to adjust the 'i18n' target
+ of their Makefiles.
+- Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
+ Kirchgatterer).
+- Fixed decoding filename characters in case there are not two hex digits after
+ the '#' (reported by Helmut Auer).
diff --git a/Makefile b/Makefile
index aea6995..f32773c 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: Makefile 1.108 2007/10/13 09:26:40 kls Exp $
+# $Id: Makefile 1.110 2007/11/04 10:15:59 kls Exp $
.DELETE_ON_ERROR:
@@ -27,7 +27,7 @@ PLUGINDIR= ./PLUGINS
PLUGINLIBDIR= $(PLUGINDIR)/lib
VIDEODIR = /video
-CONFDIR ?= $(VIDEODIR)
+CONFDIR = $(VIDEODIR)
DOXYGEN = /usr/bin/doxygen
DOXYFILE = Doxyfile
@@ -106,25 +106,25 @@ $(SILIB):
PODIR = po
LOCALEDIR = locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr.mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/vdr.pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr.mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr.mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
install-i18n:
@mkdir -p $(DESTDIR)$(LOCDIR)
diff --git a/PLUGINS/src/hello/Makefile b/PLUGINS/src/hello/Makefile
index 92e8af4..185b527 100644
--- a/PLUGINS/src/hello/Makefile
+++ b/PLUGINS/src/hello/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.20 2007/10/14 09:23:04 kls Exp $
+# $Id: Makefile 1.21 2007/11/04 10:52:15 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -72,25 +72,25 @@ $(DEPFILE): Makefile
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
### Targets:
diff --git a/PLUGINS/src/skincurses/Makefile b/PLUGINS/src/skincurses/Makefile
index 3eea4dd..17f8540 100644
--- a/PLUGINS/src/skincurses/Makefile
+++ b/PLUGINS/src/skincurses/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.13 2007/10/14 09:23:25 kls Exp $
+# $Id: Makefile 1.14 2007/11/04 10:52:13 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -70,25 +70,25 @@ $(DEPFILE): Makefile
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
### Targets:
diff --git a/config.h b/config.h
index e51637f..02f1b53 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.299 2007/10/06 14:27:18 kls Exp $
+ * $Id: config.h 1.300 2007/10/17 18:34:17 kls Exp $
*/
#ifndef __CONFIG_H
@@ -22,13 +22,13 @@
// VDR's own version number:
-#define VDRVERSION "1.5.10"
-#define VDRVERSNUM 10510 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.5.11"
+#define VDRVERSNUM 10511 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number:
-#define APIVERSION "1.5.10"
-#define APIVERSNUM 10510 // Version * 10000 + Major * 100 + Minor
+#define APIVERSION "1.5.11"
+#define APIVERSNUM 10511 // Version * 10000 + Major * 100 + Minor
// When loading plugins, VDR searches them by their APIVERSION, which
// may be smaller than VDRVERSION in case there have been no changes to
diff --git a/device.c b/device.c
index 73decab..b8e5a8f 100644
--- a/device.c
+++ b/device.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.c 1.145 2007/10/14 13:09:19 kls Exp $
+ * $Id: device.c 1.147 2007/11/03 13:30:09 kls Exp $
*/
#include "device.h"
@@ -209,6 +209,9 @@ int cPesAssembler::PacketSize(const uchar *data)
// The default priority for non-primary devices:
#define DEFAULTPRIORITY -1
+// The minimum number of unknown PS1 packets to consider this a "pre 1.3.19 private stream":
+#define MIN_PRE_1_3_19_PRIVATESTREAM 10
+
int cDevice::numDevices = 0;
int cDevice::useDevice = 0;
int cDevice::nextCardIndex = 0;
@@ -931,7 +934,7 @@ void cDevice::ClrAvailableTracks(bool DescriptionsOnly, bool IdsOnly)
}
else
memset(availableTracks, 0, sizeof(availableTracks));
- pre_1_3_19_PrivateStream = false;
+ pre_1_3_19_PrivateStream = 0;
SetAudioChannel(0); // fall back to stereo
currentAudioTrackMissingCount = 0;
currentAudioTrack = ttNone;
@@ -1236,7 +1239,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
int PayloadOffset = Data[8] + 9;
// Compatibility mode for old subtitles plugin:
- if ((Data[PayloadOffset - 3] & 0x81) == 1 && Data[PayloadOffset - 2] == 0x81)
+ if ((Data[7] & 0x01) && (Data[PayloadOffset - 3] & 0x81) == 0x01 && Data[PayloadOffset - 2] == 0x81)
PayloadOffset--;
uchar SubStreamId = Data[PayloadOffset];
@@ -1245,11 +1248,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
pre_1_3_19_PrivateStreamDeteced:
- if (pre_1_3_19_PrivateStream) {
+ if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
SubStreamId = c;
SubStreamType = 0x80;
SubStreamIndex = 0;
}
+ else if (pre_1_3_19_PrivateStream)
+ pre_1_3_19_PrivateStream--; // every known PS1 packet counts down towards 0 to recover from glitches...
switch (SubStreamType) {
case 0x20: // SPU
case 0x30: // SPU
@@ -1277,11 +1282,14 @@ pre_1_3_19_PrivateStreamDeteced:
break;
default:
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
- if (!pre_1_3_19_PrivateStream) {
- dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode");
- ClrAvailableTracks();
- pre_1_3_19_PrivateStream = true;
- goto pre_1_3_19_PrivateStreamDeteced;
+ if (pre_1_3_19_PrivateStream <= MIN_PRE_1_3_19_PRIVATESTREAM) {
+ dsyslog("unknown PS1 packet, substream id = %02X (counter is at %d)", SubStreamId, pre_1_3_19_PrivateStream);
+ pre_1_3_19_PrivateStream += 2; // ...and every unknown PS1 packet counts up (the very first one counts twice, but that's ok)
+ if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
+ dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
+ ClrAvailableTracks();
+ goto pre_1_3_19_PrivateStreamDeteced;
+ }
}
}
}
diff --git a/device.h b/device.h
index 825aadf..9bd823e 100644
--- a/device.h
+++ b/device.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.h 1.85 2007/10/14 13:09:12 kls Exp $
+ * $Id: device.h 1.86 2007/10/21 09:21:52 kls Exp $
*/
#ifndef __DEVICE_H
@@ -377,7 +377,7 @@ private:
cMutex mutexCurrentSubtitleTrack;
int currentAudioTrackMissingCount;
bool autoSelectPreferredSubtitleLanguage;
- bool pre_1_3_19_PrivateStream;
+ int pre_1_3_19_PrivateStream;
protected:
virtual void SetAudioTrackDevice(eTrackType Type);
///< Sets the current audio track to the given value.
diff --git a/dvbsubtitle.c b/dvbsubtitle.c
index 1f7e6b7..e845594 100644
--- a/dvbsubtitle.c
+++ b/dvbsubtitle.c
@@ -7,7 +7,7 @@
* Original author: Marco Schlќпler <marco@lordzodiac.de>
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
*
- * $Id: dvbsubtitle.c 1.1 2007/10/14 14:02:35 kls Exp $
+ * $Id: dvbsubtitle.c 1.2 2007/11/03 14:36:07 kls Exp $
*/
#include "dvbsubtitle.h"
@@ -692,7 +692,7 @@ int cDvbSubtitleConverter::Convert(const uchar *Data, int Length)
bool ResetSubtitleAssembler = Data[PayloadOffset + 3] == 0x00;
// Compatibility mode for old subtitles plugin:
- if ((Data[PayloadOffset - 3] & 0x81) == 1 && Data[PayloadOffset - 2] == 0x81) {
+ if ((Data[7] & 0x01) && (Data[PayloadOffset - 3] & 0x81) == 0x01 && Data[PayloadOffset - 2] == 0x81) {
PayloadOffset--;
SubstreamHeaderLength = 1;
ResetSubtitleAssembler = Data[8] >= 5;
@@ -730,8 +730,8 @@ int cDvbSubtitleConverter::Convert(const uchar *Data, int Length)
break;
}
}
- return Length;
}
+ return Length;
}
return 0;
}
@@ -767,7 +767,7 @@ void cDvbSubtitleConverter::Action(void)
//TODO sync on PTS? are there actually devices that don't deliver an STC?
}
Delta /= 90; // STC and PTS are in 1/90000s
- if (abs(Delta) <= MAXDELTA) {
+ if (Delta <= MAXDELTA) {
if (Delta <= 0) {
dbgconverter("Got %d bitmaps, showing #%d\n", bitmaps->Count(), sb->Index() + 1);
if (AssertOsd()) {
@@ -777,8 +777,8 @@ void cDvbSubtitleConverter::Action(void)
}
bitmaps->Del(sb);
}
- else
- WaitMs = min(max(Delta, int64_t(0)), int64_t(1000));
+ else if (Delta < WaitMs)
+ WaitMs = Delta;
}
else
bitmaps->Del(sb);
@@ -830,6 +830,8 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
pages->Add(page);
dbgpages("Create SubtitlePage %d (total pages = %d)\n", pageId, pages->Count());
}
+ if (Pts)
+ page->SetPts(Pts);
switch (segmentType) {
case PAGE_COMPOSITION_SEGMENT: {
dbgsegments("PAGE_COMPOSITION_SEGMENT\n");
@@ -837,8 +839,6 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
if (pageVersion == page->Version())
break; // no update
page->SetVersion(pageVersion);
- if (Pts)
- page->SetPts(Pts);
page->SetTimeout(Data[6]);
page->SetState((Data[6 + 1] & 0x0C) >> 2);
page->regions.Clear();
@@ -968,6 +968,7 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
dbgsegments("END_OF_DISPLAY_SET_SEGMENT\n");
FinishPage(page);
}
+ break;
default:
dbgsegments("*** unknown segment type: %02X\n", segmentType);
}
diff --git a/font.c b/font.c
index 19753bf..73b77fb 100644
--- a/font.c
+++ b/font.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: font.c 1.21 2007/06/23 11:25:42 kls Exp $
+ * $Id: font.c 1.22 2007/11/04 11:08:12 kls Exp $
*/
#include "font.h"
@@ -395,17 +395,21 @@ cString cFont::GetFontFileName(const char *FontName)
FcConfigSubstitute(NULL, pat, FcMatchPattern);
FcDefaultSubstitute(pat);
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, NULL);
- for (int i = 0; i < fontset->nfont; i++) {
- FcBool scalable;
- FcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable);
- if (scalable) {
- FcChar8 *s = NULL;
- FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &s);
- FontFileName = (char *)s;
- break;
+ if (fontset) {
+ for (int i = 0; i < fontset->nfont; i++) {
+ FcBool scalable;
+ FcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable);
+ if (scalable) {
+ FcChar8 *s = NULL;
+ FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &s);
+ FontFileName = (char *)s;
+ break;
+ }
}
- }
- FcFontSetDestroy(fontset);
+ FcFontSetDestroy(fontset);
+ }
+ else
+ esyslog("ERROR: no usable font found for '%s'", FontName);
FcPatternDestroy(pat);
free(fn);
FcFini();
diff --git a/i18n-to-gettext.pl b/i18n-to-gettext.pl
index 1be38fa..309a472 100755
--- a/i18n-to-gettext.pl
+++ b/i18n-to-gettext.pl
@@ -10,7 +10,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: i18n-to-gettext.pl 1.5 2007/10/14 14:14:22 kls Exp $
+# $Id: i18n-to-gettext.pl 1.6 2007/11/04 10:57:36 kls Exp $
# How to convert an actual plugin:
#
@@ -306,25 +306,25 @@ $MAKEI18N = q{### Internationalization (I18N):
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='<} . $MSGIDBUGS . q{>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<} . $MSGIDBUGS . q{>' -o $@ $^
-$(I18Npo): $(I18Npot)
- msgmerge -U --no-wrap -F --backup=none -q $@ $<
+%.po: $(I18Npot)
+ msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
};
diff --git a/i18n.c b/i18n.c
index da699d9..a018f23 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.317 2007/08/24 14:03:47 kls Exp $
+ * $Id: i18n.c 1.318 2007/11/01 10:38:27 kls Exp $
*
*
*/
@@ -59,6 +59,7 @@ const char *LanguageCodeList[] = {
"dan",
"cze,ces",
"tur",
+ "ukr",
NULL
};
diff --git a/menu.c b/menu.c
index 853d1e7..7b8ce9a 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 1.463 2007/10/13 10:10:20 kls Exp $
+ * $Id: menu.c 1.465 2007/11/03 15:02:00 kls Exp $
*/
#include "menu.h"
@@ -251,7 +251,7 @@ void cMenuEditChannel::Setup(void)
// Parameters for all types of sources:
strn0cpy(name, data.name, sizeof(name));
- Add(new cMenuEditStrItem( tr("Name"), name, sizeof(name), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("Name"), name, sizeof(name)));
Add(new cMenuEditSrcItem( tr("Source"), &data.source));
Add(new cMenuEditIntItem( tr("Frequency"), &data.frequency));
Add(new cMenuEditIntItem( tr("Vpid"), &data.vpid, 0, 0x1FFF));
@@ -671,7 +671,7 @@ cMenuEditTimer::cMenuEditTimer(cTimer *Timer, bool New)
Add(new cMenuEditBitItem( tr("VPS"), &data.flags, tfVps));
Add(new cMenuEditIntItem( tr("Priority"), &data.priority, 0, MAXPRIORITY));
Add(new cMenuEditIntItem( tr("Lifetime"), &data.lifetime, 0, MAXLIFETIME));
- Add(new cMenuEditStrItem( tr("File"), data.file, sizeof(data.file), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("File"), data.file, sizeof(data.file)));
SetFirstDayItem();
}
Timers.IncBeingEdited();
@@ -2107,6 +2107,7 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
if (state == osUnknown) {
switch (Key) {
+ case kPlay:
case kOk: return Play();
case kRed: return (helpKeys > 1 && RecordingCommands.Count()) ? Commands() : Play();
case kGreen: return Rewind();
@@ -2712,7 +2713,7 @@ cMenuSetupRecord::cMenuSetupRecord(void)
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use VPS"), &data.UseVps));
Add(new cMenuEditIntItem( tr("Setup.Recording$VPS margin (s)"), &data.VpsMargin, 0));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"), &data.MarkInstantRecord));
- Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord)));
Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
Add(new cMenuEditIntItem( tr("Setup.Recording$Max. video file size (MB)"), &data.MaxVideoFileSize, MINVIDEOFILESIZE, MAXVIDEOFILESIZE));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Split edited files"), &data.SplitEditedFiles));
diff --git a/menuitems.c b/menuitems.c
index 732aea2..a7ceef2 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.c 1.53 2007/10/13 12:05:37 kls Exp $
+ * $Id: menuitems.c 1.55 2007/11/03 15:01:01 kls Exp $
*/
#include "menuitems.h"
@@ -18,7 +18,7 @@
#define AUTO_ADVANCE_TIMEOUT 1500 // ms before auto advance when entering characters via numeric keys
-const char *FileNameChars = trNOOP(" abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@");
+const char *FileNameChars = trNOOP("FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&");
// --- cMenuEditItem ---------------------------------------------------------
@@ -256,7 +256,7 @@ cMenuEditStrItem::cMenuEditStrItem(const char *Name, char *Value, int Length, co
{
value = Value;
length = Length;
- allowed = Allowed;
+ allowed = Allowed ? Allowed : tr(FileNameChars);
pos = -1;
offset = 0;
insert = uppercase = false;
@@ -285,7 +285,7 @@ void cMenuEditStrItem::EnterEditMode(void)
int l = strlen(allowed) + 1;
allowedUtf8 = new uint[l];
Utf8ToArray(allowed, allowedUtf8, l);
- const char *charMap = tr(" 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9");
+ const char *charMap = tr("CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9");
l = strlen(charMap) + 1;
charMapUtf8 = new uint[l];
Utf8ToArray(charMap, charMapUtf8, l);
diff --git a/menuitems.h b/menuitems.h
index 50778b1..21890a3 100644
--- a/menuitems.h
+++ b/menuitems.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.h 1.21 2007/06/08 11:53:37 kls Exp $
+ * $Id: menuitems.h 1.22 2007/11/03 14:59:47 kls Exp $
*/
#ifndef __MENUITEMS_H
@@ -101,7 +101,7 @@ protected:
void LeaveEditMode(bool SaveValue = false);
bool InEditMode(void) { return valueUtf8 != NULL; }
public:
- cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed);
+ cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed = NULL);
~cMenuEditStrItem();
virtual eOSState ProcessKey(eKeys Key);
};
diff --git a/newplugin b/newplugin
index 57d814e..e025f74 100755
--- a/newplugin
+++ b/newplugin
@@ -12,7 +12,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: newplugin 1.38 2007/10/14 09:13:17 kls Exp $
+# $Id: newplugin 1.39 2007/11/04 10:42:52 kls Exp $
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
@@ -131,25 +131,25 @@ DEPFILE = .dependencies
PODIR = po
LOCALEDIR = \$(VDRDIR)/locale
I18Npo = \$(wildcard \$(PODIR)/*.po)
-I18Nmo = \$(addsuffix .mo, \$(foreach file, \$(I18Npo), \$(basename \$(file))))
-I18Ndirs = \$(notdir \$(foreach file, \$(I18Npo), \$(basename \$(file))))
+I18Nmsgs = \$(addprefix \$(LOCALEDIR)/, \$(addsuffix /LC_MESSAGES/vdr-\$(PLUGIN).mo, \$(notdir \$(foreach file, \$(I18Npo), \$(basename \$(file))))))
I18Npot = \$(PODIR)/\$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o \$\@ \$<
\$(I18Npot): \$(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o \$\@ \$(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o \$\@ \$^
-\$(I18Npo): \$(I18Npot)
+%.po: \$(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q \$\@ \$<
+ \@touch \$\@
-i18n: \$(I18Npot) \$(I18Nmo)
- \@mkdir -p \$(LOCALEDIR)
- for i in \$(I18Ndirs); do\\
- mkdir -p \$(LOCALEDIR)/\$\$i/LC_MESSAGES;\\
- cp \$(PODIR)/\$\$i.mo \$(LOCALEDIR)/\$\$i/LC_MESSAGES/vdr-\$(PLUGIN).mo;\\
- done
+\$(I18Nmsgs): \$(LOCALEDIR)/%/LC_MESSAGES/vdr-\$(PLUGIN).mo: \$(PODIR)/%.mo
+ \@mkdir -p \$(dir \$@)
+ cp \$< \$\@
+
+.PHONY: i18n
+i18n: \$(I18Nmsgs)
### Targets:
diff --git a/osdbase.h b/osdbase.h
index 032a64e..b62b071 100644
--- a/osdbase.h
+++ b/osdbase.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: osdbase.h 1.16 2007/06/09 11:49:00 kls Exp $
+ * $Id: osdbase.h 1.17 2007/11/03 14:50:52 kls Exp $
*/
#ifndef __OSDBASE_H
@@ -57,11 +57,11 @@ public:
cOsdItem(eOSState State = osUnknown);
cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
virtual ~cOsdItem();
- bool Selectable(void) { return selectable; }
+ bool Selectable(void) const { return selectable; }
void SetText(const char *Text, bool Copy = true);
void SetSelectable(bool Selectable);
void SetFresh(bool Fresh);
- const char *Text(void) { return text; }
+ const char *Text(void) const { return text; }
virtual void Set(void) {}
virtual eOSState ProcessKey(eKeys Key);
};
@@ -77,7 +77,7 @@ public:
cOsdObject(bool FastResponse = false) { isMenu = false; needsFastResponse = FastResponse; }
virtual ~cOsdObject() {}
virtual bool NeedsFastResponse(void) { return needsFastResponse; }
- bool IsMenu(void) { return isMenu; }
+ bool IsMenu(void) const { return isMenu; }
virtual void Show(void);
virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
};
@@ -124,7 +124,7 @@ public:
cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
virtual ~cOsdMenu();
virtual bool NeedsFastResponse(void) { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
- int Current(void) { return current; }
+ int Current(void) const { return current; }
void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
virtual void Display(void);
diff --git a/po/ca_ES.po b/po/ca_ES.po
index afef808..c874f43 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -872,13 +872,13 @@ msgstr "Procщs d'ediciѓ iniciat"
msgid "Editing process already active!"
msgstr "Procщs d'ediciѓ iniciat anteriorment!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aрbcчdeщшfghiэjklmnoђpqrstuњvwxyz0123456789-.#~,/_@З"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aрbcчdeщшfghiэjklmnoђpqrstuњvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&З"
msgid "yes"
msgstr "sэ"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index e734719..cdd5715 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -870,14 +870,14 @@ msgstr "Editaшnэ proces zaшal"
msgid "Editing process already active!"
msgstr "Editaшnэ proces je jiО aktivnэ!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aсbcшdяeщьfghiэjklmnђoѓpqrјsЙtЛuњљvwxy§zО0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aсbcшdяeщьfghiэjklmnђoѓpqrјsЙtЛuњљvwxy§zО0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ano"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcсш2\tdefящь3\tghiэ4\tjkl5\tmnoђѓ6\tpqrsјЙ7\ttuvЛњљ8\twxyz§О9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcсш2\tdefящь3\tghiэ4\tjkl5\tmnoђѓ6\tpqrsјЙ7\ttuvЛњљ8\twxyz§О9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/da_DK.po b/po/da_DK.po
index a5e38fa..b11e105 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -870,14 +870,14 @@ msgstr "Redigeringsproces startet"
msgid "Editing process already active!"
msgstr "Redigeringsproces er allerede aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzцјх0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzцјх0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcцх2\tdef3\tghi4\tjkl5\tmnoј6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcцх2\tdef3\tghi4\tjkl5\tmnoј6\tpqrs7\ttuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/de_DE.po b/po/de_DE.po
index cb5d78d..621c3fc 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -870,14 +870,14 @@ msgstr "Schnitt gestartet"
msgid "Editing process already active!"
msgstr "Schnitt bereits aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aфbcdefghijklmnoіpqrsпtuќvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aфbcdefghijklmnoіpqrsпtuќvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcф2\tdef3\tghi4\tjkl5\tmnoі6\tpqrs7\ttuvќ8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcф2\tdef3\tghi4\tjkl5\tmnoі6\tpqrsп7\ttuvќ8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/el_GR.po b/po/el_GR.po
index f204815..1e79779 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -870,13 +870,13 @@ msgstr "Сёїщѓх ч х№хюхёусѓпс"
msgid "Editing process already active!"
msgstr "Х№хюхёусѓпс тёпѓъхєсщ ѓн хюныщюч!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " смтуфхнцчошщпъыьэюяќ№ёѓђєѕ§іїјљў0123456789-.#~,/_@abcdefghijklmnopqrstuvwxyz"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " смтуфхнцчошщпъыьэюяќ№ёѓђєѕ§іїјљў0123456789-.,#~\\^$[]|()*+?{}/:%@&abcdefghijklmnopqrstuvwxyz"
msgid "yes"
msgstr "эсп"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/es_ES.po b/po/es_ES.po
index 82cc030..39450a8 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -870,14 +870,14 @@ msgstr "Proceso de ediciѓn iniciado"
msgid "Editing process already active!"
msgstr "ЁEl proceso de ediciѓn ya estс activo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aсbcчdeщfghiэjklmnёoѓpqrstuњvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aсbcчdeщfghiэjklmnёoѓpqrstuњvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "sэ"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcсч2\tdefщ3\tghiэ4\tjkl5\tmnoёѓ6\tpqrs7\ttuvњ8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcсч2\tdefщ3\tghiэ4\tjkl5\tmnoёѓ6\tpqrs7\ttuvњ8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/et_EE.po b/po/et_EE.po
index fd63f1e..f8edfc1 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -166,7 +166,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Subtiitrid"
msgid "Key$Schedule"
msgstr "Kava"
@@ -187,31 +187,31 @@ msgid "Key$Commands"
msgstr "Kфsud"
msgid "Key$User1"
-msgstr ""
+msgstr "Lisaklahv1"
msgid "Key$User2"
-msgstr ""
+msgstr "Lisaklahv2"
msgid "Key$User3"
-msgstr ""
+msgstr "Lisaklahv3"
msgid "Key$User4"
-msgstr ""
+msgstr "Lisaklahv4"
msgid "Key$User5"
-msgstr ""
+msgstr "Lisaklahv5"
msgid "Key$User6"
-msgstr ""
+msgstr "Lisaklahv6"
msgid "Key$User7"
-msgstr ""
+msgstr "Lisaklahv7"
msgid "Key$User8"
-msgstr ""
+msgstr "Lisaklahv8"
msgid "Key$User9"
-msgstr ""
+msgstr "Lisaklahv9"
msgid "Free To Air"
msgstr "FTA"
@@ -253,10 +253,10 @@ msgid "Dpid2"
msgstr "Dpid2"
msgid "Spid1"
-msgstr ""
+msgstr "Spid1"
msgid "Spid2"
-msgstr ""
+msgstr "Spid2"
msgid "Tpid"
msgstr "Tpid"
@@ -283,7 +283,7 @@ msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
-msgstr "tќhi"
+msgstr "puudu"
msgid "CoderateL"
msgstr "CoderateL"
@@ -397,7 +397,7 @@ msgid "Button$Next"
msgstr "Tulekul"
msgid "Button$Now"
-msgstr "Nќќd"
+msgstr "Hetkel"
msgid "Button$Schedule"
msgstr "Ajakava"
@@ -457,7 +457,7 @@ msgid "Recording commands"
msgstr "Salvestuse kфsud"
msgid "never"
-msgstr "mitte kunagi"
+msgstr "ei"
msgid "skin dependent"
msgstr "kestast sѕltuv"
@@ -529,10 +529,10 @@ msgid "Setup.OSD$Channel info time (s)"
msgstr "Kanaliinfo esitusaeg (s)"
msgid "Setup.OSD$Info on channel switch"
-msgstr "Kanaliinfo nфitamine"
+msgstr "Kanaliinfo kuvamine"
msgid "Setup.OSD$Timeout requested channel info"
-msgstr "Kanaliinfo kuvamise ajapiirang"
+msgstr "Kanaliinfo ajapiirang"
msgid "Setup.OSD$Scroll pages"
msgstr "Lehekќlje kerimine"
@@ -556,7 +556,7 @@ msgid "Setup.EPG$EPG scan timeout (h)"
msgstr "EPG skaneerimise viide (h)"
msgid "Setup.EPG$EPG bugfix level"
-msgstr "EPG veaparanduse tase"
+msgstr "EPG veaparandustase"
msgid "Setup.EPG$EPG linger time (min)"
msgstr "Vana EPG viide (min)"
@@ -565,7 +565,7 @@ msgid "Setup.EPG$Set system time"
msgstr "Kella sќnkroniseerimine"
msgid "Setup.EPG$Use time from transponder"
-msgstr "Kella sќnkroniseerimise transponder"
+msgstr "Sќnkroniseerimise transponder"
#. TRANSLATORS: note the plural!
msgid "Setup.EPG$Preferred languages"
@@ -588,19 +588,19 @@ msgid "no"
msgstr "ei"
msgid "names only"
-msgstr "ainult nimed"
+msgstr "nimed"
msgid "PIDs only"
-msgstr "ainult PID-id"
+msgstr "PID-id"
msgid "names and PIDs"
-msgstr "nimi ja PID-id"
+msgstr "nimed ja PID-id"
msgid "add new channels"
-msgstr "uute kanalite lisamine"
+msgstr "kanalite lisamine"
msgid "add new transponders"
-msgstr "uute transponderite lisamine"
+msgstr "transponderite lisamine"
msgid "DVB"
msgstr "DVB"
@@ -627,22 +627,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Audio keel"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Subtiitrite kuvamine"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Subtiitrite keeli"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Subtiitri keel"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Subtiitrite nihe"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Subtiitri lфbipaistvus"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Subtiitri tausta lфbipaistvus"
msgid "LNB"
msgstr "LNB"
@@ -837,13 +837,13 @@ msgid "No audio available!"
msgstr "Audio kфttesaamatu!"
msgid "No subtitles"
-msgstr ""
+msgstr "Subtiitrid vфljas"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Subtiitrid"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Subtiitrid puuduvad"
msgid "Not enough disk space to start recording!"
msgstr "Ebapiisavalt kettaruumi salvestamise alustamiseks!"
@@ -870,14 +870,14 @@ msgstr "Redigeerimine algas"
msgid "Editing process already active!"
msgstr "Redigeerimine juba aktiivne!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrs№zўtuvwѕфіќxy0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrs№zўtuvwѕфіќxy0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "jah"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcф2\tdef3\tghi4\tjkl5\tmnoѕі6\tpqrs№7\ttuvќ8\twxyzў9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcф2\tdef3\tghi4\tjkl5\tmnoѕі6\tpqrs№7\ttuvќ8\twxyzў9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
@@ -904,7 +904,7 @@ msgid "Can't shutdown - option '-s' not given!"
msgstr "Vфljalќlitamine ebaѕnnestus - '-s' parameeter puudub!"
msgid "Editing - shut down anyway?"
-msgstr "Redigeerimine aktiive - lќlitan vфlja?"
+msgstr "Redigeerimine aktiive - lќlitada vфlja?"
msgid "Recording - shut down anyway?"
msgstr "Salvestamine aktiivne - lќlitada vфlja?"
@@ -921,7 +921,7 @@ msgid "Plugin %s wakes up in %ld min, continue?"
msgstr "Laiendusmoodul %s фrkab %ld minuti pфrast, jфtkata?"
msgid "Editing - restart anyway?"
-msgstr "Redigeerimine aktiivne - taaskфivitada?"
+msgstr "Redigeerimine aktiivne - restart?"
msgid "Recording - restart anyway?"
msgstr "Salvestamine aktiivne - restart?"
diff --git a/po/fi_FI.po b/po/fi_FI.po
index da676d0..6ab2638 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -873,14 +873,14 @@ msgstr "Muokkaus aloitettu"
msgid "Editing process already active!"
msgstr "Muokkaus on jo kфynnissф!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzхфі0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzхфі0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "kyllф"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcфх2\tdef3\tghi4\tjkl5\tmnoі6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcфх2\tdef3\tghi4\tjkl5\tmnoі6\tpqrs7\ttuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index d19d627..de25e80 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -7,15 +7,16 @@
# Nicolas Huillard <nhuillard@e-dition.fr>, 2005
# Pierre Briec <pbriec@free.fr>, 2006
# Bruno Roussel <bruno.roussel@free.fr>, 2007
+# Michael Nival <mnival@club-internet.fr>, 2007
#
msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-10-13 11:29+0200\n"
-"PO-Revision-Date: 2007-08-17 13:45+0200\n"
-"Last-Translator: Bruno Roussel <bruno.roussel@free.fr>\n"
-"Language-Team: <vdr@linuxtv.org>\n"
+"PO-Revision-Date: 2007-10-18 16:12+0100\n"
+"Last-Translator: Michael Nival <mnival@club-internet.fr>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -171,7 +172,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Sous-Titres"
msgid "Key$Schedule"
msgstr "Programmes"
@@ -258,10 +259,10 @@ msgid "Dpid2"
msgstr "PID AC3 (2)"
msgid "Spid1"
-msgstr ""
+msgstr "Sous-Titre (1)"
msgid "Spid2"
-msgstr ""
+msgstr "Sous-Titre (2)"
msgid "Tpid"
msgstr "PID Tщlщtexte"
@@ -632,22 +633,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Langue audio"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Afficher les Sous-Titres"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Langues des Sous-Titres"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Langue de Sous-Titre"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Offset du Sous-Titre"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Transparence de l'avant-plan"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Transparence du fond"
msgid "LNB"
msgstr "LNB"
@@ -842,13 +843,13 @@ msgid "No audio available!"
msgstr "Pas d'audio disponible !"
msgid "No subtitles"
-msgstr ""
+msgstr "Pas de Sous-Titres"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Sous-Titres"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Pas de Sous-Titres disponible !"
msgid "Not enough disk space to start recording!"
msgstr "Espace disque insuffisant pour dщmarrer l'enregistrement !"
@@ -875,14 +876,14 @@ msgstr "Opщration de montage lancщe"
msgid "Editing process already active!"
msgstr "Montage dщjр en cours !"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aрbcчdeщшъfghiюjklmnoєpqrstuљћvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aрbcчdeщшъfghiюjklmnoєpqrstuљћvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "oui"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcртч2\tdefщшъ3\tghiюя4\tjkl5\tmnoє6\tpqrs7\ttuvљ8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcртч2\tdefщшъ3\tghiюя4\tjkl5\tmnoє6\tpqrs7\ttuvљ8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 572cbd4..f0712a0 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -871,13 +871,13 @@ msgstr "Rezanje je zapoшeto"
msgid "Editing process already active!"
msgstr "Ure№ivanje je veц aktivirano!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcшцd№efghijklmnopqrsЙtuvwxyzО0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcшцd№efghijklmnopqrsЙtuvwxyzО0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/hu_HU.po b/po/hu_HU.po
index a42dee0..6f8b9ad 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -872,14 +872,14 @@ msgstr "Vсgсs elindэtva"
msgid "Editing process already active!"
msgstr "A vсgсs mсr aktivсlt!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aсbcdeщfghiэjklmnoѓіѕpqrstuњќћvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aсbcdeщfghiэjklmnoѓіѕpqrstuњќћvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "igen"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taсbc2\tdeщf3\tghiэ4\tjkl5\tmnoѓіѕ6\tpqrs7\ttuњќћv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taсbc2\tdeщf3\tghiэ4\tjkl5\tmnoѓіѕ6\tpqrs7\ttuњќћv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/it_IT.po b/po/it_IT.po
index 2a2ed95..18eced8 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -11,9 +11,9 @@ msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-10-13 11:29+0200\n"
-"PO-Revision-Date: 2007-08-12 14:17+0200\n"
-"Last-Translator: Sean Carlos <seanc@libero.it>\n"
-"Language-Team: <vdr@linuxtv.org>\n"
+"PO-Revision-Date: 2007-10-16 02:15+0100\n"
+"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -169,7 +169,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Key$Sottotitoli"
msgid "Key$Schedule"
msgstr "Programmi"
@@ -256,10 +256,10 @@ msgid "Dpid2"
msgstr "PID AC3 (2)"
msgid "Spid1"
-msgstr ""
+msgstr "Spid1"
msgid "Spid2"
-msgstr ""
+msgstr "Spid2"
msgid "Tpid"
msgstr "PID Teletext"
@@ -630,22 +630,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Lingua per l'audio"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Setup.DVB$Mostra sottotitoli"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Setup.DVB$Lingue sottotitoli"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Setup.DVB$Lingua sottotitoli"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Setup.DVB$Posizione sottotitolo"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Setup.DVB$Trasparenza primo piano sottotitoli"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Setup.DVB$Trasparenza sfondo sottotitoli"
msgid "LNB"
msgstr "LNB"
@@ -840,13 +840,13 @@ msgid "No audio available!"
msgstr "Nessun audio disponibile!"
msgid "No subtitles"
-msgstr ""
+msgstr "Nessun sottotitolo"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Button$Sottotitoli"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Nessun sottotitolo disponibile!"
msgid "Not enough disk space to start recording!"
msgstr "Spazio su disco insufficiente per registrare!"
@@ -873,14 +873,14 @@ msgstr "Processo di modifica iniziato"
msgid "Editing process already active!"
msgstr "Processo di modifica giр attivo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aсрbcdeщшfghiьюjklmnoђpqrstuљvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aсрbcdeщшfghiьюjklmnoђpqrstuљvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "sь"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taрbc2\tdeшf3\tghiь4\tjkl5\tmnoђ6\tpqrs7\ttuљv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taрbc2\tdeшf3\tghiь4\tjkl5\tmnoђ6\tpqrs7\ttuљv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 449a848..c8a9b36 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -872,13 +872,13 @@ msgstr "Bewerken is gestart"
msgid "Editing process already active!"
msgstr "Bewerken is al actief!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@сфряѓіђњќљ"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&сфряѓіђњќљ"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 50d75b2..8063992 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -871,13 +871,13 @@ msgstr "Redigeringsprosess startet"
msgid "Editing process already active!"
msgstr "Redigeringsprosessen er allerede aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr ""
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 426ea37..9663840 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -870,14 +870,14 @@ msgstr "Proces edycji rozpoczъty"
msgid "Editing process already active!"
msgstr "Proces edycji jest juП aktywny!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aБbcцdeъfghijklГmnёoѓpqrsЖtuvwxyzМП0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aБbcцdeъfghijklГmnёoѓpqrsЖtuvwxyzМП0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "tak"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabc2Бц\tdef3ъ\tghi4\tjkl5Г\tmno6ёѓ\tpqrs7Ж\ttuv8\twxyz9МП"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2Бц\tdef3ъ\tghi4\tjkl5Г\tmno6ёѓ\tpqrs7Ж\ttuv8\twxyz9МП"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 650f873..8439538 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -870,13 +870,13 @@ msgstr "Processo de modificaчуo iniciado"
msgid "Editing process already active!"
msgstr "Processo de modificaчуo jс activo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr ""
msgid "yes"
msgstr "sim"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/ro_RO.po b/po/ro_RO.po
index 207c73c..52b3452 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -871,14 +871,14 @@ msgstr "Montajul юnregistrуrii a юnceput"
msgid "Editing process already active!"
msgstr "Montajul юnregistrуrii este deja activ!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aутbcdefghiюjklmnopqrsКtўuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aутbcdefghiюjklmnopqrsКtўuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taутbc2\tdef3\tghiю4\tjkl5\tmno6\tpqrsК7\ttўuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taутbc2\tdef3\tghiю4\tjkl5\tmno6\tpqrsК7\ttўuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index f1a0f88..f752e0e 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -870,14 +870,14 @@ msgstr "Начат монтаж записи"
msgid "Editing process already active!"
msgstr "Процесс видеомонтажа уже запущен!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьюя0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьюя0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "да"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcабвг2\tdefдеёжз3\tghiийкл4\tjklмно5\tmnoпрс6\tpqrsтуфх7\ttuvцчшщъ8\twxyzыьэюя9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcабвг2\tdefдеёжз3\tghiийкл4\tjklмно5\tmnoпрс6\tpqrsтуфх7\ttuvцчшщъ8\twxyzыьэюя9"
msgid "Button$ABC/abc"
msgstr "АБВ/абв"
diff --git a/po/sl_SI.po b/po/sl_SI.po
index e45c6d9..da1de4d 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -871,14 +871,14 @@ msgstr "Urejanje se je zaшelo"
msgid "Editing process already active!"
msgstr "Urejanje je Оe aktivno!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcшdefghijklmnopqrsЙtuvwxyzО0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcшdefghijklmnopqrsЙtuvwxyzО0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcш2\tdef3\tghi4\tjkl5\tmno6\tpqrsЙ7\ttuv8\twxyzО9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcш2\tdef3\tghi4\tjkl5\tmno6\tpqrsЙ7\ttuv8\twxyzО9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/sv_SE.po b/po/sv_SE.po
index bc879a1..cde4ca7 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -871,14 +871,14 @@ msgstr "Redigeringen startar"
msgid "Editing process already active!"
msgstr "Redigeringen фr redan aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzхфі0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzхфі0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcхф2\tdef3\tghi4\tjkl5\tmnoі6\tpqrs7\ttuv8\twxyz"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcхф2\tdef3\tghi4\tjkl5\tmnoі6\tpqrs7\ttuv8\twxyz"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/tr_TR.po b/po/tr_TR.po
index 3036d13..461a322 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -870,14 +870,14 @@ msgstr "Kesim baўland§"
msgid "Editing process already active!"
msgstr "Kesim henќz aktif!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcчdefg№h§ijklmnoіprsўtuќvyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcчdefg№h§ijklmnoіprsўtuќvyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "evet"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcч2\tdef3\tg№h§i4\tjkl5\tmnoі6\tprsў7\ttuќv8\tyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcч2\tdef3\tg№h§i4\tjkl5\tmnoі6\tprsў7\ttuќv8\tyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/uk_UA.po b/po/uk_UA.po
new file mode 100644
index 0000000..fdddc90
--- /dev/null
+++ b/po/uk_UA.po
@@ -0,0 +1,999 @@
+# VDR language source file.
+# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
+# This file is distributed under the same license as the VDR package.
+# Yarema Aka Knedlyk <yupadmin@gmail.com>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: VDR 1.5.10\n"
+"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
+"POT-Creation-Date: 2007-11-01 11:36+0100\n"
+"PO-Revision-Date: 2007-08-12 14:17+0200\n"
+"Last-Translator: Yarema Aka Knedlyk <yupadmin@gmail.com>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-5\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "*** Invalid Channel ***"
+msgstr "*** Неправильний канал ***"
+
+msgid "Channel not available!"
+msgstr "Канал недоступний!"
+
+msgid "Can't start Transfer Mode!"
+msgstr "Неможливо включити режим пропуску!"
+
+msgid "Starting EPG scan"
+msgstr "Починаю EPG-сканування"
+
+msgid "No title"
+msgstr "Без назви"
+
+#. TRANSLATORS: The name of the language, as written natively
+msgid "LanguageName$English"
+msgstr "Українська"
+
+#. TRANSLATORS: The 3-letter code of the language
+msgid "LanguageCode$eng"
+msgstr "ukr"
+
+msgid "Phase 1: Detecting RC code type"
+msgstr "Крок 1: Визначення типу коду пульта"
+
+msgid "Press any key on the RC unit"
+msgstr "Натисніть будь-яку кнопку на пульті"
+
+msgid "RC code detected!"
+msgstr "Визначено код пульта!"
+
+msgid "Do not press any key..."
+msgstr "Не натискайте кнопки..."
+
+msgid "Phase 2: Learning specific key codes"
+msgstr "Крок 2: Приписування кодів для відповідних кнопок"
+
+#, c-format
+msgid "Press key for '%s'"
+msgstr "Натисніть кнопку '%s'"
+
+msgid "Press 'Up' to confirm"
+msgstr "Натисніть 'Вверх' для підтвердження"
+
+msgid "Press 'Down' to continue"
+msgstr "Натисніть 'Вниз' для продовження"
+
+msgid "(press 'Up' to go back)"
+msgstr "(Натисніть 'Вверх' для повернення)"
+
+msgid "(press 'Down' to end key definition)"
+msgstr "(Натисніть 'Вниз' для закінчення настройки пульта)"
+
+msgid "(press 'Menu' to skip this key)"
+msgstr "(Натисніть 'Меню' щоб пропустити кнопку)"
+
+msgid "Learning Remote Control Keys"
+msgstr "Навчання пульта"
+
+msgid "Phase 3: Saving key codes"
+msgstr "Крок 3: Запам'ятовування кодів кнопок"
+
+msgid "Press 'Up' to save, 'Down' to cancel"
+msgstr "Натисніть 'Вверх' для закінчення, 'Вниз' для відмови"
+
+msgid "Key$Up"
+msgstr "Вверх"
+
+msgid "Key$Down"
+msgstr "Вниз"
+
+msgid "Key$Menu"
+msgstr "Меню"
+
+msgid "Key$Ok"
+msgstr "Ok"
+
+msgid "Key$Back"
+msgstr "Назад"
+
+msgid "Key$Left"
+msgstr "Наліво"
+
+msgid "Key$Right"
+msgstr "Направо"
+
+msgid "Key$Red"
+msgstr "Червона"
+
+msgid "Key$Green"
+msgstr "Зелена"
+
+msgid "Key$Yellow"
+msgstr "Жовта"
+
+msgid "Key$Blue"
+msgstr "Синя"
+
+msgid "Key$Info"
+msgstr "Інфо"
+
+msgid "Key$Play"
+msgstr "Програвання"
+
+msgid "Key$Pause"
+msgstr "Пауза"
+
+msgid "Key$Stop"
+msgstr "Стоп"
+
+msgid "Key$Record"
+msgstr "Запис"
+
+msgid "Key$FastFwd"
+msgstr "Прокрутка вперед"
+
+msgid "Key$FastRew"
+msgstr "Прокрутка назад"
+
+msgid "Key$Next"
+msgstr "Вперед"
+
+msgid "Key$Prev"
+msgstr "Назад"
+
+msgid "Key$Power"
+msgstr "Виключити"
+
+msgid "Key$Channel+"
+msgstr "Канал +"
+
+msgid "Key$Channel-"
+msgstr "Канал -"
+
+msgid "Key$PrevChannel"
+msgstr "Попередній канал"
+
+msgid "Key$Volume+"
+msgstr "Гучність +"
+
+msgid "Key$Volume-"
+msgstr "Гучність -"
+
+msgid "Key$Mute"
+msgstr "Виключити звук"
+
+msgid "Key$Audio"
+msgstr "Мова"
+
+msgid "Key$Subtitles"
+msgstr "Субтитри"
+
+msgid "Key$Schedule"
+msgstr "Телегід"
+
+msgid "Key$Channels"
+msgstr "Канали"
+
+msgid "Key$Timers"
+msgstr "Таймери"
+
+msgid "Key$Recordings"
+msgstr "Записи"
+
+msgid "Key$Setup"
+msgstr "Налаштування"
+
+msgid "Key$Commands"
+msgstr "Команди"
+
+msgid "Key$User1"
+msgstr ""
+
+msgid "Key$User2"
+msgstr ""
+
+msgid "Key$User3"
+msgstr ""
+
+msgid "Key$User4"
+msgstr ""
+
+msgid "Key$User5"
+msgstr ""
+
+msgid "Key$User6"
+msgstr ""
+
+msgid "Key$User7"
+msgstr ""
+
+msgid "Key$User8"
+msgstr ""
+
+msgid "Key$User9"
+msgstr ""
+
+msgid "Free To Air"
+msgstr "FTA (незакодовано)"
+
+msgid "encrypted"
+msgstr "закодовано"
+
+msgid "auto"
+msgstr "авто"
+
+msgid "Edit channel"
+msgstr "Редактування каналу"
+
+msgid "Name"
+msgstr "Назва"
+
+msgid "Source"
+msgstr "Джерело"
+
+msgid "Frequency"
+msgstr "Частота"
+
+msgid "Vpid"
+msgstr "Vpid (відео)"
+
+msgid "Ppid"
+msgstr "Ppid"
+
+msgid "Apid1"
+msgstr "Apid1 (аудіо 1)"
+
+msgid "Apid2"
+msgstr "Apid2 (аудіо 2)"
+
+msgid "Dpid1"
+msgstr "Dpid1 (AC3 1)"
+
+msgid "Dpid2"
+msgstr "Dpid2 (AC3 2)"
+
+msgid "Spid1"
+msgstr ""
+
+msgid "Spid2"
+msgstr ""
+
+msgid "Tpid"
+msgstr "Tpid (телетекст)"
+
+msgid "CA"
+msgstr "CA (декодер)"
+
+msgid "Sid"
+msgstr "Sid"
+
+msgid "Polarization"
+msgstr "Поляризація"
+
+msgid "Srate"
+msgstr "Симв. швидкість"
+
+msgid "Inversion"
+msgstr "Інверсія"
+
+msgid "off"
+msgstr "викл"
+
+msgid "CoderateH"
+msgstr "CoderateH"
+
+msgid "none"
+msgstr "нічого"
+
+msgid "CoderateL"
+msgstr "CoderateL"
+
+msgid "Modulation"
+msgstr "Модуляція"
+
+msgid "Bandwidth"
+msgstr "Діапазон"
+
+msgid "Transmission"
+msgstr "Передача"
+
+msgid "Guard"
+msgstr "Захист"
+
+msgid "Hierarchy"
+msgstr "Ієрархія"
+
+msgid "Channel settings are not unique!"
+msgstr "Настройки каналу не єдині!"
+
+msgid "Channels"
+msgstr "Канали"
+
+msgid "Button$Edit"
+msgstr "Редактувати"
+
+msgid "Button$New"
+msgstr "Додати"
+
+msgid "Button$Delete"
+msgstr "Видалити"
+
+msgid "Button$Mark"
+msgstr "Перемістити"
+
+msgid "Channel is being used by a timer!"
+msgstr "Канал занятий таймером!"
+
+msgid "Delete channel?"
+msgstr "Видалити канал?"
+
+msgid "Edit timer"
+msgstr "Налаштування таймера"
+
+msgid "Active"
+msgstr "Активовано"
+
+msgid "Channel"
+msgstr "Канал"
+
+msgid "Day"
+msgstr "День"
+
+msgid "Start"
+msgstr "Початок"
+
+msgid "Stop"
+msgstr "Кінець"
+
+msgid "VPS"
+msgstr "VPS поправка"
+
+msgid "Priority"
+msgstr "Пріоритет"
+
+msgid "Lifetime"
+msgstr "Строк зберігання"
+
+msgid "File"
+msgstr "Файл"
+
+msgid "First day"
+msgstr "Перший день"
+
+msgid "Timers"
+msgstr "Таймери"
+
+msgid "Button$On/Off"
+msgstr "Вкл/Викл"
+
+msgid "Button$Info"
+msgstr "Інфо"
+
+msgid "Delete timer?"
+msgstr "Видалити таймер?"
+
+msgid "Timer still recording - really delete?"
+msgstr "Йде запис по таймеру - дійсно видалити?"
+
+msgid "Event"
+msgstr "Передача"
+
+msgid "Button$Timer"
+msgstr "Таймер"
+
+msgid "Button$Record"
+msgstr "Запис"
+
+msgid "Button$Switch"
+msgstr "Переключити"
+
+msgid "What's on now?"
+msgstr "Зараз в ефірі:"
+
+msgid "What's on next?"
+msgstr "Далі в програмі:"
+
+msgid "Button$Next"
+msgstr "Далі"
+
+msgid "Button$Now"
+msgstr "Зараз"
+
+msgid "Button$Schedule"
+msgstr "Програма"
+
+msgid "Can't switch channel!"
+msgstr "Неможливо переключити канал!"
+
+#, c-format
+msgid "Schedule - %s"
+msgstr "Програма - %s"
+
+#, c-format
+msgid "This event - %s"
+msgstr "Ця передача - %s"
+
+msgid "This event - all channels"
+msgstr "Ця передача - всі канали"
+
+msgid "All events - all channels"
+msgstr "Всі передачі - всі канали"
+
+#, c-format
+msgid "Please enter %d digits!"
+msgstr "Натисніть %d цифри"
+
+msgid "CAM not responding!"
+msgstr "CAM не відповідає"
+
+msgid "Recording info"
+msgstr "Про запис"
+
+msgid "Button$Play"
+msgstr "Програвати"
+
+msgid "Button$Rewind"
+msgstr "Назад"
+
+msgid "Recordings"
+msgstr "Записи"
+
+msgid "Button$Open"
+msgstr "Відкрити"
+
+msgid "Commands"
+msgstr "Команди"
+
+msgid "Error while accessing recording!"
+msgstr "Помилка доступу до запису!"
+
+msgid "Delete recording?"
+msgstr "Витерти запис?"
+
+msgid "Error while deleting recording!"
+msgstr "Помилка видалення запису!"
+
+msgid "Recording commands"
+msgstr "Команди запису"
+
+msgid "never"
+msgstr "ніколи"
+
+msgid "skin dependent"
+msgstr "згідно з стилем"
+
+msgid "always"
+msgstr "завжди"
+
+msgid "OSD"
+msgstr "Меню"
+
+msgid "Setup.OSD$Language"
+msgstr "Мова"
+
+msgid "Setup.OSD$Skin"
+msgstr "Стиль"
+
+msgid "Setup.OSD$Theme"
+msgstr "Тема"
+
+msgid "Setup.OSD$Left"
+msgstr "Відступ зліва"
+
+msgid "Setup.OSD$Top"
+msgstr "Відступ зверху"
+
+msgid "Setup.OSD$Width"
+msgstr "Ширина"
+
+msgid "Setup.OSD$Height"
+msgstr "Висота"
+
+msgid "Setup.OSD$Message time (s)"
+msgstr "Тривалість показу повідомлень (сек)"
+
+msgid "Setup.OSD$Use small font"
+msgstr "Використовувати малий шрифт"
+
+msgid "Setup.OSD$Anti-alias"
+msgstr "Згладживання шрифтів"
+
+msgid "Setup.OSD$Default font"
+msgstr "Стандартний фонт"
+
+msgid "Setup.OSD$Small font"
+msgstr "Малий фонт"
+
+msgid "Setup.OSD$Fixed font"
+msgstr "Фіксований фонт"
+
+msgid "Setup.OSD$Default font size (pixel)"
+msgstr "Размір фонта для меню (pixel)"
+
+msgid "Setup.OSD$Small font size (pixel)"
+msgstr "Размір малого фонта (pixel)"
+
+msgid "Setup.OSD$Fixed font size (pixel)"
+msgstr "Размір фіксованого фонта (pixel)"
+
+msgid "Setup.OSD$Channel info position"
+msgstr "Положення вікна інформації про канал"
+
+msgid "bottom"
+msgstr "внизу"
+
+msgid "top"
+msgstr "вверху"
+
+msgid "Setup.OSD$Channel info time (s)"
+msgstr "Показ інформації про канал (сек)"
+
+msgid "Setup.OSD$Info on channel switch"
+msgstr "Показувати інформацію про канал"
+
+msgid "Setup.OSD$Timeout requested channel info"
+msgstr "Інформацію про канал закрити"
+
+msgid "Setup.OSD$Scroll pages"
+msgstr "Прокрутка сторінок меню"
+
+msgid "Setup.OSD$Scroll wraps"
+msgstr "Циклічна прокрутка"
+
+msgid "Setup.OSD$Menu key closes"
+msgstr "Кнопку Меню закрити"
+
+msgid "Setup.OSD$Recording directories"
+msgstr "Каталоги зберігання записів"
+
+msgid "EPG"
+msgstr "Телегід"
+
+msgid "Button$Scan"
+msgstr "Скануровати"
+
+msgid "Setup.EPG$EPG scan timeout (h)"
+msgstr "Затримка сканування телегіда (ч)"
+
+msgid "Setup.EPG$EPG bugfix level"
+msgstr "Рівень корекції помилок"
+
+msgid "Setup.EPG$EPG linger time (min)"
+msgstr "Зберігання застарілих даних (хв)"
+
+msgid "Setup.EPG$Set system time"
+msgstr "Втановити системий час"
+
+msgid "Setup.EPG$Use time from transponder"
+msgstr "Використати час транспондера"
+
+#. TRANSLATORS: note the plural!
+msgid "Setup.EPG$Preferred languages"
+msgstr "Бажані мови (телегід)"
+
+#. TRANSLATORS: note the singular!
+msgid "Setup.EPG$Preferred language"
+msgstr "Вибрано"
+
+msgid "pan&scan"
+msgstr "панорамувати"
+
+msgid "letterbox"
+msgstr "зменшувати"
+
+msgid "center cut out"
+msgstr "обрізати збоку"
+
+msgid "no"
+msgstr "ні"
+
+msgid "names only"
+msgstr "тільки назви"
+
+msgid "PIDs only"
+msgstr "Тільки PIDи"
+
+msgid "names and PIDs"
+msgstr "назви і PIDи"
+
+msgid "add new channels"
+msgstr "додати нові канали"
+
+msgid "add new transponders"
+msgstr "додати нові транспондери"
+
+msgid "DVB"
+msgstr "DVB"
+
+msgid "Setup.DVB$Primary DVB interface"
+msgstr "Основний DVB-пристрій"
+
+msgid "Setup.DVB$Video format"
+msgstr "Формат відео"
+
+msgid "Setup.DVB$Video display format"
+msgstr "Широкоекране зображення"
+
+msgid "Setup.DVB$Use Dolby Digital"
+msgstr "Включити Dolby Digital"
+
+msgid "Setup.DVB$Update channels"
+msgstr "Оновлювати настройки каналів"
+
+msgid "Setup.DVB$Audio languages"
+msgstr "Бажані мови (звук)"
+
+msgid "Setup.DVB$Audio language"
+msgstr "Вибрано"
+
+msgid "Setup.DVB$Display subtitles"
+msgstr "Показувати субтитри"
+
+msgid "Setup.DVB$Subtitle languages"
+msgstr "Мови субтитрів"
+
+msgid "Setup.DVB$Subtitle language"
+msgstr "Мова субтитрів"
+
+msgid "Setup.DVB$Subtitle offset"
+msgstr "Відступ субтитрів"
+
+msgid "Setup.DVB$Subtitle foreground transparency"
+msgstr ""
+
+msgid "Setup.DVB$Subtitle background transparency"
+msgstr ""
+
+msgid "LNB"
+msgstr "Конвертер"
+
+msgid "Setup.LNB$Use DiSEqC"
+msgstr "Використовувати DiSEqC"
+
+msgid "Setup.LNB$SLOF (MHz)"
+msgstr "Частота переключання (SLOF) (МГц)"
+
+msgid "Setup.LNB$Low LNB frequency (MHz)"
+msgstr "Нижня частота конвертера (МГц)"
+
+msgid "Setup.LNB$High LNB frequency (MHz)"
+msgstr "Верхня частота конвертера (МГц)"
+
+msgid "CAM reset"
+msgstr "Перезавантаження CAM"
+
+msgid "CAM present"
+msgstr "CAM присутній"
+
+msgid "CAM ready"
+msgstr "CAM готовий"
+
+msgid "CAM"
+msgstr "Умовний доступ"
+
+msgid "Button$Menu"
+msgstr "Меню"
+
+msgid "Button$Reset"
+msgstr "Скинути"
+
+msgid "Opening CAM menu..."
+msgstr "Відкриваю меню модуля умовного доступу (CAM)"
+
+msgid "Can't open CAM menu!"
+msgstr "Меню CAM-модуля недоступне!"
+
+msgid "CAM is in use - really reset?"
+msgstr "CAM використовується - дійсно перезавантажити?"
+
+msgid "Can't reset CAM!"
+msgstr "Помилка перезапуску CAM-модуля!"
+
+msgid "Recording"
+msgstr "Запис"
+
+msgid "Setup.Recording$Margin at start (min)"
+msgstr "Випередження початку запису (хв)"
+
+msgid "Setup.Recording$Margin at stop (min)"
+msgstr "Запізнення зупинки запису (хв)"
+
+msgid "Setup.Recording$Primary limit"
+msgstr "Мін. пріоритет захоплення осн. пристрою"
+
+msgid "Setup.Recording$Default priority"
+msgstr "Пріоритет таймера по замовчуванню"
+
+msgid "Setup.Recording$Default lifetime (d)"
+msgstr "Строк зберігання запису по замовчуванню (д)"
+
+msgid "Setup.Recording$Pause priority"
+msgstr "Пріоритет відкладеного перегляду"
+
+msgid "Setup.Recording$Pause lifetime (d)"
+msgstr "Зберігання відкладеного перегляду (д)"
+
+msgid "Setup.Recording$Use episode name"
+msgstr "Групувати файли по епізодах"
+
+msgid "Setup.Recording$Use VPS"
+msgstr "Використовувати сигнали VPS"
+
+msgid "Setup.Recording$VPS margin (s)"
+msgstr "Буферний час VPS (сек)"
+
+msgid "Setup.Recording$Mark instant recording"
+msgstr "Відмічати зроблені вручну записи"
+
+msgid "Setup.Recording$Name instant recording"
+msgstr "Схема найменувань ручних записів"
+
+msgid "Setup.Recording$Instant rec. time (min)"
+msgstr "Протяжність ручного запису (хв)"
+
+msgid "Setup.Recording$Max. video file size (MB)"
+msgstr "Макс. размір відеофайлу (Мб)"
+
+msgid "Setup.Recording$Split edited files"
+msgstr "Ділити відредактовані файли"
+
+msgid "Replay"
+msgstr "Перегляд"
+
+msgid "Setup.Replay$Multi speed mode"
+msgstr "Багатошвидкісний режим"
+
+msgid "Setup.Replay$Show replay mode"
+msgstr "Віображати режим перегляду"
+
+msgid "Setup.Replay$Resume ID"
+msgstr "ID перегляду"
+
+msgid "Miscellaneous"
+msgstr "Різне"
+
+msgid "Setup.Miscellaneous$Min. event timeout (min)"
+msgstr "Мін. час очікування події (хв)"
+
+msgid "Setup.Miscellaneous$Min. user inactivity (min)"
+msgstr "Мін. час очікування вводу (хв)"
+
+msgid "Setup.Miscellaneous$SVDRP timeout (s)"
+msgstr "Затримкка обриву з'єднання SVDRP (сек)"
+
+msgid "Setup.Miscellaneous$Zap timeout (s)"
+msgstr "Затримка переключання каналу (сек)"
+
+msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
+msgstr "Затримка часу для впровадження каналу (ms)"
+
+msgid "Setup.Miscellaneous$Initial channel"
+msgstr "Канал при включанню"
+
+msgid "Setup.Miscellaneous$as before"
+msgstr "як раніше"
+
+msgid "Setup.Miscellaneous$Initial volume"
+msgstr "Гучність при включенні"
+
+msgid "Plugins"
+msgstr "Модулі розширення"
+
+msgid "This plugin has no setup parameters!"
+msgstr "Модуль не має параметрів налаштувань!"
+
+msgid "Setup"
+msgstr "Налаштування"
+
+msgid "Restart"
+msgstr "Перезапустити"
+
+msgid "Really restart?"
+msgstr "Дійсно перезапустити?"
+
+#. TRANSLATORS: note the leading and trailing blanks!
+msgid " Stop recording "
+msgstr " Зупинити запис "
+
+msgid "Schedule"
+msgstr "Телегід"
+
+msgid "VDR"
+msgstr "VDR"
+
+msgid "Disk"
+msgstr "Диск"
+
+msgid "free"
+msgstr "вільно"
+
+#. TRANSLATORS: note the leading blank!
+msgid " Stop replaying"
+msgstr " Зупинити програвання"
+
+msgid "Button$Audio"
+msgstr "Мова"
+
+msgid "Button$Pause"
+msgstr "Пауза"
+
+msgid "Button$Stop"
+msgstr "Стоп"
+
+msgid "Button$Resume"
+msgstr "Продовжити"
+
+#. TRANSLATORS: note the leading blank!
+msgid " Cancel editing"
+msgstr " Перервати монтаж запису"
+
+msgid "Stop recording?"
+msgstr "Припинити запис?"
+
+msgid "Cancel editing?"
+msgstr "Перервати редактування?"
+
+msgid "No audio available!"
+msgstr "Відсутній звук!"
+
+msgid "No subtitles"
+msgstr "Немає субтитрів"
+
+msgid "Button$Subtitles"
+msgstr "Субтитри"
+
+msgid "No subtitles available!"
+msgstr "Субтитрів немає!"
+
+msgid "Not enough disk space to start recording!"
+msgstr "Недостатньо місця на диску для початку запису"
+
+msgid "No free DVB device to record!"
+msgstr "Немає вільного DVB-пристрою для запису!"
+
+msgid "Pausing live video..."
+msgstr "Режим відкладеного перегляду..."
+
+#. TRANSLATORS: note the trailing blank!
+msgid "Jump: "
+msgstr "Перейти: "
+
+msgid "No editing marks defined!"
+msgstr "Не задано міток для монтажу!"
+
+msgid "Can't start editing process!"
+msgstr "Неможливо почати монтаж запису!"
+
+msgid "Editing process started"
+msgstr "Монтаж запису почався"
+
+msgid "Editing process already active!"
+msgstr "Процес відеомонтажу вже запущений!"
+
+#, fuzzy
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzабвгдеєёжзиіїйклмнопрстуфхцчшщъыьюя0123456789-.#~,/_@"
+
+msgid "yes"
+msgstr "так"
+
+#, fuzzy
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.#~,/_@1\tabcабвг2\tdefдеєёжз3\tghiиіїйкл4\tjklмно5\tmnoпрс6\tpqrsтуфх7\ttuvцчшщъ8\twxyzыьэюя9"
+
+msgid "Button$ABC/abc"
+msgstr "АБВ/абв"
+
+msgid "Button$Overwrite"
+msgstr "Заміна"
+
+msgid "Button$Insert"
+msgstr "Вставка"
+
+msgid "Plugin"
+msgstr "Модуль"
+
+msgid "Up/Dn for new location - OK to move"
+msgstr "Натискайте \"Вверх\"/\"Вниз\" для вибору позиції, а потім \"OK\""
+
+msgid "Channel locked (recording)!"
+msgstr "Канал заблоковано (йде запис)!"
+
+msgid "Low disk space!"
+msgstr "Недостатньо місця на диску!"
+
+msgid "Can't shutdown - option '-s' not given!"
+msgstr "Виключенння неможливе - не задано параметр '-s'!"
+
+msgid "Editing - shut down anyway?"
+msgstr "Йде монтаж - дійсно виключити?"
+
+msgid "Recording - shut down anyway?"
+msgstr "Йде запис - дійсно виключити?"
+
+#, c-format
+msgid "Recording in %ld minutes, shut down anyway?"
+msgstr "Через %ld хвилин почнеться запис - дійсно виключити?"
+
+msgid "shut down anyway?"
+msgstr "дійсно виключити?"
+
+#, c-format
+msgid "Plugin %s wakes up in %ld min, continue?"
+msgstr "Plugin %s проснеться через %ld хвилин - продовжити?"
+
+msgid "Editing - restart anyway?"
+msgstr "Процес монтажу - дійсно перезапустити?"
+
+msgid "Recording - restart anyway?"
+msgstr "Йде запис - дійсно перезапустити?"
+
+msgid "restart anyway?"
+msgstr "дійсно перезапустити?"
+
+#. TRANSLATORS: note the trailing blank!
+msgid "Volume "
+msgstr "Гучність "
+
+msgid "Classic VDR"
+msgstr "Класичний"
+
+msgid "ST:TNG Panels"
+msgstr "ST:TNG панелі"
+
+#. TRANSLATORS: the first character of each weekday, beginning with monday
+msgid "MTWTFSS"
+msgstr "ПВСЧПСН"
+
+#. TRANSLATORS: abbreviated weekdays, beginning with monday (must all be 3 letters!)
+msgid "MonTueWedThuFriSatSun"
+msgstr "ПонВтрСрдЧтвПтнСубНед"
+
+msgid "Monday"
+msgstr "Понеділок"
+
+msgid "Tuesday"
+msgstr "Вівторок"
+
+msgid "Wednesday"
+msgstr "Середа"
+
+msgid "Thursday"
+msgstr "Четвер"
+
+msgid "Friday"
+msgstr "П'ятниця"
+
+msgid "Saturday"
+msgstr "Субота"
+
+msgid "Sunday"
+msgstr "Неділя"
+
+msgid "Upcoming VPS recording!"
+msgstr "VPS-Запис скоро почнеться"
+
+msgid "Recording started"
+msgstr "Запис почався"
+
+msgid "VDR will shut down later - press Power to force"
+msgstr "VDR виключиться ппізніше - натисніть Power для пришвидшення"
+
+msgid "Press any key to cancel shutdown"
+msgstr "Натисніть будь-яку кнопку для відміни виключення."
+
+msgid "Switching primary DVB..."
+msgstr "Зміна основного DVB-пристрою..."
+
+msgid "Editing process failed!"
+msgstr "Помилка під час монтажу запису!"
+
+msgid "Editing process finished"
+msgstr "Монтаж закінчено"
+
+msgid "Press any key to cancel restart"
+msgstr "Натисніть будь-яку кнопку для відміни перезавантаження"
+
+#, c-format
+msgid "VDR will shut down in %s minutes"
+msgstr "VDR виключиться через %s хвилин"
diff --git a/recording.c b/recording.c
index 5184611..7999f72 100644
--- a/recording.c
+++ b/recording.c
@@ -4,10 +4,11 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.c 1.156 2007/10/14 10:21:54 kls Exp $
+ * $Id: recording.c 1.157 2007/11/04 11:17:43 kls Exp $
*/
#include "recording.h"
+#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
@@ -448,12 +449,14 @@ char *ExchangeChars(char *s, bool ToFileSystem)
case '/': *p = '~'; break;
// encoded characters:
case '#': {
- if (strlen(p) > 2) {
+ if (strlen(p) > 2 && isxdigit(*(p + 1)) && isxdigit(*(p + 2))) {
char buf[3];
sprintf(buf, "%c%c", *(p + 1), *(p + 2));
unsigned char c = strtol(buf, NULL, 16);
- *p = c;
- memmove(p + 1, p + 3, strlen(p) - 2);
+ if (c) {
+ *p = c;
+ memmove(p + 1, p + 3, strlen(p) - 2);
+ }
}
}
break;
diff --git a/remux.c b/remux.c
index aed3829..78c86fd 100644
--- a/remux.c
+++ b/remux.c
@@ -11,7 +11,7 @@
* The cRepacker family's code was originally written by Reinhard Nissl <rnissl@gmx.de>,
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
*
- * $Id: remux.c 1.59 2007/09/22 12:08:22 kls Exp $
+ * $Id: remux.c 1.60 2007/11/03 14:18:07 kls Exp $
*/
#include "remux.h"
@@ -1427,6 +1427,7 @@ int cDolbyRepacker::BreakAt(const uchar *Data, int Count)
#define MMAX_PLENGTH (64*MAX_PLENGTH) // some stations send PES packets that are extremely large, e.g. DVB-T in Finland or HDTV 1920x1080
#define IPACKS 2048
+#define SUBTITLE_PACKS KILOBYTE(32)
// Start codes:
#define SC_SEQUENCE 0xB3 // "sequence header code"
@@ -1911,7 +1912,7 @@ cRemux::cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, b
if (SPids) {
int n = 0;
while (*SPids && numTracks < MAXTRACKS && n < MAXSPIDS)
- ts2pes[numTracks++] = new cTS2PES(*SPids++, resultBuffer, IPACKS, 0x00, 0x20 + n++);
+ ts2pes[numTracks++] = new cTS2PES(*SPids++, resultBuffer, SUBTITLE_PACKS, 0x00, 0x20 + n++);
}
}
@@ -2009,7 +2010,7 @@ int cRemux::Put(const uchar *Data, int Count)
break;
if (Data[i] != TS_SYNC_BYTE)
break;
- if (resultBuffer->Free() < 2 * IPACKS)
+ if (resultBuffer->Free() < SUBTITLE_PACKS)
break; // A cTS2PES might write one full packet and also a small rest
int pid = GetPid(Data + i + 1);
if (Data[i + 3] & 0x10) { // got payload
diff --git a/shutdown.c b/shutdown.c
index 4029a78..4fde544 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -6,7 +6,7 @@
*
* Original version written by Udo Richter <udo_richter@gmx.de>.
*
- * $Id: shutdown.c 1.1 2007/02/24 17:24:11 kls Exp $
+ * $Id: shutdown.c 1.2 2007/10/19 14:33:40 kls Exp $
*/
#include "shutdown.h"
@@ -110,9 +110,11 @@ void cShutdownHandler::CheckManualStart(int ManualStart)
// Set inactive after MinUserInactivity
SetUserInactiveTimeout();
}
- else
+ else {
// Set inactive from now on
+ dsyslog("scheduled wakeup time in %ld minutes, assuming automatic start of VDR", Delta / 60);
SetUserInactive();
+ }
}
void cShutdownHandler::SetShutdownCommand(const char *ShutdownCommand)
@@ -126,8 +128,13 @@ void cShutdownHandler::CallShutdownCommand(time_t WakeupTime, int Channel, const
time_t Delta = WakeupTime ? WakeupTime - time(NULL) : 0;
cString cmd = cString::sprintf("%s %ld %ld %d \"%s\" %d", shutdownCommand, WakeupTime, Delta, Channel, *strescape(File, "\"$"), UserShutdown);
isyslog("executing '%s'", *cmd);
- if (SystemExec(cmd, true) == 0)
+ int Status = SystemExec(cmd, true);
+ if (!WIFEXITED(Status) || WEXITSTATUS(Status))
+ esyslog("SystemExec() failed with status %d", Status);
+ else {
Setup.NextWakeupTime = WakeupTime; // Remember this wakeup time for comparison on reboot
+ Setup.Save();
+ }
}
void cShutdownHandler::SetUserInactiveTimeout(int Seconds, bool Force)
diff --git a/thread.c b/thread.c
index a0647d0..9583124 100644
--- a/thread.c
+++ b/thread.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: thread.c 1.62 2007/08/24 13:15:48 kls Exp $
+ * $Id: thread.c 1.63 2007/10/19 14:30:13 kls Exp $
*/
#include "thread.h"
@@ -518,7 +518,7 @@ int SystemExec(const char *Command, bool Detached)
if (Detached) {
// Fork again and let first child die - grandchild stays alive without parent
if (fork() > 0)
- exit(0);
+ _exit(0);
// Start a new session
pid_t sid = setsid();
if (sid < 0)
diff --git a/tools.c b/tools.c
index bbbcf82..ba7b0cf 100644
--- a/tools.c
+++ b/tools.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.c 1.136 2007/10/13 12:00:21 kls Exp $
+ * $Id: tools.c 1.137 2007/11/03 15:34:07 kls Exp $
*/
#include "tools.h"
@@ -896,7 +896,7 @@ cString DayDateTime(time_t t)
time(&t);
struct tm tm_r;
tm *tm = localtime_r(&t, &tm_r);
- snprintf(buffer, sizeof(buffer), "%s %02d.%02d %02d:%02d", *WeekDayName(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
+ snprintf(buffer, sizeof(buffer), "%s %02d.%02d. %02d:%02d", *WeekDayName(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
return buffer;
}
diff --git a/vdr.c b/vdr.c
index b22dec3..a4e6e1f 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.300 2007/08/26 14:36:48 kls Exp $
+ * $Id: vdr.c 1.302 2007/11/03 14:46:29 kls Exp $
*/
#include <getopt.h>
@@ -181,6 +181,7 @@ int main(int argc, char *argv[])
#define DEFAULTSVDRPPORT 2001
#define DEFAULTWATCHDOG 0 // seconds
+#define DEFAULTCONFDIR CONFDIR
#define DEFAULTPLUGINDIR PLUGINDIR
#define DEFAULTEPGDATAFILENAME "epg.data"
@@ -382,8 +383,7 @@ int main(int argc, char *argv[])
if (DisplayHelp) {
printf("Usage: vdr [OPTIONS]\n\n" // for easier orientation, this is column 80|
" -a CMD, --audio=CMD send Dolby Digital audio to stdin of command CMD\n"
- " -c DIR, --config=DIR read config files from DIR (default is to read them\n"
- " from the video directory)\n"
+ " -c DIR, --config=DIR read config files from DIR (default: %s)\n"
" -d, --daemon run in daemon mode\n"
" -D NUM, --device=NUM use only the given DVB device (NUM = 0, 1, 2...)\n"
" there may be several -D options (default: all DVB\n"
@@ -425,6 +425,7 @@ int main(int argc, char *argv[])
" -w SEC, --watchdog=SEC activate the watchdog timer with a timeout of SEC\n"
" seconds (default: %d); '0' disables the watchdog\n"
"\n",
+ DEFAULTCONFDIR,
DEFAULTEPGDATAFILENAME,
DEFAULTPLUGINDIR,
LIRC_DEVICE,
@@ -523,6 +524,7 @@ int main(int argc, char *argv[])
int PreviousChannel[2] = { 1, 1 };
int PreviousChannelIndex = 0;
time_t LastChannelChanged = time(NULL);
+ time_t LastInteract = 0;
int MaxLatencyTime = 0;
bool InhibitEpgScan = false;
bool IsInfoMenu = false;
@@ -536,7 +538,7 @@ int main(int argc, char *argv[])
// Configuration data:
if (!ConfigDirectory)
- ConfigDirectory = CONFDIR;
+ ConfigDirectory = DEFAULTCONFDIR;
cPlugin::SetConfigDirectory(ConfigDirectory);
cThemes::SetThemesDirectory(AddDirectory(ConfigDirectory, "themes"));
@@ -1069,6 +1071,7 @@ int main(int argc, char *argv[])
}
Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time
if (Interact) {
+ LastInteract = Now;
eOSState state = Interact->ProcessKey(key);
if (state == osUnknown && Interact != cControl::Control()) {
if (ISMODELESSKEY(key) && cControl::Control()) {
@@ -1195,7 +1198,7 @@ int main(int argc, char *argv[])
ShutdownHandler.countdown.Cancel();
}
- if (!Interact && !cRecordControls::Active() && !cCutter::Active() && !Interface->HasSVDRPConnection() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
+ if ((Now - LastInteract) > ACTIVITYTIMEOUT && !cRecordControls::Active() && !cCutter::Active() && !Interface->HasSVDRPConnection() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
// Handle housekeeping tasks
// Shutdown: