diff -Nru mythtv-status-0.9.3/ChangeLog mythtv-status-0.10.2/ChangeLog --- mythtv-status-0.9.3/ChangeLog 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/ChangeLog 2012-07-07 11:41:35.000000000 +0000 @@ -1,3 +1,72 @@ +2012-07-07 Andrew Ruthven + Switch to using the exact mode when working out the time to the + next recording. Also, if the next recording is in 1 Hour, 1 Minute + don't report it as "1 Hour, 1 Minutes". Thank you to Julian Gilbey + for the patch fixing this. + + If the next recording is in $x Hours, 0 Minutes, remove the comma + as well, previously it was outputing "$x Hours,". + + If the next recording is in more than 1 day, then switch to showing + it in days and hours, for example "1 Day, 2 Hours". + + Hrmm, the XML protocol version was wrong for the encoder status, + so we incorrectly showed "7" instead of "Recording" for an encoder + that was in fact recording. + +2012-07-06 Andrew Ruthven + Correctly handle UTF-8 in the output from MythTV. + +2012-06-14 Andrew Ruthven + Setting $0 stopped --help and -? from working, fix that. + + Add the start of a test suite! + +2012-03-04 Andrew Ruthven + It turns out that some email clients treat the oneliner block + as a paragraph that absolutely most be wrapped. Which causes + rather ugly results. Add a --oneliner-bullets option that + puts asterisks at the start of each oneliner line to make them + a bulleted list. + +2012-01-18 Andrew Ruthven + MythTV 0.25 now has the status info in a different location, look + there. + +2011-05-19 Andrew Ruthven + It seems that MythTV has changed the ProtoVer field in + 0.23 to be a different version number. Update some + stanzas to use current version numbers. + +2011-05-15 Andrew Ruthven + My method of trying to ensure that we don't have long lived + processes hanging around didn't work. Now we fork a child + to perform the query. + +2011-03-03 Andrew Ruthven + It turns out that $SIG{ALRM} doesn't always work with LWP::UserAgent + as you'd expect. I've certainly noticed mythtv-status hanging + during cron jobs on a regular basis, and this could well explain + it. + +2010-12-01 Andrew Ruthven + Make sure that Date::Manip is running in 5.x compatibiity mode. + +2010-09-16 Andrew Ruthven + Add support for extra recording state. + + Be ready to switch to TB's earlier. + +2010-06-13 Andrew Ruthven + Allow skipping idle encoders when showing the encoder status and + make that the default. Thanks to Ron Kellam for the suggestion. + + It seems that Date::Manip::DateCalc in some versions require that + you parse in a ref for the error ref, passing in undef causes it + to not perform the date calculation. Parse in a ref, even if we + don't actually check it. Thanks to Ron Kellam for doing some + leg work on tracking this issue down. + 2010-04-29 Andrew Ruthven Handle the case where the disk space units returned from the server are different. i.e., total is in GB and used is in MB. diff -Nru mythtv-status-0.9.3/INSTALL mythtv-status-0.10.2/INSTALL --- mythtv-status-0.9.3/INSTALL 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/INSTALL 2012-07-07 11:41:35.000000000 +0000 @@ -9,17 +9,23 @@ XML::LibXML Date::Manip MIME::Entity + Sys::SigAction + Config::Auto + YAML MythTV - The MythTV Perl API If you have installed this package using Debian then they should already be present. -For Fedora 7, the required package names are (they are all available via yum): +For Fedora, the required package names are (they are all available via yum): perl-libwww-perl perl-XML-LibXML perl-DateManip perl-MIME-tools - perl-MythTV + perl-Sys-SigAction + perl-Config-Auto.noarch + perl-YAML.noarch + perl-MythTV MOTD ---- diff -Nru mythtv-status-0.9.3/THANKS mythtv-status-0.10.2/THANKS --- mythtv-status-0.9.3/THANKS 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/THANKS 2012-07-07 11:41:35.000000000 +0000 @@ -17,6 +17,8 @@ - Tom Metro - For a whole bunch of feedback. - Jan Schneider - For feedback on the email charset and encoding. - Steve Gunther - Doing some home work on the OSD declutter changes. + - Julian Gilbey - Fixing up some errors in reporting the next scheduled + recording. - The Debian translators - Especially the Portuguese guys - you rock! - All the MythTV developers for working on a great bit of software diff -Nru mythtv-status-0.9.3/bin/mythtv-status mythtv-status-0.10.2/bin/mythtv-status --- mythtv-status-0.9.3/bin/mythtv-status 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/bin/mythtv-status 2012-07-07 11:41:35.000000000 +0000 @@ -8,15 +8,26 @@ # Display the current status of a MythTV system. +# While I would love to enable the 6.xx interface for Date::Manip we may +# still need to run on platforms that only have version 5.x. So we'll +# turn on backwards compatible mode for now. +{ + no warnings 'once'; + $Date::Manip::Backend = 'DM5'; +} + use LWP::UserAgent; use XML::LibXML; use Date::Manip; use Getopt::Long; use Text::Wrap; -use POSIX qw/strftime/; +use POSIX qw/strftime :sys_wait_h/; + use MIME::Entity; use Pod::Usage; use Config::Auto; +use Sys::SigAction qw/timeout_call/; +use Encode; # Try and load a config file first, and then allow the command line # to over ride what is in the config file. @@ -36,23 +47,31 @@ $c->{'description'} ||= 0; $c->{'episode'} ||= 0; $c->{'encoder_details'} ||= 0; +$c->{'encoder_skip_idle'} ||= 1; $c->{'colour'} ||= 0; #my %display; # my @email; $c->{'email_only_on_alert'} ||= 0; my $help = 0; -$c->{'xml_file'} ||= undef; my $verbose = 0; $c->{'disk_space_warn'} ||= 95; # Percent to warn at. $c->{'guide_days_warn'} ||= 2; # How many days we require. -$c->{'auto_expire_count'} ||= 10; # How many auto expire shows to display. +$c->{'auto_expire_count'} ||= 10; # How many auto expire shows to display. $c->{'recording_in_warn'} ||= 60 * 60; # When is the next recording considered critical? (seconds) +$c->{'save_file'} ||= undef; # File to save the XML from the BE to. +$c->{'xml_file'} ||= undef; # Load the BE XML from this file. + +# We allow a hack for MS Outlook which normally recognises the +# oneliners block as a paragraph and wraps it. If it sees "bullets" +# it believes it is a bulleted list and leaves it alone. +$c->{'oneliner_bullets'} ||= 0; # What units we have available for converting diskspaces. +# The threshold is at what level we switch to using that unit. my @size_thresholds = ( { 'unit' => 'TB', - 'threshold' => 50 * 1024 * 1024, # Someone might have more than 50TB! + 'threshold' => 2 * 1024 * 1024, 'conversion' => 1024 * 1024, }, { @@ -67,7 +86,7 @@ my $return_code_only = 0; -my $VERSION = '0.9.3'; +my $VERSION = '0.10.2'; # Some display blocks are disabled by default: $c->{'display'}{'Shows due to Auto Expire'} = 0; @@ -87,6 +106,8 @@ 'guide-days-warn=i' => \$c->{'guide_days_warn'}, 'auto-expire-count=i' => \$c->{'auto_expire_count'}, 'recording-in-warn=i' => \$c->{'recording_in_warn'}, + 'encoder-skip-idle!' => \$c->{'encoder_skip_idle'}, + 'oneliner-bullets!' => \$c->{'oneliner_bullets'}, 'status!' => \$c->{'display'}{'Status'}, 'encoders!' => \$c->{'display'}{'Encoders'}, @@ -102,6 +123,7 @@ 'return-code-only' => \$return_code_only, 'file=s' => \$c->{'xml_file'}, + 's|save-file=s' => \$c->{'save_file'}, 'verbose' => \$verbose, 'help|?' => \$help, @@ -110,6 +132,8 @@ pod2usage(verbose => 1) if $help; +$0 = "mythtv-status - parent"; + # Get the email address into a format we can use. @{ $c->{'email'} } = split(',', join(',', @{ $c->{'email'} })); @@ -203,7 +227,10 @@ '^2$' => "${warning}Watching Pre-recorded${normal}", '^3$' => "${warning}Watching Recording${normal}", '^4$' => "${warning}Recording${normal}" }, - } + }, + 'filter' => { + 'state' => sub { return $c->{'encoder_skip_idle'} && $_[0] == 0 }, + }, }, # Info about the encoders after TV OSD Declutter (Changeset 20037). @@ -211,7 +238,7 @@ 'name' => 'Encoders', 'type' => 'xpath', 'xpath' => "//Status/Encoders/Encoder", - 'protocol_version' => [ ">= 44" ], + 'protocol_version' => [ ">= 44", "< 58" ], 'attrs' => [ qw/hostname id state connected/ ], 'template' => "__hostname__ (__id__) - __state____connected__", 'rewrite' => { @@ -225,7 +252,38 @@ '^4$' => "${warning}Watching Video${normal}", '^5$' => "${warning}Watching Recording${normal}", '^6$' => "${warning}Recording${normal}" }, - } + }, + 'filter' => { + 'state' => sub { return $c->{'encoder_skip_idle'} && $_[0] == 0 }, + }, + }, + + # Info about the encoders after adding Blu-ray (Changeset 25058). + # The protocol version is from svn commit 25362 but is the closest commit + # for mythtv/libs/libmythdb/mythversion.h. + { + 'name' => 'Encoders', + 'type' => 'xpath', + 'xpath' => "//Status/Encoders/Encoder", + 'protocol_version' => [ ">= 58" ], + 'attrs' => [ qw/hostname id state connected/ ], + 'template' => "__hostname__ (__id__) - __state____connected__", + 'rewrite' => { + '/connected/' => { '1' => '', '0' => "${warning}(Disconnected)${normal}" }, + '/state/' => { + '^-1$' => "${warning}Error${normal}", + '^0$' => "${safe}Idle${normal}", + '^1$' => "${warning}Watching LiveTV${normal}", + '^2$' => "${warning}Watching Pre-recorded${normal}", + '^3$' => "${warning}Watching DVD${normal}", + '^4$' => "${warning}Watching Blu-ray${normal}", + '^5$' => "${warning}Watching Video${normal}", + '^6$' => "${warning}Watching Recording${normal}", + '^7$' => "${warning}Recording${normal}" }, + }, + 'filter' => { + 'state' => sub { return $c->{'encoder_skip_idle'} && $_[0] == 0 }, + }, }, # What programs (if any) are being recorded right now? @@ -380,13 +438,22 @@ return $next_time if $next_time eq 'Never' || $next_time eq 'now'; - my $delta = DateCalc('now', $next_time, undef, 1); - my $str = Delta_Format($delta, 0, '%hh Hours, %mv Minutes'); - my $seconds = Delta_Format($delta, 0, '%sh'); - - $str =~ s/\b1 (Hour|Minute)s/1 $1/; - $str =~ s/^0 Hours, //; - $str =~ s/ 0 Minutes//; + my $err; + my $delta = DateCalc('now', $next_time, \$err, 0); + my $seconds = Delta_Format($delta, 'approx', 0, '%sh'); + + # If the next recording is more than 1 day in the future, + # print out the days and hours. + my $str; + if ($seconds > 24 * 3600) { + $str = Delta_Format($delta, 0, '%dd Days, %hv Hours'); + } else { + $str = Delta_Format($delta, 0, '%hh Hours, %mv Minutes'); + } + + $str =~ s/\b1 (Day|Hour|Minute)s/1 $1/g; + $str =~ s/(, )?0 Hours(, )?//; + $str =~ s/, 0 Minutes$//; if ($seconds <= $c->{'recording_in_warn'}) { $warn_present ||= 1; @@ -545,9 +612,13 @@ } # Put the one liners together, with leading dots to the colon. + # We allow a hack for MS Outlook which normally recognises the + # oneliners block as a paragrap and wraps it. If it sees "bullets" + # it believes it is a bulleted list and leaves it alone. my $oneliners = ""; for $line (@oneliners) { - $oneliners .= "$line->[0]" + $oneliners .= ($c->{'oneliner_bullets'} ? '* ' : '' ) + . "$line->[0]" . ('.' x ($length - length($line->[0]))) . ": $line->[1]\n"; } @@ -559,6 +630,9 @@ if ($return_code_only) { exit $exit_value; } elsif (scalar(@{ $c->{'email'} }) == 0) { + if ($charset =~ /utf(-)?8/i) { + $output = encode('UTF-8', $output); + } print "\n$output"; } else { if ((! $c->{'email_only_on_alert'}) || @@ -594,32 +668,32 @@ || die "Failed to open $c->{'xml_file'} for reading: $!\n"; $status = join("", ); + $charset = 'UTF-8'; close IN; } else { - my $url = "http://$c->{'host'}:$c->{'port'}/xml"; - my $ua = LWP::UserAgent->new; - $ua->timeout(30); - $ua->env_proxy; - my $response; - eval { - local $SIG{ALRM} = sub { die "alarm\n" }; - alarm(30); - $response = $ua->get($url); - alarm(0); - }; + my $content_type; + # In MythTV 0.25 the path changed from /xml to /Status/GetStatus + for my $path ('Status/GetStatus', 'xml') { + my $url = "http://$c->{'host'}:$c->{'port'}/$path"; + ($content_type, $status) = xml_fetch($url); - die "Sorry, failed to fetch $url: Connection to MythTV timed out.\n" - if $@; - - die "Sorry, failed to fetch $url:\n" . $response->status_line . "\n" - unless $response->is_success; + last + if defined $status; + } - $status = $response->decoded_content; - my $content_type = $response->header('Content-Type'); + die "Nothing was received from the MythTV Backend.\n" + unless defined $status; ($charset) = ($content_type =~ /charset="(\S+?)"/); } + if (defined $c->{'save_file'}) { + open(OUT, "> $c->{'save_file'}") + || die "Failed to open " . $c->{'save_file'} . " for writing: $!\n"; + print OUT $status; + close OUT; + } + # Parse the XML my $parser = XML::LibXML->new(); @@ -631,7 +705,7 @@ clean_xml(\$status); - # Try and hide any error messages thar XML::LibXML insists on printing out. + # Try and hide any error messages that XML::LibXML insists on printing out. open my $olderr, ">&STDERR"; open(STDERR, "> /dev/null") || die "Can't redirect stderr to /dev/null: $!"; @@ -863,7 +937,7 @@ if (defined $block->{'human_readable_sizes'}) { for my $key (@{ $block->{'human_readable_sizes'}}) { for my $unit (@size_thresholds) { - if (defined $unit->{'threshold'}) { + if (defined $vars->{$key} && defined $unit->{'threshold'}) { if ($vars->{$key} > $unit->{'threshold'}) { $vars->{$key} = sprintf("%.1f", $vars->{$key} / $unit->{'conversion'}); $vars->{"${key}_unit"} = $unit->{'unit'}; @@ -977,6 +1051,112 @@ return $_[0]; } +# Perform the fetch from the MythTV Backend in a child process. +sub xml_fetch { + my ($url) = @_; + + $| = 1; + my $pid = pipe_from_fork('CHILD'); + if ($pid) { + # parent + my $content_type; + my $status; + + eval { + local $SIG{ALRM} = sub { die "alarm\n" }; + alarm(10); + $content_type = ; + while () { + $status .= $_; + } + alarm(0); + }; + + # The child didn't get back to us in time, kill them off + # and forget what they sent us. + if ($@) { + $status = undef; + my $result; + warn "Our child has stopped talking to us, kill it off.\n"; + do { + kill 9, $pid; + $result = waitpid($pid, WNOHANG); + } while $result > 0; + + die "Unknown error during retrieval of status from the MythTV backend.\n"; + } + $| = 0; + + if (defined $content_type && $content_type =~ /utf(-)?8/i) { + $status = decode('UTF-8', $status); + } + return ($content_type, $status); + } else { + # child + $0 = "mythtv-status - child"; + my $ua = LWP::UserAgent->new; + $ua->timeout(30); + $ua->env_proxy; + + my $response = ua_request_with_timeout($ua, $url); + die "Sorry, failed to fetch $url: Connection to MythTV timed out.\n" + unless defined $response; + + # If we get a page doesn't exist, then just ignore it, we need to try + # fetching the status page from a few different locations. + if ($response->code == 404) { + exit 1; + } + + die "Sorry, failed to fetch $url: " . $response->status_line . "\n" + unless $response->is_success; + + my $content = $response->decoded_content; + if ($response->header('Content-Type') =~ /utf(-)?8/i) { + $content = encode('UTF-8', $content); + } + print $response->header('Content-Type') . "\n"; + print $content . "\n"; + + exit 0; + } +} + +# simulate open(FOO, "-|") +sub pipe_from_fork ($) { + my $parent = shift; + + $SIG{CHLD} = 'IGNORE'; + pipe $parent, my $child or die; + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + + if ($pid) { + close $child; + } else { + close $parent; + open(STDOUT, ">&=" . fileno($child)) or die; + } + $pid; +} + +# Takes a LWP::UserAgent, and a HTTP::Request, returns a HTTP::Request +# Based on: +# http://stackoverflow.com/questions/73308/true-timeout-on-lwpuseragent-request-method +sub ua_request_with_timeout { + my ($ua, $url) = @_; + + # Get whatever timeout is set for LWP and use that to + # enforce a maximum timeout per request in case of server + # deadlock. (This has happened.) + our $res = undef; + if( timeout_call( $ua->timeout(), sub {$res = $ua->get($url);}) ) { + return undef; + } else { + return $res; + } +} + # Beautify numbers by sticking commas in. sub commify { my ($num) = shift; @@ -1031,6 +1211,10 @@ Display the input ID and channel name against the recording details. +=item B<--encoder-skip-idle> + +Suppress displaying idle encoders in the Encoders block. + =item B<-e, --episode> Display the episode (subtitle) for the scheduled recordings. @@ -1058,6 +1242,11 @@ Load XML from the file specified instead of querying a MythTV backend. Handy for debugging things. +=item B<< --save-file >> + +Save the XML we received from the MythTV backend. +Handy for debugging things. + =item B<< --guide-days-warn >> Warn if the number of days of guide data present is equal to or below @@ -1075,6 +1264,12 @@ The port to use when connecting to MythTV, defaults to 6544. +=item B<--oneliner-bullets> + +Insert asterisks (*) before each of the oneliners to stop some +email clients from thinking the oneliner block is a paragraph and +trying to word wrap them. + =item B<--auto-expire> Display the shows due to auto expire (output is normally suppressed). diff -Nru mythtv-status-0.9.3/bin/mythtv-update-motd mythtv-status-0.10.2/bin/mythtv-update-motd --- mythtv-status-0.9.3/bin/mythtv-update-motd 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/bin/mythtv-update-motd 2012-07-07 11:41:35.000000000 +0000 @@ -10,7 +10,8 @@ [ ! -f /var/run/motd.orig ] && cp /var/run/motd /var/run/motd.orig cp /var/run/motd.orig /var/run/motd.new -if mythtv-status $ARGS -h $HOST >> /var/run/motd.new -then +ret=0 +mythtv-status $ARGS -h $HOST >> /var/run/motd.new 2> /dev/null || ret=$? +if [ $ret -eq 0 -o $ret -eq 1 ]; then [ -f /var/run/motd.new ] && mv /var/run/motd.new /var/run/motd fi diff -Nru mythtv-status-0.9.3/debian/changelog mythtv-status-0.10.2/debian/changelog --- mythtv-status-0.9.3/debian/changelog 2010-05-31 02:54:13.000000000 +0000 +++ mythtv-status-0.10.2/debian/changelog 2012-10-09 02:20:06.000000000 +0000 @@ -1,3 +1,53 @@ +mythtv-status (0.10.2-1~ppa) precise; urgency=low + + * Upload to Mythbuntu PPA + + -- Thomas Mashos Mon, 08 Oct 2012 19:19:17 -0700 + +mythtv-status (0.10.2-1) unstable; urgency=low + + * New upstream release. (Closes: #680358) + * Danish debconf translation from Joe Dalton. (Closes: #680372) + + -- Andrew Ruthven Sat, 07 Jul 2012 16:32:46 +1200 + +mythtv-status (0.10.1-1) unstable; urgency=low + + * New upstream release. + + -- Andrew Ruthven Thu, 14 Jun 2012 23:06:11 +1200 + +mythtv-status (0.10.0-1) unstable; urgency=low + + * New upstream release. + * Make sure we clean up /etc/default/mythtv-status on purge (Closes: #656224) + * Dutch debconf translation from Jeroen Schot (Closes: #675450) + * Bump Standards-Version to 3.9.3. + * Add build-indep and build-arch to debian/rules. + * Add a watch file. + + -- Andrew Ruthven Thu, 14 Jun 2012 12:45:37 +1200 + +mythtv-status (0.9.6-1) unstable; urgency=low + + * New upstream release. + + -- Andrew Ruthven Thu, 03 Mar 2011 23:42:13 +1300 + +mythtv-status (0.9.5-1) unstable; urgency=low + + * New upstream release. + * Set the Date::Manip mode to version 5 now (Closes: #603792) + + -- Andrew Ruthven Wed, 01 Dec 2010 11:25:12 +1300 + +mythtv-status (0.9.4-1) unstable; urgency=low + + * New upstream release. + * Bump Standards-Version to 3.9.1. + + -- Andrew Ruthven Mon, 09 Aug 2010 10:18:22 +1200 + mythtv-status (0.9.3-1) unstable; urgency=low * New upstream release. diff -Nru mythtv-status-0.9.3/debian/control mythtv-status-0.10.2/debian/control --- mythtv-status-0.9.3/debian/control 2010-05-19 10:27:09.000000000 +0000 +++ mythtv-status-0.10.2/debian/control 2012-06-14 11:39:14.000000000 +0000 @@ -4,14 +4,14 @@ Maintainer: Andrew Ruthven DM-Upload-Allowed: yes Build-Depends: debhelper (>= 6), po-debconf -Standards-Version: 3.8.4 +Standards-Version: 3.9.3 Homepage: http://www.etc.gen.nz/projects/mythtv/mythtv-status.html Vcs-Git: http://git.etc.gen.nz/mythtv-status.git Vcs-Browser: http://git.etc.gen.nz/cgi-bin/gitweb.cgi?p=mythtv-status.git;a=summary Package: mythtv-status Architecture: all -Depends: ${misc:Depends}, ${perl:Depends}, libwww-perl, libxml-libxml-perl, libdate-manip-perl, libmime-tools-perl, libconfig-auto-perl +Depends: ${misc:Depends}, ${perl:Depends}, libwww-perl, libxml-libxml-perl, libdate-manip-perl, libmime-tools-perl, libconfig-auto-perl, libsys-sigaction-perl Suggests: molly-guard (>= 0.4) Recommends: libmythtv-perl, libnet-upnp-perl Description: Show the status of a MythTV backend diff -Nru mythtv-status-0.9.3/debian/init.d mythtv-status-0.10.2/debian/init.d --- mythtv-status-0.9.3/debian/init.d 2009-12-09 23:56:22.000000000 +0000 +++ mythtv-status-0.10.2/debian/init.d 2012-03-22 10:33:58.000000000 +0000 @@ -34,6 +34,7 @@ DAEMON=/usr/bin/mythtv-status # Introduce the server's location here NAME=mythtv-status # Introduce the short server's name here DESC="MythTV Status" # Introduce a short description here +TEMPFILE=/var/run/motd.mythtv-status test -x $DAEMON || exit 0 @@ -62,12 +63,27 @@ [ -f /var/run/motd ] || touch /var/run/motd [ -f /var/run/motd.orig ] || cp /var/run/motd /var/run/motd.orig - cp /var/run/motd.orig /var/run/motd.new + if [ -f $TEMPFILE ]; then + echo "Hey, $TEMPFILE already exists" 1>&2 + ls -l /var/run/motd* 1>&2 + ps -ef | grep mythtv-status 1>&2 + cat /var/run/motd.new 1>&2 + fi + + cp /var/run/motd.orig $TEMPFILE ret=0 - $DAEMON $ARGS -h $HOST >> /var/run/motd.new 2> /dev/null || ret=$? + start=$(date) + $DAEMON $ARGS -h $HOST >> $TEMPFILE || ret=$? if [ $ret -eq 0 -o $ret -eq 1 ]; then - mv /var/run/motd.new /var/run/motd + if [ ! -f $TEMPFILE ]; then + # My file has gone away. WTF?! Spit out some debugging. + echo "Odd, $TEMPFILE has gone away. Start: $date, End: $(date)" 1>&2 + ls -l /var/run/motd* 1>&2 + ps -ef | grep mythtv-status 1>&2 + else + mv $TEMPFILE /var/run/motd + fi log_end_msg 0 else log_failure_msg diff -Nru mythtv-status-0.9.3/debian/mythtv-status.1 mythtv-status-0.10.2/debian/mythtv-status.1 --- mythtv-status-0.9.3/debian/mythtv-status.1 2010-05-31 09:30:09.000000000 +0000 +++ mythtv-status-0.10.2/debian/mythtv-status.1 2012-07-07 10:39:39.000000000 +0000 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) .\" .\" Standard preamble: .\" ======================================================================== @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "MYTHTV-STATUS 1" -.TH MYTHTV-STATUS 1 "2010-05-19" "perl v5.10.1" "User Contributed Perl Documentation" +.TH MYTHTV-STATUS 1 "2012-07-07" "perl v5.14.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -159,6 +159,9 @@ .IP "\fB\-\-encoder\-details\fR" 4 .IX Item "--encoder-details" Display the input \s-1ID\s0 and channel name against the recording details. +.IP "\fB\-\-encoder\-skip\-idle\fR" 4 +.IX Item "--encoder-skip-idle" +Suppress displaying idle encoders in the Encoders block. .IP "\fB\-e, \-\-episode\fR" 4 .IX Item "-e, --episode" Display the episode (subtitle) for the scheduled recordings. @@ -181,6 +184,10 @@ .IX Item "--file " Load \s-1XML\s0 from the file specified instead of querying a MythTV backend. Handy for debugging things. +.IP "\fB\-\-save\-file \fR" 4 +.IX Item "--save-file " +Save the \s-1XML\s0 we received from the MythTV backend. +Handy for debugging things. .IP "\fB\-\-guide\-days\-warn \fR" 4 .IX Item "--guide-days-warn " Warn if the number of days of guide data present is equal to or below @@ -194,6 +201,11 @@ .IP "\fB\-p \s-1PORT\s0, \-\-port=PORT\fR" 4 .IX Item "-p PORT, --port=PORT" The port to use when connecting to MythTV, defaults to 6544. +.IP "\fB\-\-oneliner\-bullets\fR" 4 +.IX Item "--oneliner-bullets" +Insert asterisks (*) before each of the oneliners to stop some +email clients from thinking the oneliner block is a paragraph and +trying to word wrap them. .IP "\fB\-\-auto\-expire\fR" 4 .IX Item "--auto-expire" Display the shows due to auto expire (output is normally suppressed). diff -Nru mythtv-status-0.9.3/debian/po/da.po mythtv-status-0.10.2/debian/po/da.po --- mythtv-status-0.9.3/debian/po/da.po 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/debian/po/da.po 2012-07-07 04:31:09.000000000 +0000 @@ -0,0 +1,90 @@ +# Danish translation mythtv-status. +# Copyright (C) 2012 mythtv-status & nedenstående oversættere. +# This file is distributed under the same license as the mythtv-status package. +# Joe Hansen , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: mythtv-status\n" +"Report-Msgid-Bugs-To: andrew@etc.gen.nz\n" +"POT-Creation-Date: 2007-12-25 13:20+1300\n" +"PO-Revision-Date: 2012-07-05 17:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: string +#. Description +#: ../templates:1001 +msgid "MythTV backend to check:" +msgstr "MythTV-motor der skal kontrolleres:" + +#. Type: string +#. Description +#: ../templates:1001 +msgid "" +"The MythTV backend to check, you only need to change this if you want to " +"check a different host." +msgstr "" +"MythTV-motoren der skal kontrolleres, du skal kun ændre dette, hvis du " +"ønsker at kontrollere en anden vært." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Update the system MOTD?" +msgstr "Opdater Dagens besked for systemet?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Whether the Message of the Day should be updated on system boot and on a " +"regular basis." +msgstr "" +"Hvorvidt Dagens besked skal opdateres ved systemopstart og løbende." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"To adjust how often the MOTD is updated, edit /etc/cron.d/mythtv-status." +msgstr "" +"For at justere hvor ofte Dagens besked opdateres, så rediger /etc/cron.d/" +"mythtv-status." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Send email status to:" +msgstr "Send e-post-status til:" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Status emails can be sent on a daily basis." +msgstr "Status-e-post kan sendes dagligt." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"By default an email is only sent if there are alerts. You must have the " +"MythTV Perl API installed for conflict alerts to be generated." +msgstr "" +"Som standard sendes en e-post kun hvis der er alarmer. Du skal have " +"MythTV Perl API'en installeret for at konfliktalarmer bliver oprettet." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"To disable set the email address to \"none\". To specify multiple email " +"addresses, seperate them with a comma." +msgstr "" +"For at deaktivere så angiv e-post-adressen til »none« (ingen). For at angive " +"flere e-post-adresser så adskil dem med et komma." + diff -Nru mythtv-status-0.9.3/debian/po/nl.po mythtv-status-0.10.2/debian/po/nl.po --- mythtv-status-0.9.3/debian/po/nl.po 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/debian/po/nl.po 2012-06-14 11:39:14.000000000 +0000 @@ -0,0 +1,91 @@ +# Dutch translation of mythtv-status debconf templates. +# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the mythtv-status package. +# Jeroen Schot , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: mythtv-status 0.9.3-1\n" +"Report-Msgid-Bugs-To: andrew@etc.gen.nz\n" +"POT-Creation-Date: 2007-12-25 13:20+1300\n" +"PO-Revision-Date: 2012-06-01 12:00+0200\n" +"Last-Translator: Jeroen Schot \n" +"Language-Team: Debian l10n Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: string +#. Description +#: ../templates:1001 +msgid "MythTV backend to check:" +msgstr "Te controleren MythTV-backend:" + +#. Type: string +#. Description +#: ../templates:1001 +msgid "" +"The MythTV backend to check, you only need to change this if you want to " +"check a different host." +msgstr "" +"Geef aan welk MythTV-backend gecontroleerd moet worden. U hoeft dit alleen " +"te wijzigigen als u een andere computer wilt controleren." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "Update the system MOTD?" +msgstr "De MOTD van het systeem bijwerken?" + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"Whether the Message of the Day should be updated on system boot and on a " +"regular basis." +msgstr "" +"Geef aan of het \"bericht van de dag\" (MOTD) bijgewerkt moet worden bij de " +"systeemstart en op reguliere basis." + +#. Type: boolean +#. Description +#: ../templates:2001 +msgid "" +"To adjust how often the MOTD is updated, edit /etc/cron.d/mythtv-status." +msgstr "" +"Bewerk /etc/cron.d/mythtv-status om te wijzigen hoe vaak de MOTD wordt " +"bijgewerkt." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Send email status to:" +msgstr "Stuur een e-mail met de status naar:" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Status emails can be sent on a daily basis." +msgstr "Status-e-mails kunnen dagelijks verstuurd worden." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"By default an email is only sent if there are alerts. You must have the " +"MythTV Perl API installed for conflict alerts to be generated." +msgstr "" +"Standaard wordt er alleen een e-mail verstuurd als er meldingen zijn. " +"Conflictmeldingen worden alleen aangemaakt als u de MythTV-Perl-API heeft " +"geinstalleerd." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"To disable set the email address to \"none\". To specify multiple email " +"addresses, seperate them with a comma." +msgstr "" +"Vul als e-mailadres \"none\" in om dit uit te schakelen. U kunt ook meerdere " +"e-mailadressen opgeven door ze te scheidinge met een komma." diff -Nru mythtv-status-0.9.3/debian/postrm mythtv-status-0.10.2/debian/postrm --- mythtv-status-0.9.3/debian/postrm 2007-10-18 23:46:49.000000000 +0000 +++ mythtv-status-0.10.2/debian/postrm 2012-03-22 10:33:58.000000000 +0000 @@ -25,6 +25,10 @@ then mv /var/run/motd.orig /var/run/motd fi + + if [ "$1" = "purge" ]; then + rm -f /etc/default/mythtv-status + fi ;; esac diff -Nru mythtv-status-0.9.3/debian/rules mythtv-status-0.10.2/debian/rules --- mythtv-status-0.9.3/debian/rules 2008-04-19 05:47:20.000000000 +0000 +++ mythtv-status-0.10.2/debian/rules 2012-06-14 11:39:14.000000000 +0000 @@ -16,7 +16,10 @@ dh_clean debconf-updatepo -build: +build: build-arch build-indep +build-arch: build-stamp +build-indep: build-stamp +build-stamp: pod2man bin/mythtv-status > debian/mythtv-status.1 @touch build-stamp @@ -53,4 +56,4 @@ # We have nothing to do by default. binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure +.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install configure diff -Nru mythtv-status-0.9.3/debian/watch mythtv-status-0.10.2/debian/watch --- mythtv-status-0.9.3/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/debian/watch 2012-06-14 11:39:14.000000000 +0000 @@ -0,0 +1,3 @@ +version=3 + +http://www.etc.gen.nz/projects/mythtv/tarballs/mythtv-status-(\d.+)\.tar\.gz diff -Nru mythtv-status-0.9.3/debian/watch.off mythtv-status-0.10.2/debian/watch.off --- mythtv-status-0.9.3/debian/watch.off 2009-12-09 23:56:22.000000000 +0000 +++ mythtv-status-0.10.2/debian/watch.off 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -version=3 -http://www.etc.gen.nz/projects/mythtv/tarballs/ mythtv-status-([0-9.]+).tar.gz diff -Nru mythtv-status-0.9.3/issues/i_6f139231.cil mythtv-status-0.10.2/issues/i_6f139231.cil --- mythtv-status-0.9.3/issues/i_6f139231.cil 2010-05-18 23:40:07.000000000 +0000 +++ mythtv-status-0.10.2/issues/i_6f139231.cil 2012-07-07 11:41:35.000000000 +0000 @@ -1,9 +1,9 @@ Summary: Incorrect percentage shown -Status: New +Status: Finished CreatedBy: ChrisKemp AssignedTo: andrew Inserted: 2010-04-29T00:47:18 -Updated: 2010-04-29T00:48:16 +Updated: 2010-09-16T09:07:20 When mythtv-status runs I get this in my /etc/motd Isnt 28905.3% incorrect? diff -Nru mythtv-status-0.9.3/t/01-test-help.t mythtv-status-0.10.2/t/01-test-help.t --- mythtv-status-0.9.3/t/01-test-help.t 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/01-test-help.t 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,113 @@ +#!usr/bin/perl + +use Test::More tests => 2; +use FindBin qw/$Bin/; + +# Test that the blurb of how to get help is printed. +my $out = `$Bin/../bin/mythtv-status --zzz 2>&1`; + +my $expected = <&1`; + +$expected = <[ --email
...] + Send the output to the listed email addresses. By default the + encoder status, currently recording shows and time till next + recording is surpressed from the email. + + To turn the additional blocks on you can use --encoders, + --recording-now and/or --next-recording. + + --email-only-on-alert + Only send an email out (if --email is present) if there is an alert + (i.e., schedule conflict or low disk space). + + -?, --help + Display help. + + --file + Load XML from the file specified instead of querying a MythTV + backend. Handy for debugging things. + + --save-file + Save the XML we received from the MythTV backend. Handy for + debugging things. + + --guide-days-warn + Warn if the number of days of guide data present is equal to or + below this level. Default is 2 days. + + -h HOST, --host=HOST + The host to check, defaults to localhost. + + --nostatus, --noencoders, --norecording-now, --noscheduled-recordings, + --noschedule-conflicts, --nonext-recording, --nototal-disk-space, + --nodisk-space, --noguide-data, --noauto-expire + Suppress displaying blocks of the output if they would normally be + displayed. + + -p PORT, --port=PORT + The port to use when connecting to MythTV, defaults to 6544. + + --oneliner-bullets + Insert asterisks (*) before each of the oneliners to stop some email + clients from thinking the oneliner block is a paragraph and trying + to word wrap them. + + --auto-expire + Display the shows due to auto expire (output is normally + suppressed). + + --auto-expire-count + How many of the auto expire shows to display, defaults to 10. + + --recording-in-warn + If the "Next Recording In" time is less than this amount, display it + in red. This in seconds, and defaults to 3600 (1 hour). + + --verbose + Have slightly more verbose output. This includes any warnings that + might be generated while parsing the XML. + + -v, --version + Show the version of mythtv-status and then exit. + +EOF + +ok($out eq $expected, '--help generates help output'); diff -Nru mythtv-status-0.9.3/t/05-v0.20-clean.t mythtv-status-0.10.2/t/05-v0.20-clean.t --- mythtv-status-0.9.3/t/05-v0.20-clean.t 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/05-v0.20-clean.t 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,89 @@ +#!usr/bin/perl -w + +use strict; +use Test::More tests => 42; +use FindBin qw/$Bin/; + +my $xml = "$Bin/xml/single-filesytem-0.20.2.xml"; + +# Test that the blurb of how to get help is printed. +my $out = `$Bin/../bin/mythtv-status --file $xml 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Status..........: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present'); +like($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +like($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is present (the news)'); + +# Test that the status isn't present if --nostatus is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --nostatus 2>&1`; + +like($out, qr/MythTV status for localhost/, 'Header is present'); +unlike($out, qr/^Status\.*:/m, 'Status line is not present'); +like($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +like($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is present (the news)'); + +# Test that the disk space isn't present if --nototal-disk-space is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --nototal-disk-space 2>&1`; + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Status\.*: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present'); +unlike($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is not present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +like($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is present (the news)'); + +# Test that the encoders details aren't present if --noencoders is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --noencoders 2>&1`; + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Status\.*: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present'); +like($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +unlike($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is not present'); +like($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is present (the news)'); + +# Test that the recording now details aren't present if --norecording-now is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --norecording-now 2>&1`; + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Status\.*: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present'); +like($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +unlike($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is not present'); + +# Test that the encoder details for a recording are present if --encoder-details is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --encoder-details 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Status..........: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present'); +like($out, qr/^Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +like($out, qr/^Recording Now:\s+3 News \(TV3, Enc: 9, Chan: 3\) Ends: 19:00:00$/m, 'Recording now is present (the news) with encoder details'); + +# Test that the encoder details for a recording are present if --encoder-details is passed. + +$out = `$Bin/../bin/mythtv-status --file $xml --oneliner-bullets 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^\* Status..........: Thu Nov 29 2007, 6:43 PM$/m, 'Status line is present (with bullet)'); +like($out, qr/^\* Total Disk Space: Total space is 100\.0 GB, with 72\.2 GB used \(72.2%\)$/m, 'Total disk space is present (with bullet)'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present'); +like($out, qr/^Encoders:\s+cerberus \(9\) - Recording$/m, 'Encoder is present, and recording'); +like($out, qr/^Recording Now:\s+3 News \(TV3\) Ends: 19:00:00$/m, 'Recording now is present (the news)'); diff -Nru mythtv-status-0.9.3/t/10-v0.20-guide-data-warning.t mythtv-status-0.10.2/t/10-v0.20-guide-data-warning.t --- mythtv-status-0.9.3/t/10-v0.20-guide-data-warning.t 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/10-v0.20-guide-data-warning.t 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,31 @@ +#!usr/bin/perl -w + +use strict; +use Test::More tests => 6; +use FindBin qw/$Bin/; + +my $xml = "$Bin/xml/guide-data-1-day-0.20.xml"; + +# Test that the guide data warning is present. +my $out = `$Bin/../bin/mythtv-status --file $xml 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +like($out, qr/^Guide Data\.*: There is 1 days worth of data, through to 2007-12-30/m, 'Guide data warning is present'); + +# If --noguide-data is passed in, then the guide data warning should be suppressed. +$out = `$Bin/../bin/mythtv-status --file $xml --noguide-data 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present (turned off)'); + +# If --guide-days-warn is set to something different, like 0, then the guide data warning should be suppressed. +$out = `$Bin/../bin/mythtv-status --file $xml --guide-days-warn 0 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +unlike($out, qr/^Guide Data\.*:/m, 'Guide data warning is not present (warning level changed)'); diff -Nru mythtv-status-0.9.3/t/15-unicode.t mythtv-status-0.10.2/t/15-unicode.t --- mythtv-status-0.9.3/t/15-unicode.t 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/15-unicode.t 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,16 @@ +#!usr/bin/perl -w + +use strict; +use Test::More tests => 3; +use FindBin qw/$Bin/; + +my $xml = "$Bin/xml/wide-character.xml"; + +# Test that the guide data warning is present. +my $out = `$Bin/../bin/mythtv-status -d --file $xml 2>&1`; + +#diag($out); + +like($out, qr/MythTV status for localhost/, 'Header is present'); +unlike($out, qr/Wide character in print/m, 'No warning about wide characters'); +like($out, qr/measurements – with/,' Description contains wide character'); diff -Nru mythtv-status-0.9.3/t/xml/guide-data-1-day-0.20.xml mythtv-status-0.10.2/t/xml/guide-data-1-day-0.20.xml --- mythtv-status-0.9.3/t/xml/guide-data-1-day-0.20.xml 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/xml/guide-data-1-day-0.20.xml 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,71 @@ + + + + + 3 News + + + + + + + Grace's pride won't let her admit it was her poor credit rating that led to the bank's refusal to extend their overdraft. She has to learn to work with Kate when they're taken hostage by a distraught + + + Named Best New Comedy by American TV Guide + + + 3 News + + + A gripping drama series starring Emmy Award-winners James Spader and William Shatner along with a stellar support cast including Rhona Mitra + + + The teams must create a 60-second promotional video for new Microsoft software, with execs from the technology giant as the final judges. With only two people left on each team, the stakes are high. + + + 3 News + + + Grand Designs + + + 3 News + + + Two friends take the property-coaching route to riches; and a young couple mortgages their home to the hilt and goes without, to make their fortune. + + + + + Two teams take on the challenge to construct a super fast monster machine at least 5 metres long and weighing at least 5.5 tonnes. + + + + Classic car nuts, the Beasts of Bodmin, take on Essex forklift trio, The Powerlifters in one of the hardest challenges to date: making cars that can clamber over boulders. + + + + A collection of favourite clips from the engineering entertainment show that pits teams of madcap mechanics against each other. + + + + Adam and Jamie try to beat a heat-detecting alarm sensor, attempt to crack a door guarded by fingerprint technology and crack a safe only opened by an underwater explosion. + + + + Jamie and Adam play with high-speed wind and find out whether the wind in a hurricane can get strong enough to blow a piece of straw through a palm tree trunk and blow the feathers off a chicken. + + + + Jamie and Adam try to prove that a cable snapping at high tension can slice a person in half, while the others explore the theory that pottery contains sounds that can be played back like a record. + + + + + + + + + + diff -Nru mythtv-status-0.9.3/t/xml/single-filesytem-0.20.2.xml mythtv-status-0.10.2/t/xml/single-filesytem-0.20.2.xml --- mythtv-status-0.9.3/t/xml/single-filesytem-0.20.2.xml 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/xml/single-filesytem-0.20.2.xml 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,71 @@ + + + + + 3 News + + + + + + + Grace's pride won't let her admit it was her poor credit rating that led to the bank's refusal to extend their overdraft. She has to learn to work with Kate when they're taken hostage by a distraught + + + Named Best New Comedy by American TV Guide + + + 3 News + + + A gripping drama series starring Emmy Award-winners James Spader and William Shatner along with a stellar support cast including Rhona Mitra + + + The teams must create a 60-second promotional video for new Microsoft software, with execs from the technology giant as the final judges. With only two people left on each team, the stakes are high. + + + 3 News + + + Grand Designs + + + 3 News + + + Two friends take the property-coaching route to riches; and a young couple mortgages their home to the hilt and goes without, to make their fortune. + + + + + Two teams take on the challenge to construct a super fast monster machine at least 5 metres long and weighing at least 5.5 tonnes. + + + + Classic car nuts, the Beasts of Bodmin, take on Essex forklift trio, The Powerlifters in one of the hardest challenges to date: making cars that can clamber over boulders. + + + + A collection of favourite clips from the engineering entertainment show that pits teams of madcap mechanics against each other. + + + + Adam and Jamie try to beat a heat-detecting alarm sensor, attempt to crack a door guarded by fingerprint technology and crack a safe only opened by an underwater explosion. + + + + Jamie and Adam play with high-speed wind and find out whether the wind in a hurricane can get strong enough to blow a piece of straw through a palm tree trunk and blow the feathers off a chicken. + + + + Jamie and Adam try to prove that a cable snapping at high tension can slice a person in half, while the others explore the theory that pottery contains sounds that can be played back like a record. + + + + + + + + + + diff -Nru mythtv-status-0.9.3/t/xml/wide-character.xml mythtv-status-0.10.2/t/xml/wide-character.xml --- mythtv-status-0.9.3/t/xml/wide-character.xml 1970-01-01 00:00:00.000000000 +0000 +++ mythtv-status-0.10.2/t/xml/wide-character.xml 2012-07-07 11:41:35.000000000 +0000 @@ -0,0 +1,21 @@ + + + + + + + The couples begin their first room renovation and Mark challenges them to build a wall to his exact measurements – with a prize that will turn the competition upside down. + + + + + + + + + + + + + +