← Back to team overview

mythbuntu-dev team mailing list archive

[Merge] lp:~tgm4883/mythbuntu/mythtv-fixes into lp:mythbuntu

 

Thomas Mashos has proposed merging lp:~tgm4883/mythbuntu/mythtv-fixes into lp:mythbuntu.

Requested reviews:
  mythbuntu-dev (mythbuntu-dev): code review and fix request
Related bugs:
  Bug #702661 in Mythbuntu: "/etc/cron.hourly/mythvideo (jamu.py) should not run except on master backend"
  https://bugs.launchpad.net/mythbuntu/+bug/702661

For more details, see:
https://code.launchpad.net/~tgm4883/mythbuntu/mythtv-fixes/+merge/60718

This is to fix bug #702661 by moving Jamu related stuff into mythtv-backend and out of mythvideo.

This branch is NOT ready for merge. Everything should be done except I could not find how jamu.py gets installed with the mythvideo package, so I was unable to move that to the mythtv-backend package. 

Please review, fix the jamu.py installation (or let me know how to) and merge.

-- 
The attached diff has been truncated due to its size.
https://code.launchpad.net/~tgm4883/mythbuntu/mythtv-fixes/+merge/60718
Your team mythbuntu-dev is requested to review the proposed merge of lp:~tgm4883/mythbuntu/mythtv-fixes into lp:mythbuntu.
=== added file '.bzrignore'
--- .bzrignore	1970-01-01 00:00:00 +0000
+++ .bzrignore	2011-05-12 02:35:46 +0000
@@ -0,0 +1,12 @@
+.pc
+mythtv
+mythplugins
+myththemes
+.git
+.gitignore
+checksums
+themestringstool
+version.cpp
+.gitout
+debian/DESCRIBE
+README

=== added directory 'debian'
=== renamed directory 'debian' => 'debian.moved'
=== added file 'debian/41-mythtv-permissions.rules'
--- debian/41-mythtv-permissions.rules	1970-01-01 00:00:00 +0000
+++ debian/41-mythtv-permissions.rules	2011-05-12 02:35:46 +0000
@@ -0,0 +1,5 @@
+#For firewire capture devices, we need access rights
+#to raw1394.  Note, that this may be a security risk
+#because devices on firewire can then do anything they
+#please as root on your system.
+KERNEL=="raw1394", GROUP="mythtv"

=== added file 'debian/LP-get-orig-source.py'
--- debian/LP-get-orig-source.py	1970-01-01 00:00:00 +0000
+++ debian/LP-get-orig-source.py	2011-05-12 02:35:46 +0000
@@ -0,0 +1,27 @@
+# Checks launchpad for an orig.tar.gz
+# first argument: upstream version
+# second argument: full path of destination to save file if it's found
+
+import sys
+import os
+from launchpadlib.launchpad import Launchpad
+import urllib
+
+cachedir = os.path.join(os.environ['HOME'], '.launchpadlib', 'cache')
+launchpad = Launchpad.login_anonymously('mythtv daily builder', 'production', cachedir)
+ubuntu = launchpad.distributions["ubuntu"]
+archive = ubuntu.main_archive
+series = ubuntu.current_series
+full_version = archive.getPublishedSources(exact_match=True,source_name="mythtv", distro_series=series)[0].source_package_version
+upstream_version = full_version.split(':')[1].split('-')[0]
+print "Current version in the archive is: %s" % upstream_version
+if len(sys.argv) > 1 and sys.argv[1] == upstream_version:
+    urls = archive.getPublishedSources(exact_match=True,source_name="mythtv")[0].sourceFileUrls()
+    for url in urls:
+        if 'orig.tar.gz' in url:
+            if len(sys.argv) > 2:
+                destination = sys.argv[2]
+            else:
+                destination = os.path.basename(url)                            
+            print "Fetching %s to %s" % (url, destination)
+            urllib.urlretrieve(url, destination)

=== added file 'debian/PPA-published-git-checker.py'
--- debian/PPA-published-git-checker.py	1970-01-01 00:00:00 +0000
+++ debian/PPA-published-git-checker.py	2011-05-12 02:35:46 +0000
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+import sys 
+
+cachedir = "~/.launchpadlib/cache/"
+
+from launchpadlib.launchpad import Launchpad
+launchpad = Launchpad.login_anonymously('mythbuntu PPA version checker', 'production', cachedir)
+
+people = launchpad.people
+
+## Which team 
+mythbuntugroup = people['mythbuntu']
+
+## Which PPA?
+archive = mythbuntugroup.getPPAByName(name=sys.argv[1])
+
+## Which source package?
+package=archive.getPublishedSources(source_name="mythtv")
+
+## Print latest published source package
+fullversion=package[0].source_package_version
+
+## Pull out GIT hash
+try:
+    hash = fullversion.split('-')[0].split('.')[4]
+except IndexError:
+    hash = ''
+print hash

=== added file 'debian/README.Debian'
--- debian/README.Debian	1970-01-01 00:00:00 +0000
+++ debian/README.Debian	2011-05-12 02:35:46 +0000
@@ -0,0 +1,96 @@
+--------------------------
+MythTV for Debian & Ubuntu
+--------------------------
+The MythTV package is actually a giant source package that includes all of the
+work that upstream MythTV works on.  It's organized this way for maintainer 
+simplicity and to workaround some limitations within Launchpad.
+
+If it's decoupled into many individual packages, the maintainer will need to 
+always make sure they're uploaded in sync.  This can mean 3-5 uploads each time 
+rather than a single one.
+
+Launchpad's PPA system can sometimes get backed up, meaning package builds will 
+skew on different architectures as well as for plugins/themes versus the main 
+package.
+
+---------------------
+>Preparing an upload<
+---------------------
+When uploading a package to the archive, you have a few different steps for how 
+to prepare the package than the rest of Ubuntu or Debian.
+
+-------------
+>>Automated<<
+-------------
+If you are making no changes to the packaging or switching to a newer major
+version, there is a helper script available that will automate steps 1-4 below.
+
+# debian/do-new-release.sh $DISTRIBUTION
+
+----------
+>>Manual<<
+----------
+1) Update the revision of the checkout to a current revision.  
+   # debian/rules get-git-source
+
+2) Rebuild the control files.  They need to hardcode the ABI of libmyth as well
+   as all of the themes supported for the myththemes metapackage.
+# debian/rules update-control-files
+
+-------------------------
+> MythTV version string <
+-------------------------
+All of the scripts for the special rules are dependent upon finding the MythTV
+version string in a special format to represent individual data.
+
+Here's a sample string for mythtv-fixes 0.24:
+1:0.24.0+fixes.20101202.ee329fe-0ubuntu1
+
+Let's break it apart:
+1:        -> epoch.  standard debian thing.
+0.24.0    -> upstream version number.
++         -> delimitter indicating this is newer than the 0.24.0 release
+fixes     -> indicates this is a checkout from release-X-YZ-fixes
+20101202  -> date
+.ee329fe  -> git hash
+-0ubuntu1 -> indicates not in debian, but this is ubuntu package iteration 1
+
+
+Here's a sample string for mythtv master 0.25:
+1:0.24.0+master.20101202.ee329fe-0ubuntu1
+
+Let's break it apart:
+1:        -> epoch.  standard debian thing.
+0.25.0    -> upstream version number.
+~         -> delimitter indicating this is less than the 0.25.0 release that hasn't yet happened
+master    -> indicates this is a checkout from trunk
+20101202  -> date
+.ee329fe  -> git hash
+-0ubuntu1 -> indicates not in debian, but this is ubuntu package iteration 1
+
+
+---------------------
+>-fPIC support<
+---------------------
+The builds do have --enable-pic passed to them which should enable -fPIC where 
+applicable.  There are certain portions of the ffmpeg code that intentionally
+disable this functionality though. The same libraries in the 'ffmpeg' 
+package don't have -fPIC either.
+
+These are all caused by inline assmebly referring to absolute memory on 
+x86/x86_64 that matches on MMX flags.
+On other architectures this code will not be compiled.
+
+libmyth-0.24-0: shlib-with-non-pic-code usr/lib/libmythavcodec.so.52.86.1
+ - mythtv/external/FFmpeg/libavcodec/x86/vp8dsp-init.c
+ - ff_vp8dsp_init_x86
+
+libmyth-0.24-0: shlib-with-non-pic-code usr/lib/libmythpostproc.so.51.2.0
+ - mythtv/external/libpostproc/postprocess.c
+ - pp_get_mode_by_name_and_quality
+
+libmyth-0.24-0: shlib-with-non-pic-code usr/lib/libmythswscale.so.0.11.0
+ - libswscale/utils.c
+ - sws_rgb2rgb_init
+ - sws_getCachedContext
+ - sws_getDefaultFilter

=== added file 'debian/changelog'
--- debian/changelog	1970-01-01 00:00:00 +0000
+++ debian/changelog	2011-05-12 02:35:46 +0000
@@ -0,0 +1,3133 @@
+mythtv (2:0.24.0+fixes.20110416.9ba3ece-0ubuntu2) UNRELEASED; urgency=low
+
+  * Moved jamu stuff to backend package. Fixes (LP: #702661)
+
+ -- Thomas Mashos <tgm4883@xxxxxxxxxx>  Wed, 11 May 2011 19:18:11 -0700
+
+mythtv (2:0.24.0+fixes.20110416.9ba3ece-0ubuntu1) natty; urgency=low
+
+  * New upstream checkout (9ba3ece)
+  * >>Upstream changes since last upload (2a9d9f5):
+  * [9ba3ece] Fixed update of some recording status transitions.
+  * [f6e282f] RSS Parsing: Check player tags to make sure they don't
+    have child elements.
+  * [c1c7af0] Filter out NULL-characters from EIT before we save the
+    data in the database.
+  * [1cfcb2b] Internet Content: Correct Blip.tv API URL.
+  * [4068639] libmythtv: Use the actual MythPlayer pause state
+  * Disable jamu and mirobridge bindings as they're current broke with
+    0.24 and won't be fixed in time for release.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Sat, 16 Apr 2011 02:14:52 -0500
+
+mythtv (2:0.24.0+fixes.20110410.2a9d9f5-0ubuntu3) natty; urgency=low
+
+  * debian/mythtv.make:
+    - Properly generate the VCS fields depending on fixes/master.
+  * debian/control.in:
+    - Drop recommends on mythtv-themes to fix oversized AMD64 disk.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Tue, 12 Apr 2011 23:56:18 -0500
+
+mythtv (2:0.24.0+fixes.20110410.2a9d9f5-0ubuntu2) natty; urgency=low
+
+  * debian/rules: Disable OpenGL for armel builds, to prevent FTBFS.
+
+ -- Jani Monoses <jani@xxxxxxxxxx>  Mon, 11 Apr 2011 19:16:56 +0300
+
+mythtv (2:0.24.0+fixes.20110410.2a9d9f5-0ubuntu1) natty; urgency=low
+
+  * New upstream checkout (2a9d9f5)
+  * >>Upstream changes since last upload (c2baf1b):
+  * [2a9d9f5] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [27c3ea5] Add a more descriptive error for failed deletes in
+    Recorded due to unavailable recording. (cherry picked from commit
+    d81e4ef542d6d9e9bd79dc58b70f9b90d04c06b2)
+  * [362d834] Check for null frame buffers in commflag
+  * [80192ec] mythplayer: Revert back to the old method used for
+    duration/position in the OSD slider.
+  * [83bc1fa] CrystalHD: Fix compilation with recent CrystalHD library
+    versions.
+  * [c375a86] TV: Fix unlocking of the player context in the main
+    playback loop. (cherry picked from commit
+    534945895ead72b147f3d695c8f77c9486a48f46)
+  * [464fa28] Fix a bug which caused jamu to crash due to multiple
+    unicode conversions.
+  * Add a patch to enable V4L2 on 2.6.38.  Thanks mlarsen.
+    (LP: #717717)
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Sun, 10 Apr 2011 21:20:50 -0500
+
+mythtv (2:0.24.0+fixes.20110322.c2baf1b-0ubuntu1) natty; urgency=low
+
+  * Don't restart the frontend on exit code 254 (which is representative of
+    being unable to initialize a context)
+  * Mention the exit code in the notify-osd message that it's being restarted.
+  * New upstream checkout (c2baf1b)
+  * >>Upstream changes since last upload (00d86fd):
+  * [c2baf1b] Fix initial pulseaudio volume.
+  * [782b652] Fix lockTuner() and freeTuner() methods of MythBE.  They
+    relied on database access methods that had been removed prior to
+    0.23. (cherry picked from commit
+    5fd4a102989336841628b9764f2d7fe07162089f)
+  * [db3cfd3] libmythui: Revert recent Compiz/fullscreen window fixes.
+  * [4ce7cd8] Fix history handling of overridden find recordings.
+  * [ccd73be] MythPlayer: Fix decoder locking.
+  * [ccc89dd] MythPlayer: Only lock the eof check when run from the
+    decoder thread.
+  * [5e8685f] MythPlayer:: Remove some unnecessary decoder locking.
+  * [8cc2e9a] libmythui: Fix fullscreen windowing with Compiz (and
+    Gnome?)
+  * [ee6aaa7] Video playback: Don't try and display the OSD when
+    embedded. (cherry picked from commit
+    6ce20f63502997afe7bffa82ccc47825fcc6f143)
+  * [1f532a5] MythUIFileBrowser: Fix a segfault if the 'back' button is
+    missing.
+  * [ae52b58] Fix mouse usage in popups, thanks to Paul for spotting the
+    error. Fixes #9667.     (cherry picked from commit
+    afb8995fe52dd3a3f35ab6c256fd556cce68fd68)
+  * [cf09840] Ignore the dividers on the Watch Recordings Change Group
+    Filter popup. Fixes #9668. (cherry picked from commit
+    850dcfb0accb166f47c66e6ee940ca66ee0da148)
+  * [71ff7fd] Mythmusic: Suppress some compiler warnings. (cherry picked
+    from commit 6e71eda7fab37f8c657d357979ff051ccf324afc)
+  * [223142c] Mythmusic: Fix fullscreen spectrum visualisation.
+  * [a6decbc] windows: Support opengl, libfftw amd libvisual in
+    mythplugins configure
+  * [df16df9] OSX: Cross compilation fixes for mythmusic.
+  * [f525415] OSX: Cross compilation fixes for libmythui
+  * [e28fe98] OSX: Cross compilation fixes for libmythtv
+  * [7f15abd] libmythfreemheg: Catch exception for unrecognised content
+  * [f691e85] OpenGL: Avoid crashing hard if the OpenGL context is
+    invalid.
+  * [785ea1b] MythPlayer:: Add some missing null pointer checks for the
+    decoder.
+  * [40fc454] Change ENVCAN parser to use &deg; rather than 260
+  * [13be9c2] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [9d533f3] Do not attempt to increase ALSA buffer size if it's
+    already set to the maximum the hardware can handle
+  * [b41e218] Change ALSA buffer size and period size
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Tue, 22 Mar 2011 08:33:49 -0500
+
+mythtv (2:0.24.0+fixes.20110307.00d86fd-0ubuntu1) natty; urgency=low
+
+  * debian/rules:
+    - Give jya more G's.
+  * debian/control:
+    - Disable largly unused jack support.
+  * New upstream checkout (00d86fd)
+  * >>Upstream changes since last upload (0d3d3a4):
+  * [00d86fd] MythMusic: Fix some overlapping text on the default 4:3
+    track info screen. (cherry picked from commit
+    3ae9230296078ca72c59c997a45c76b46fb1e8df)
+  * [e763cdf] MythMusic: Fix some overlapping text on the default 4:3
+    mini player. (cherry picked from commit
+    7d4bee30863c820e45f3119d7bb68ce6e4c9ad04)
+  * [92443af] MythMusic: Fix some overlapping text on the track info
+    screen and make better use of the available space. (cherry picked
+    from commit 11232c75735ecea3610851a1376ff8aa8322c97b)
+  * [df861e4] MythMusic: Fix some overlapping text on the default-wide
+    mini player. (cherry picked from commit
+    834a383aa7ec4ec7779956648d9e343f9680872d)
+  * [a68266a] MythCenter-wide: Fix some overlapping text on the program
+    lister screen. (cherry picked from commit
+    8689a20c828e7d8b7364af3cca0854df7b413dea)
+  * [e938aa9] MythCenter-wide: Fix some overlapping text on the program
+    finder screen. (cherry picked from commit
+    10f5b0b695830ca37995c798bf8ddcd038d7b1c5)
+  * [a0b5b8f] MythCenter-wide: Fix some overlapping text on the program
+    guide screen. (cherry picked from commit
+    a43a6aee1340d05e3ae203818db9cd270133d3de)
+  * [5367795] Updated MythFrontend, MythArchive and MythGallery
+    translation from Ilkka Tengvall.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Mon, 07 Mar 2011 19:15:36 -0600
+
+mythtv (2:0.24.0+fixes.20110302.0d3d3a4-0ubuntu2) natty; urgency=low
+
+  * debian/mythtv.make:
+    - If GIT_BRANCH is specified in the env, don't reset it.
+    - Set a GIT_BRANCH_FALLBACK in case GIT_BRANCH only exists on a particular
+      portion of the checkout.
+  * Update default SQL file to the current 0.24 schema.
+  * Add a patch to allow mythbackend to run without tuners defined, fixing
+    fresh installs that mythtv-setup hasn't yet been ran.
+  * New upstream checkout (0d3d3a4)
+  * >>Upstream changes since last upload (ad3c81f):
+  * [0d3d3a4] Fix some indenting in default-wide/music-ui.xml.
+  * [fe8f442] MythMusic: Add a couple missing window definitions to the
+    default 4:3 theme.
+  * [4af46b1] Fix digital passthrough on Mac CoreAudio.
+  * [bbfb6b0] Make MPEG2fixup::ProcessVideo return int
+  * [6e5ca62] Slightly improve handling of failed recordings.
+  * [057b017] Do no suspend PulseAudio if the ALSA device contains a
+    hint with the word 'pulse'.
+  * [a2a57df] Remove channel limitation in mythtranscode
+  * [9d78d28] Fix memory leaks in pulseaudio code. Closes #9548
+  * [f169dd9] Fix timestamp estimates for digital audio passthrough
+  * [e0a7720] Prevent Python bindings from loading against Python 2.4 or
+    previous.
+  * [8ba07a0] Improve timestamp logging and restrict fixup code.
+  * [4ce4707] Fix PPC compilation of NuppeDecoder and NuppelRecorder
+  * [c66dceb] configure: Fix libs order in check_ld()
+  * [fa6564d] Change a few <font> to <fontdef>
+  * [dca8767] Remove a stray QMutex::unlock in the TV class.
+  * [519b1b1] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [1443c1c] Teletext: Fix a logging typo in AVFormatDecoder (cherry
+    picked from commit baf2f3f99ea3b357a0b85c66f923f6ae351b5295)
+  * [2b7036f] Add an 'auto-run' setting to mythgallery so that behaviour
+    can be disabled (cherry picked from commit
+    80d9234a505598942214978cc58145320aba0aa2)
+  * [84db96c] Fix a segfault in MusicPlayer::decoderHandlerReady().
+  * [90f48c8] Alter path sanity check to allow PATH lookup, rather than
+    requiring absolute paths.
+  * [e414577] Simplify timestamp selection code which fixes AV-sync for
+    AVI video. (cherry picked from commit
+    eb3c98c5cb899219ddd7dd66877c97655c40d3c4)
+  * [316718a] Faster pausing when switching programs in live tv.
+  * [ad1543a] Refactor 'eof' handling in the decoder and player classes.
+  * [b2c0afc] TV: Clear the contents of TvPlayWindow when playback is
+    starting.
+  * [8332e50] TV: Hide and disable the main UI at the last moment.
+  * [4055a5e] Ensure the TvPlayWindow is shown before we construct the
+    player object. (cherry picked from commit
+    01a5c56e3f98291a67a4277431a7c9df30da8433)
+  * [72b76bd] Use totalLength and framesPlayed to generate
+    duration/position for nuv decoder.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Wed, 02 Mar 2011 09:47:50 -0600
+
+mythtv (2:0.24.0+fixes.20110214.ad3c81f-0ubuntu1) natty; urgency=low
+
+  * Drop proper shutdown behavior for ubuntu patch.  Applied upstream.
+  * New upstream checkout (ad3c81f)
+  * >>Upstream changes since last upload (6318d52):
+  * [ad3c81f] When shutting down or rebooting keep trying alternate
+    methods if the first ones fail.
+  * [20929be] Add MythNetVision to the DVR menu theme. Fixes #9440.
+    (cherry picked from commit a0fc086f5ac8add273cb1306190472495fdb7d1c)
+  * [52f7df5] Remove some no longer needed code now we only support
+    Qt4.5 or later. (cherry picked from commit
+    548434c2944dcca14abfce4734fb8d09bc3957ae)
+  * [809ec68] Ensure teletext images are properly cleared when using
+    XVideo (cherry picked from commit
+    9980fcf452101d8e3a18cf5640427d9946071854)
+  * [18a8200] Fix lockup when keys are pressed while playback is
+    starting. (cherry picked from commit
+    5ec80d83b3f37f600374ee44c4708047e2e08ea2)
+  * [3d55e51] Only need a video track for duration/position info so
+    remove MHEG check.
+  * [4a8c889] Fix BBC frame detection.
+  * [8e3fd5a] Fix windows compiling
+  * [a7c8820] Don't check whether there are pending events in the TV
+    playback loop.
+  * [0ddc3f2] Fix duration/position information for MHEG and audio only
+    playback.
+  * [dcc9b96] Re-enable setting MythPlayer::noVideoTracks
+  * [25ffbc3] Fix clipping issues with the OpenGL painter.
+  * [b259732] fixes/0.24: Workaround windows OpenGL current context
+    issues.
+  * [48d554e] Non LiveTV: Construct the TV object immediately.
+  * [dd981aa] Remove the key list queue in the TV class.
+  * [54fcb92] Improved handling of 'Show the Program Guide when Start
+    Live TV'.
+  * [54a300f] LiveTV: Construct the TV object immediately.
+  * [d0976da] Disable Picture-In-Picture and Picture-By-Picture
+  * Re-enable V4L support by rebuilding against newer libc-dev (LP: #717717)
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Mon, 14 Feb 2011 10:41:07 -0600
+
+mythtv (2:0.24.0+fixes.20110208.6318d52-0ubuntu1) natty; urgency=low
+
+  [ Pieter Hoekstra ]
+  * Automatically restart the frontend if it crashes.  Also notify the user
+    using libnotify. (LP: #692697)
+
+  [ Mario Limonciello ]
+  * debian/control:
+    - Depends on libnotify-bin.
+  * New upstream checkout (6318d52)
+  * >>Upstream changes since last upload (6dd5e4b):
+  * [6318d52] Replace 'xml' version check with one that checks Python
+    version, for Python 2.7 compatibility. (LP: #711762)
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Tue, 08 Feb 2011 11:59:28 -0600
+
+mythtv (2:0.24.0+fixes.20110207.6dd5e4b-0ubuntu1) natty; urgency=low
+
+  * Install mythffmpeg and mythffplay in mythtv-common.
+  * While grabbing git source, capture the details of 'git describe'
+    for --version output.
+  * debian/control:
+    - drop openchrome build dependencies.  We no longer support XvMC in
+    Ubuntu builds anyway.
+  * Add a depends on python-lxml (LP: #710709)
+  * New upstream checkout (6dd5e4b)
+  * >>Upstream changes since last upload (1405782):
+  * [6dd5e4b] Display the Auto commercial skip option for in-progress
+    recordings. (cherry picked from commit
+    5d94418d0813cf3c6dfb5d29b7fe594c155fb3be)
+  * [1a69c92] Several changes to fix the current position and duration
+    of the playback OSD  * Start using the currently displayed video
+    timecode for the OSD position instead of frame number and total
+    frames which is inaccurate.  * Use FFmpeg duration for pre-recorded
+    and video playback length. LiveTV is already correct since it uses
+    the actual recording times but in-progress recordings still uses
+    frames written and fps which is obviously wrong for variable
+    framerate and repeat frame material. The problem with in-progress
+    duration should be able to be fixed by using recording times like
+    livetv does. An update to mythplayer and the recorder class will be
+    necessary.  * Refactor and clean-up some timestamp/timecode
+    handling.
+  * [08a8a65] Force reload of context and stream properties when
+    switching between LiveTV segments.
+  * [849b5ca] Fix seeking after LiveTV transitions.
+  * [7e34a2b] Fix initial bookmark seeking in conjunction with cut
+    lists.
+  * [0100e77] fixes/0.24: Revert Pause/Unpause changes.
+  * [51e3486] Change ThreadPool shutdown to use deleteLater
+  * [cd0acb0] Fix silly error in 5aa72ebce (cherry picked from commit
+    8195d9c5c7b7654ec988d8dce6641d2665e48528)
+  * [8bf1a3a] Don't overwrite default help text if the current widget
+    does not provide any of it's own. (cherry picked from commit
+    5aa72ebce5661e966b1c5a73a576bc1bf7c3cca1)
+  * [9502a6d] OpenGL: Revert 'Don't call QGLContext::doneCurrent() in
+    MythRenderOpenGL'
+  * [e6e1964] Reset the CEA-708 font stretch property when re-
+    initialised. (cherry picked from commit
+    399c1bcd31d6ebf4873bf722d235b2789b4f8be8)
+  * [1e8e703] Update the subtitle font if the fontstretch has changed.
+  * [ae20c48] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [d85343b] Skip past the initial cut area when starting playback.
+  * [14bfdc3] Fix recording item disappearing from list when the
+    subtitle has been edited. (cherry picked from commit
+    9590973b7869c67d68a51cb215f400dcd03f3729)
+  * [61ba0b7] Use ExpandArea() instead of custom and flawed code to
+    achieve the same in MythUIStateType. Potentially fixes a few drawing
+    bugs. (cherry picked from commit
+    b25ec2ebee9bfebf7d148b03c70c6912635d91e4)
+  * [4a113b0] Fix priority textareas not being updated when priority is
+    increased on a list entry. Fixes #9512
+  * [8921ded] Add a timeout for RemoteFile sync. downloads in
+    MythDownloadManager
+  * [38938b3] Don't cache bad result in
+    MythCoreContext::GetMasterHostName().
+  * [06c8142] AOBASE: SRC was setup with 'source_channels' but if we
+    downmix we only get 'channels'
+  * [c884505] Fix for recpriorityB textarea in ProgramRecPriority.
+  * [7612cde] Fix compilation of MythDownloadManager.
+  * [613079e] Add an atexit() handler to delete the MythDownloadManager
+    singleton. (cherry picked from commit
+    26ab0d1bdddb28d826328576f8c048f0f283f883)
+  * [8d1c058] Pause the RingBuffer before pausing the decoder.
+  * [9250772] Use the livetv ringbuffer timeout when switching
+    channel/program.
+  * [bb5e107] Update the seektables when a filename changes on scan in
+    MythVideo.
+  * [6dbb6e9] Fix a potential segfault in MythDVDPlayer. (cherry picked
+    from commit f36b3f020ef3e42c0bb33fc656988a93e599f63b)
+  * [b6dbb3e] A couple bugfixes in MythDownloadManager.
+  * [95ecfdb] Rename the player eof variable.
+  * [efe64a4] OSD: Improved locking in MythPlayer and its subclasses.
+  * [57812c6] MythPlayer: Reorder pause/unpause sequence.
+  * [e6fa6c2] Add areas so that the shapes added in the last commit are
+    correctly proportioned. (cherry picked from commit
+    46d0061dd8625795e7cecfa1082650fa2e982e23)
+  * [3ab178d] Do not lower case when comparing paths, these are case
+    sensitive comparisons and can result in broken paths being used.
+    (cherry picked from commit cfdd72e88d39c1d371fcc272ed5756bbb782b142)
+  * [1509627] Don't convert these strings to Utf8 before comparison,
+    they should already have been converted to Unicode by the QT mysql
+    driver. This sort of conversion isn't strictly legal for QString
+    anyway, it's not a simple byte array, it expects to be holding a
+    unicode encoded string. (cherry picked from commit
+    5c8b326f90b971901804c4d2163194022ade9331)
+  * [2329c36] Don't mangle filename string when saving the file during
+    import or ripping. Refs #9483 (cherry picked from commit
+    d581cefad528a193197c4660cf7e1922ead8b7d7)
+  * [fa2ae0d] Replace some broken image links with shapes instead.
+    (cherry picked from commit 361140bb12fee460a8ee642dfd1519ea68ebd1d5)
+  * [61c78f5] Fix a memory leak in mpegts.c (cherry picked from commit
+    d6d489f4212ad81793164ad29ac4d28819a2c2ae)
+  * [bebb13b] Re-enable settings cache after news schema check.
+  * [7af55a6] Remove channels which are no longer in use in us-bcast
+    (Backport of 2080ca309)
+  * [90fe13c] Use --no-color when checking the git branch.
+  * [40df4b6] Disable XvMC when playing DVDs in fixes/0.24
+  * [f25787f] Add missing break statement in dvbsubdec.c
+  * [3f991fa] Allow braindead old git versions to give version
+  * [945c673] Make the worker threads clean up properly
+  * [798359f] Ensure the main UI window is always hidden when starting
+    playback. (cherry picked from commit
+    f33ac2858392cf8a1670261e5d1058a995add80d)
+  * [2cf5043] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [a328d99] Remove the PlayerTimer class and run the player from
+    TV::StartTV
+  * [46a0dda] Fix restore script host name change with generic names.
+  * [2394a9d] Added Environment Canada static maps as well
+  * [6574b9c] Fix Environment Canada animated maps.
+  * [09800d6] Fix frame rate detection for RM video files with patch
+    used by XBMC.
+  * [c6c50df] Refs #9306. Fixes a memory leak in the EIT scanner.
+  * [415b883] Backport fix for bitrate and duration detection.
+  * [2d85d70] New readme for 0.24 fixes
+  * [e15a45e] Find subdirs before parents when searching for SG relative
+    pathname.
+  * [3ec48f2] Re-enable ffmpeg binary on Darwin.
+  * [f5e6f3d] Propogate INSTALL_ROOT to subdirs on make install
+  * [21b99f1] Added windows outputs to gitignore
+  * [cdf73ef] Add kdevelop supporting files to gitignore.
+  * [2f3a2f8] Fix program finder to not show programs on invisible
+    channels.
+  * [557f3de] Backport fc8e5ee from master.
+  * [f36a849] Exit Watch Recordings if user aborts the initial Rec Group
+    popup.
+  * [3cf32e8] Fix audio-only playback
+  * [1ef81e1] Fix UTF-8 handling on UPnP request URLs
+  * [b769303] MythZoneMinder: Remove some no longer needed includes.
+  * [370220c] Merge branch 'fixes/0.24' of github.com:MythTV/mythtv into
+    fixes/0.24
+  * [edf87f5] MythArchive: Add EAC3 as a valid audio format in the
+    script.
+  * [bac67dc] MythArchive: Add EAC3 as a valid audio format in the
+    script.
+  * [30a2515] Backport SHA: 26cb1f7306fe
+  * [c81a3d7] Add edit marks to MythCenter-wide OSD editbar
+  * [7ed83c3] Backport SHA: a635a7b288d8e1456970 from master to
+    fixes/0.24
+  * [5aa7665] MythVideo: Backport JAMU unicode fix to .24-fixes.
+  * [de60515] Change on how we calculate the required ALSA hardware
+    buffer size.
+  * [64d9d7c] Add INSTALL_ROOT support for mythffmpeg/play
+  * [7cdfb8e] Change the QMutex to QSemaphore in myth_system
+  * [c548468] Added mythffplay to the build
+  * [137af77] Build ffmpeg as mythffmpeg and install
+  * [f6af8c7] Try to increase ALSA bugger by 64kB block
+  * [1b25aae] MythArchive: Tweak a please wait message.
+  * [2efe497] MythCenter: Make the message text in the busy dialog
+    multi-line.
+  * [c9e982a] Fix displaying external text subtitles under a rare
+    situation.
+  * [57059b3] Backport 87db11803 to fixes/0.24.
+  * [c6d47f6] Fix compile warnings for the quickdnr filter.
+  * [f0ffba1] MythArchive: Fix the background of the change encoding
+    profile dialog.
+  * [513409c] MythArchive: Fix the name of the button background shape
+    used in the button lists. Fixes ticket 9372.
+  * [7a644c4] Fix HOWTO references to content no longer in contrib.
+  * [5b7beed] Backport to fixes/0.24.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Mon, 07 Feb 2011 23:58:38 -0600
+
+mythtv (2:0.24.0+fixes.20101214.1405782-0ubuntu1) natty; urgency=low
+
+  * in the git building rule, make sure to include the proper phrases
+    for autobuilds.
+  * reverse the rule for do-new-release.sh
+  * include a data directory to fix mythweb postinst breaking.
+  * New upstream checkout (1405782)
+  * >>Upstream changes since last upload (d3d2640):
+  * [1405782] Fix ALSA buffer allocation.
+  * [588cc6e] Fix potential deadlocks resulting in "Waited 100ms for
+    video buffers"
+  * [208e2f5] Add some extra NULL pointer protection in the main decoder
+    loop.
+  * [fc09367] Fix setting the display refresh rate in live tv.
+  * [f3ddc58] Backport to fixes/0.24.
+  * [52f8df1] Backport to fixes/0.24.
+  * [4e4653f] One change got committed by mistake
+  * [0d719aa] Following SHA: 9dc22bcc223e753d072dcdb2910ea271d377a5ef.
+    Add a little bit of leeway when checking the alsa buffer size, as
+    alsa may round down the value.
+  * [8115c44] Tidy up the block processing in AddFrames by renaming
+    variables. Block size is properly calculated based on the source
+    channels. Properly cast all variables involved in 64 bits timecode
+    calculation as int64_t, and make all constants long long ones. Make
+    the code easier to re-read
+  * [1b695d7] Issue we were trying to fix in SHA:
+    312ef27cd0d5a8b515cf0ba2587bdc2ba94aac28 were in fact related to the
+    alsa hardware buffer size being too low. And the calculation for
+    what the correct buffer size should be being incorrect, we never got
+    the proper value displayed/set. For 5.1 32 bits LPCM, 48kHz a
+    minimum buffer size should be 225kB. Alsa default is 64kB
+  * [3a0bc28] Simplify upmixing and fix some issues, in particular
+    timestamp that could be incorrect under some circumstances, fix
+    writing silence to the audio card when in pause mode (we could under
+    some circumstances not write enough data leading to underruns
+  * [cfd7b78] Remove the state change QWaitCondition from the TV class.
+  * [3e29dab] Left justify CC-608 captions.
+  * [6bb60cd] Minor CC-608 caption display optimisation.
+  * [7b4f3fb] Don't create an additional thread for media playback.
+  * [8155c43] Fix control socket call used for Video._playOnFe().
+  * [df2d58b] Fix missing parameter in SG filelist query.  Patch from
+    fedora a t ready2think.
+  * [aec0097] fix CPU flags in libmythsoundtouch
+  * [ee57332] Backport b674e521028d49193c7d from HEAD to branch
+    fixes/0.24
+  * [3e9463e] Following [98a196], fix same logic error used in the
+    settings which prevented selecting 7.1 unless audio advanced was
+    selected
+  * [5cd75db] Fix logic error that forced to have audio advanced checked
+    to get 7.1 LPCM
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Tue, 14 Dec 2010 10:32:47 -0600
+
+mythtv (2:0.24.0+fixes.20101207.d3d2640-0ubuntu1) natty; urgency=low
+
+  [ Mario Limonciello ]
+  * Modify the get-orig-source rule to use launchpadlib to try to fetch the file
+    from the archive instead.
+  * Stop on runlevels [016] rather than on the start of shutdown job. (LP: #542627)
+  * Move packaging to git based commands.
+  * If no themes are included, don't make bad theme stubs in debian/control.
+  * Update control files.
+  * Add an epoch because of the changing fixes->fixes and trunk->master to allow
+    proper upgrades.
+  * In ppa git checker helper, if no hash returned, don't error up.
+  * If running on a master build, have the update-control-files rule recommends
+    mythtv-dbg.
+  * Update standards version.
+  * Force pic support on as much of the build as possible. (LP: #684941)
+  * Move mythweb's set -e into the script invokation to quiet lintian.
+  * Add python dependency to mythtv-common.
+  * Demote libmythtv-perl depends to recommends on mythtv-backend.
+  * Don't run the permissions fix up on python files smaller than 1 block.
+  * Fixup the extra docs cleanup for mythweb.
+  * >>Upstream changes since last upload (11ee9c5):
+  * [d3d2640] MythArchive: Update the script to look for the fonts in
+    the new location.
+  * [011ffd5] Fix file streaming to stay working past 4G
+  * [ecbbcf8] Backport from master to fixes/0.24.
+  * [fe9d48e] Move toLower to the correct location
+  * [e4ea220] Add gitignores to fixes/0.24 too
+  * [dc4868a] Tweak PWD in the Makefile to be more specific
+
+  [ Thomas Mashos ]
+  * Make mythplugins replace mythmovies
+  * Make mythplugins replace mythmovies in debian/control.in
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Tue, 07 Dec 2010 02:42:49 -0600
+
+mythtv (1:0.24.0+fixes27305-0ubuntu1) natty; urgency=low
+
+  [ Mario Limonciello ]
+  * New 0.24 checkout (27305)
+  * Modify the upstart script to load the LANG first. (LP: #541042)
+  * Modify configure_mythplugins_without_mythtv_installed.patch to remove 
+    SYSROOT from the mytharchive build process for it's additional support 
+    files. (LP: #674626)
+  * Remove unused package, mythmovies from build process.
+  * Clean up the dependencies of a few packages, and harden them to the binary
+    version.
+  * Disable XvMC as it's causing crashes.  VDPAU is better off in these 
+    situations anyhow (LP: #660833)
+  * Remove sparc support.
+  * Make sure mysql is pingable before starting the backend (LP: #609402)
+  * Fixup some linitians:
+    - Extra license files
+    - Longer extended descriptions
+    - Duplicated synopsis
+    - Init.d script
+  * Add a new debian/rules rule called 'update-upstream-changelog'.  
+    This finds all of the most recent svn commit messages and 
+    creates changelog entries.
+  * Add a debian/README.Debian for explaining how to work with the package.
+  * In the update-upstream-changelog rule, search for the word mythbuntu
+    in the version string.  If found, find the latest version on the PPA
+    to compare against.
+  * Get rid of the newest-revision rule in favor of one that will actually
+    update the changelog/checkout to the new version.
+  * Add a new helper script debian/do-new-release.sh that will run all of
+    these common tasks in preparation for an upload to ubuntu.
+
+  [ Thomas Mashos ]
+  * Set backend to not respawn if it dies 2 times in 1 hour (LP: #654846)
+  * Move metadata scripts and internetcontent to mythtv-common
+  * Fixed Replaces for mythtv-common
+  * Added python and perl bindings as recommends for BE/FE
+  * Fixes replaces in control.in for mythtv-common (LP: #676791)
+  * Added bindings as recommends to FR and BE in control.in
+  * Added Breaks mythtv-backend to mythtv-common (LP: #677206)
+  * Added conflicts/replaces for mythplugins-dbg to mythtv-dbg
+  * Added script to find latest mythtv svn revision in PPA
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Sat, 20 Nov 2010 13:19:58 -0600
+
+mythtv (1:0.24.0+fixes27162-0ubuntu1) natty; urgency=low
+
+  [ Mario Limonciello ]
+  * Drop 36_setgroups.  Been merged upstream.
+  * Add upstart script into the packaging.  It's been dropped upstream.
+    ref svn 24280 upstream.
+  * Bump version to 0.24 fixes r27162
+  * Refresh patches due to upstream changes:
+    * Mythfilldatabase logging
+    * Force dbus reboot/halt.
+    * Default directories.
+    * Python 2.6
+    * proper shutdown behavior for ubuntu.
+  * Drop 40_libudev.  Merged upstream.
+  * Drop 09_perl_bindings_prefix.  Merged upstream.
+  * debian/rules: cleanup deprecated configure options.
+  * Install mythpreviewgen into mythtv-frontend (LP: #616083)
+  * Remove faad support, no longer listed in configure, fixes FTBFS.
+  * remove circular dependency.
+  * Reduce zealousness in files cleaned in clean rule.
+  * Remove qmake invocation.
+  * Add depends on python-mysqldb
+  * Install metadata to /usr/share/mythtv so it can be used by MNV.
+    (LP: #624064)
+  * Add a --list-missing option to make sure that all packaged files
+    get installed, and the build fails otherwise.
+  * Correct the missing locales and fonts.
+  * Install python and perl directly into their appropriate directories.
+  * Remove dummy libmyth-perl package.
+  * Modify ubuntu shutdown behavior patch to only use dbus if commands fail.
+  * Update shutdown patch for upstream recommendations.
+  * Conflicts/Replaces on old libmyth package (LP: #665402)
+  * Merge mythtv/mythplugins/myththemes source packages into one.
+  * Add a new get-svn-source rule to use with mythbuntu-weekly-build.
+  * In the update-control-files rule, update the ABI as well.
+  * Conflicts/Replaces for no longer used mythplugins-dbg package.
+  * Drop references to mythplugins-dbg in the apport rules.
+  * Fix the installation of mythmusic. (LP: #672045)
+  * Create a mysql.txt symlink from mythtv-setup as well.
+
+  [ Gerald Barker ]
+  * Copy 'internetcontent' scripts to /usr/share/mythtv/ as part of
+    mythbackend install so they can be requeted by MythNetvision
+
+  [ Thomas Mashos ]
+  * Added missingok for mirobridge log in logrotate (LP: #581283)
+  * Updated perl bindings patch for upstream changes (LP: #586293)
+  * Added libqt4-webkit-dev dependency to satisify maverick FTBFS
+  * Added new python and perl dependencies
+  * Moved backup and restore scripts from mythtv-database to mythtv-common
+  * Added Replaces for mythtv-common (LP: 622983)
+
+  [ John Baab ]
+  * Fixed missing log folder for frontend only install (LP: #642992)
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Thu, 11 Nov 2010 11:51:35 -0600
+
+mythtv (0.23.1+fixes26437-0ubuntu1) maverick; urgency=low
+
+  * New snapshot, 26437.
+  * Drop qt47_support.patch, newer, bigger, better version upstream.
+  * Drop configure_missing_check, iz now upstream too.
+  * Refresh fuzzy patches.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Thu, 23 Sep 2010 22:53:26 -0500
+
+mythtv (0.23.1+fixes26192-0ubuntu1) maverick; urgency=low
+
+  * New snapshot, 26192.
+    - Fixes channel scan crashes (LP: #632756)
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Thu, 09 Sep 2010 23:41:28 -0500
+
+mythtv (0.23.1+fixes26057-0ubuntu1) maverick; urgency=low
+
+  * New snapshot, 26057.
+  * Simplify the upstart script.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Sat, 04 Sep 2010 20:39:54 -0500
+
+mythtv (0.23.1+fixes25842-0ubuntu2) maverick; urgency=low
+
+  * Rebuild without accidentally added patch 
+    debian-changes-0.23.1+fixes25842-0ubuntu1.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Wed, 25 Aug 2010 12:10:29 -0500
+
+mythtv (0.23.1+fixes25842-0ubuntu1) maverick; urgency=low
+
+  [ Thomas Mashos ]
+  * Added libqt4-webkit-dev dependency to satisify maverick FTBFS
+  * Moved backup and restore scripts to mythtv-common from mythtv-database
+  * Added Replaces for mythtv-common (LP: 622983)
+
+  [ Mario Limonciello ]
+  * Add qt47_support.patch to fix FTBFS on Maverick.
+  * Update checkout to r25842
+  * Update to 0.23.1 based checkouts.
+  * Reverse build depends for libjack to fix virtual packages problems.
+  * Source debconf stuff in all scenarios for mythtv-common postinst.
+  * Add configure_missing_check.patch to fix FTBFS on Maverick.
+  * Only apply qt47_support.patch and missing_check.patch on Maverick
+    to prevent potential issues on autobuilds for Lucid.
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Wed, 25 Aug 2010 09:19:37 -0500
+
+mythtv (0.23.0+fixes25138-0ubuntu1) maverick; urgency=low
+
+  [ Mario Limonciello ]
+  * new upstream checkout (25138)
+
+  [ Thomas Mashos ]
+  * Added missingok for mirobridge log in logrotate (LP: #581283)
+  * Backend now waits for udev to finish (LP: #556204)
+  * Added patch to properly detect dbus during compile (LP: #574877)
+
+ -- Thomas Mashos <tgm4883@xxxxxxxxx>  Sat, 19 Jun 2010 23:11:04 -0700
+
+mythtv (0.23.0+fixes24158-0ubuntu2) lucid; urgency=low
+
+  * debian/patches/proper_shutdown_behavior_for_ubuntu.patch: 
+    - Drop support for a configurable shutdown or reboot command in the GUI
+    - Only use DBUS for shutdown and halt
+
+ -- Mario Limonciello <Mario_Limonciello@xxxxxxxx>  Fri, 23 Apr 2010 10:56:00 -0500
+
+mythtv (0.23.0+fixes24158-0ubuntu1) lucid; urgency=low
+  
+  * New upstream snapshot (r24158)
+    - work around XMLtv bug causing obscenely poor response.
+  * debian/control: Build-Depend on libmysqlclient16-dev, as previous 
+    depends are being removed from the archive. (LP: #563053)
+
+ -- Dave Walker (Daviey) <DaveWalker@xxxxxxxxxx>  Fri, 16 Apr 2010 16:47:24 +0100
+
+mythtv (0.23.0+fixes24133-0ubuntu1) lucid; urgency=low
+
+  [ Dave Walker (Daviey) ]
+  * New upstream snapshot (r24133)
+    - Fixes crash of mythfrontend when upconverting audio to 5.1 (LP: #550562)
+    - Improve Jamu handling of invalid database data (LP: #549352)
+    - Remove mythtranscode's internal copy of the slow-delete code and instead 
+      send a request to the backend to delete the file. (LP: #481104)
+    - LiveTV & recording with V4L cards on 64-bit backend fixed. (LP: #562690)
+  * debian/mcc-mirobridge/*: New icon, UI alignment changes and description 
+    text added.  Courtesy of R. Doug Vaughan.
+  * debian/rules: Added cxx option "-maltivec" to PowerPC specifc configure 
+    option to fix FTBFS for that architecture. (LP: #559614)
+
+  [ Mario Limonciello ]  
+  * 40_libudev.path:
+    - Add -ludev to the library check.
+  * debian/control:
+    - Drop linux-libc-dev build-dep.
+  * Actually disable halt and reboot commands by default.
+
+ -- Dave Walker (Daviey) <DaveWalker@xxxxxxxxxx>  Thu, 15 Apr 2010 00:04:14 +0100
+
+mythtv (0.23.0+fixes23820-0ubuntu1) lucid; urgency=low
+
+  * New upstream snapshot (r23820)
+  * debian/patches/40_libudev.patch: Use libudev to get the information
+    instead of calling udevinfo which has been superseded by udevadm,
+    which is not compatiable.  (LP: #479509)
+  * debian/control: Added Build-Depends of libudev-dev, linux-libc-dev
+    to satisfy 40_libudev.patch.
+  * debian/mcc-mirobridge/, debian/mythtv-backend.install:
+    Install the Mythbuntu-Control-Centre plugin for mirobridge
+    if mythtv-backend is installed. (LP: #520731)
+  * Refreshed patches.
+  * debian/changelog: Fixed old entry that had a non-valid email address
+    causing lintian errors.
+
+ -- Dave Walker (Daviey) <DaveWalker@xxxxxxxxxx>  Sat, 27 Mar 2010 19:18:15 +0000
+
+mythtv (0.23.0+fixes23789-0ubuntu2) lucid; urgency=low
+
+  * debian/rules:
+    - Compile-type=debug for better debugging purposes.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 25 Mar 2010 23:22:48 -0500
+
+mythtv (0.23.0+fixes23789-0ubuntu1) lucid; urgency=low
+
+  [ Jamie Bennett ]
+  * Fix FTBFS on armel (LP: #537714)
+
+  [ Mario Limonciello ]
+  * mythtv-{common,backend}.{config,templates,postinst}: (LP: #483748)
+    - Simplify debconf questions by avoiding showing the generated pw
+    - Don't warn about mythtv group.
+    - Don't notify about running mythtv-setup.  This is optional (but
+      of course encouraged!)
+  * Set version to include a "+" delimitter.
+  * Restore libfaad-dev dependency. (LP: #546552)
+
+  [ Dave Walker (Daviey) ]
+  * New snapshot (r23789), based from 0.23-fixes.
+  * debian/control:
+    - mythtv-frontend set to Conflict with mythflix, as it's dropped
+      upstream. (LP: #544521)
+    - Remove unnecessary and potentially problematic use of Pre-Depends.
+    - Set the debug package to Priority extra.
+    - Change *-perl Section's from libs to perl
+    - add ${shlibs:Depends} for mythtv-common Depends field
+    - Minor spelling fix.
+    - Fixes the long description for one of the packages, ensuring the
+      description doesn't exceed 80 characters.
+    - Vcs-* set to -fixes, rather than -trunk.
+  * debian/rules:
+    - Use debconf-updatepo to update translations when required
+    - Ensure license files are not included in the binary packages, except 
+      for debian/copyright.
+    - Fixes the permissions of certain files in the packaging.
+  * debian/copyright:
+    - updated to reflect that mythtv is GPL-2 only.
+    - inserted better licence statement and Copyright reference.
+  * debian/mythtv-*.templates
+    - Simplified strings; removed verbosity and improved readability.
+  * Prevent the maintainer scripts from failing in case any questions 
+    can't be displayed.
+  * Added holding debian/mythtv-frontend.config, mainly to appease lintian.
+  * debian/mythtv-frontend.menu: Changed section to Applications/Graphics.
+  * debian/mythtv-backend.postinst: Load debconf libraries.
+  * debian/source.lintian-overrides: Removes the unecessary override of the 
+    binNMU warnings.
+  * Fix perl binding installation.
+
+ -- Dave Walker (Daviey) <DaveWalker@xxxxxxxxxx>  Tue, 23 Mar 2010 19:32:33 +0000
+
+mythtv (0.23.0~trunk23623-0ubuntu1) lucid; urgency=low
+
+  [ Dave Walker ]
+  * debian/control:  Added quilt as a build-depends, primarily
+    for karmic builds.
+
+  [ Mario Limonciello ]
+  * New checkout (r23623).
+    - Fixes audio issues w/ ac3 audio.
+  * debian/patches/36_setgroups_too:
+    - Set the right args for setgroups. (LP: #524822)
+  * debian/rules:
+    - Explicitly set all shell scripts executable.  Fixes problems on < lucid
+      builds.
+  * debian/control:
+    - Correct the replaces statements. (LP: #527288)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 27 Feb 2010 14:33:45 -0600
+
+mythtv (0.23.0~trunk23567-0ubuntu4) lucid; urgency=low
+
+  [ Mario Limonciello ]
+  * debian/control:
+    - Build-depends on libxrandr-dev for xrandr support.
+    - Restore Build-depends on libfftw3-dev (not really a top secret option)
+  * debian/source_mythtv.py:
+    - Don't use bool, apport doesn't like them.
+  * debian/patches/36_setgroups_too:
+    - Run setgroups() before setgid/setuid (LP: #524822)
+
+  [ Andres Mejia ]
+  * Refresh all patches. Use '-p ab' format with no index or timestamps.
+  * Add comment for each patch.
+  * Update debian/control file for minor cosmetic changes.
+  * Don't depend on transcode for mythtv-transcode-utils since it's not needed.
+  * Don't Build-Depends-Conflicts on libmyth-dev.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 21 Feb 2010 12:13:59 -0600
+
+mythtv (0.23.0~trunk23567-0ubuntu3) lucid; urgency=low
+
+  * Rebuild for pulseaudio problems caused from an earlier libpulse-dev
+    package. (LP: #524191)
+  * debian/mythtv-setup.sh:
+    - Fix an extra '-' that was included.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 18 Feb 2010 22:54:59 -0600
+
+mythtv (0.23.0~trunk23567-0ubuntu2) lucid; urgency=low
+
+  * debian/mythtv-backend.preinst:
+    - Remove old /etc/default/mythtv-backend if not modified.  The upstart job
+      still optionally use it, but it will cause the backend to not drop
+      permissions with the old contents.
+  * debian/mythtv-database.templates:
+    - flush out unused templates.
+  * debian/rules:
+    - Add some confflags from ffmpeg's debian/rules to try a little harder
+      on armel and powerpc.
+  * debian/mythtv_0.23.0.sql:
+    - Update to the current schema in this build.
+    - Set default security pin so UPNP will work OOTB.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 18 Feb 2010 01:35:24 -0600
+
+mythtv (0.23.0~trunk23567-0ubuntu1) lucid; urgency=low
+
+  * Bump builds to start with 0.23
+  * debian/control: 
+    - Fix vcs-bzr
+    - Update depends to include ttf-droid, ttf-liberation, and ttf-dejavu.
+      (LP: #224114)
+    - Drop quilt build-dep, it appears to be included w/ dh7
+    - Bump standards version
+  * Introduces stable pulseaudio support (In Theory! :)) (LP: #311328)
+  * Print message to stdout for MythTV.pm (LP: #327406)
+  * debian/patches:
+    - Drop 16_hal_shutdown.  No longer necessary after r23518.
+  * Allow shutdowns when mythtv is running (LP: #174712)
+    - Comes from upstream changeset r23455.
+  * Mythbackend now supports the --user flag to drop permissions from
+    upstream changeset r23521.
+  * Use the upstart script from the upstream contrib directory instead.
+    Now uses the --user flag to drop permissions. (LP: #445953)
+  * Update 30_python26_transition for changes upstream.
+  * mythtv-database.templates:
+    - refer to the proper location for backups.
+  * Switch to use the upstream backup scripts. (LP: #469792)
+  * Helps with HDTV stuttering. (LP: #451394)
+  * Drop old debian/myth-*.sh scripts since we now use dbus for shutdown
+    and reboot etc.
+  * Drop old debian/mythtv-backend.default.  It's just available for upgrades.
+  * Drop old debian/mythtv-backend.init initscript.  We're only supporting
+    upstart going forward with these builds.
+  * Drop unnecessary patch, 02_settings_pro.dpatch
+  * Drop unused patch, 23_video_device_symlinks.dpatch
+  * Drop unused patch, 25_skiploop_option.dpatch
+  * Convert packaging to dh7.
+  * Convert packaging to source v3 (w/ quilt).
+  * Add debian/README.source as a symlink to the quilt README.source
+  * Convert all .files into .install.
+  * Refresh patches as quilt format instead
+  * Rewrite get-orig-source rules to parse the changelog for version info.
+  * Drop any of the Top Secret Options build flags
+  * Include a custom snippet for debian/rules mythtv packages in libmyth-dev.
+  * Drop old, unused templates from debian/templates.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 16 Feb 2010 21:23:04 -0600
+
+mythtv (0.22.0+fixes23527-0ubuntu1) lucid; urgency=low
+
+  [ Mario Limonciello ]
+  * New snapshot (r23527)
+  * debian/mythtv-database.postinst:
+    - If the mythtv.cnf conffile is missing, don't freak out. (LP: #477926)
+  * debian/control:
+    - Build depends on libvdpau-dev for armel too.  We don't know if
+      tegra2's will be using VDPAU, but if they do, this will help.
+
+  [ Thomas Mashos ]
+  * Populate directories to hold videos in prefilled SQL file. (LP: #469583)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 14 Feb 2010 19:13:55 -0600
+
+mythtv (0.22.0+fixes23193-0ubuntu1) lucid; urgency=low
+
+  * New snapshot (r23193)
+  * debian/patches/09_perl:
+    - Correct the install path which broke when we renamed the packages.
+      (LP: #498355)
+  * debian/control:
+    - Do the replaces for anything below 22958 to cover other PPA builds
+      too. (LP: #498810)
+  * debian/source_mythtv.py:
+    - Update the hook to indicate whether the user has installed mythtv-dbg
+      or mythplugins-dbg at the time of the crash.
+  * debian/mythtv-common.links:
+    - Create symlinks for the mythplugins and myththemes source packages to
+      use the same apport hook as mythtv.
+  * debian/rules:
+    - Try harder to mark perl and python scripts executable.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 19 Jan 2010 20:43:24 -0600
+
+mythtv (0.22.0+fixes22957-0ubuntu2) lucid; urgency=low
+
+  * debian/control:
+    - Actually do the replaces for anything below 22957 instead to cover any
+      PPA builds that people upgrade from or the very early lucid builds.
+      (LP: #494705)
+
+ -- Mario Limonciello <mario_limonciello@xxxxxxxx>  Wed, 09 Dec 2009 16:14:29 -0600
+
+mythtv (0.22.0+fixes22957-0ubuntu1) lucid; urgency=low
+
+  * Update to a new snapshot. (r22957) (LP: #493405)
+  * debian/control:
+    - Drop mythstream from suggests.
+    - Replaces on mythtv-frontend
+    - Make mythtv-common arch all.  All roles can support mythshutdown,
+      and this fixes the archive skew from an i386 and amd64 build being
+      out of sync.
+    - Rename libmyth-perl to libmythtv-perl per debian request. (LP: #XXXXX)
+  * Move mythshutdown into mythtv-common.
+  * debian/libmyth-perl.files, rename to libmythtv-perl.files
+  * debian/rules:
+    - Remove references to libmyth-perl
+    - Set all perl and python scripts executable (LP: #482585)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 08 Dec 2009 19:45:24 -0600
+
+mythtv (0.22.0+fixes22899-0ubuntu1) lucid; urgency=low
+
+  * Update to a snapshot post 0.22 release (r22899).
+  * Drop 31_vdpau_profiles.dpatch as it's been merged upstream.
+  * Install mythconverg_backup and mythconverg_restore scripts
+    in the mythtv-database package rather than mythtv package.
+  * debian/control:
+    - Drop version number in dependencies to myth* to prevent
+      version skew from PPA builds.
+    - Build depends on open source libvdpau optionally.
+    - Build depends on libxvidcore-dev | libxvidcore4-dev for libxvidcore
+      transition happening in lucid. (LP: #486169)
+  * Generate a -dbg package so that builds from a PPA can actually
+    be useful.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 24 Nov 2009 21:43:38 -0600
+
+mythtv (0.22.0+fixes22594-0ubuntu1) karmic; urgency=low
+
+  * New upstream snapshot.  
+    - This should be the final one for Karmic.
+    - Unfortunately, this will be a commit or two shy of the actual
+      0.22 release.
+    - Fixes upgrade scenarios from 0.21 where themes that previously
+      existed are now gone.
+  * debian/patches/31_vdpau_profiles.dpatch:
+    - Backport of trunk 22466 to add VDPAU profiles for 0.22 by default.
+  * debian/mythtv-backend.upstart:
+    - Stop on 016 rather than on "starting shutdown".
+      Prevents issues with the backend respawning during reboot.
+  * debian/dialog.sh:
+    - Use kdesudo rather than kdesu. (LP: #458177)
+  * debian/source_mythtv.py:
+    - Don't grab jamu or hardware logs.  Launchpad is timing out because
+      actual crashes are too big when uploaded, so we'll try to get these
+      pieces on a case by case basis instead.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 18 Oct 2009 12:57:26 -0500
+
+mythtv (0.22.0~zrc1-0ubuntu1) karmic; urgency=low
+
+  * Upstream 0.22 rc1 snapshot.
+    - Had to name the version funny because we've done builds with trunk in
+      the name and trunk is greater than rc. (zrc1 rather than rc1)
+  * Legacy init script needs different arguments.  Only affects
+    Jaunty & earlier builds. (LP: #450278)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 14 Oct 2009 21:18:18 -0500
+
+mythtv (0.22.0~trunk22413-0ubuntu1) karmic; urgency=low
+
+  [ Gary Butters ]
+  * debian/control:
+    - Depends on wmctrl
+  * Add support to use wmctrl to bring mythfrontend to the foreground
+    if already running. (LP: #352077)
+
+  [ Mario Limonciello ]
+  * New upstream snapshot (r22413)
+  * Add a bug_pattern_base to the mythbuntu crashdb.
+  * Fix mythbuntu crashdb to refer to project not product.
+  * Simplify the apport hook so that we can catch on any set of non
+    distro packages.
+  * debian/rules:
+    - Make *sure* /etc/default/mythtv-backend is getting installed.
+      It seems that dh_installinit didn't want to install it when we use upstart.
+
+ -- Mario Limonciello <mario_limonciello@xxxxxxxx>  Mon, 12 Oct 2009 17:13:20 -0500
+
+mythtv (0.22.0~trunk22359-0ubuntu1) karmic; urgency=low
+
+  [ Mario Limonciello ]
+  * New upstream checkout (r22359)
+    - Themes have been shuffled around a bunch.
+    - Fixes transcode arguments (LP: #429089)
+  * debian/control:
+    - Conflicts and replaces for themes that are now part of this package
+  * debian/mythtv-setup.desktop:
+    - Set to a real icon.
+  * Set up some symlinks for the dejavu fonts so they aren't installed several
+    times.
+  * debian/rules:
+    - Remove references to firewire_tester.  We're not building it.
+  * Simplify upstart script a bit.
+  * Drop old logic for checking that ~mythtv/.mythtv/mysql.txt exists, and move
+    it into the postinst.
+  * Ship a mythbuntu crashdb for apport to catch crashes and submit against the
+    mythbuntu project.
+  * Add an apport hook for mythtv packages.
+    - PPA builds will be directed at launchpad.net/mythbuntu
+    - Normal builds will end up against launchpad.net/ubuntu/+source/mythtv
+
+  [ Dave Walker ]
+    * Incremeted to new upstream version to current trunk head.
+    * Replaced sysv style init script with Upstart.
+      - debian/control: Bump build-dependency on debhelper for Upstart-aware
+        dh_installinit (debhelper >=7). 
+      - debian/mythtv-backend.upstart added.
+    * Standards-Version bumped to 3.8.2.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 11 Oct 2009 13:43:15 -0500
+
+mythtv (0.22.0~trunk22304-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout (r22304)
+    - Fixes crash during image loading of mythfrontend (LP: #445173)
+    - Disables pulseaudio harder, fixing sound playback when it's installed.
+      (LP: #436792)
+  * debian/mythtv_0.22.0.sql:
+    - Set Internal as the default player across the board.  Looks like some
+      areas were previously missed.  This only affects new installs.
+      (LP: #445984)
+  * debian/patches/10_mythfilldatabase_log.dpatch:
+    - Update to actually log to a file not a directory.
+  * debian/patches:
+    - Drop any patches that weren't actually being applied.
+  * Set default theme to Mythbuntu rather than Mythbuntu-9.10 since upstream
+    accepted it without a version number applied.
+  * debian/mythtv-database.{postinst,config}:
+    - Use the debian system maintainer account to set things up if possible.
+    - Drop broken logic for trying to detect when slow writes are needed.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 07 Oct 2009 23:24:05 -0500
+
+mythtv (0.22.0~trunk22242-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout (r22242)
+    - Fixes protocol mismatch in 22167 (LP: #440807)
+  * mythtv_0.22.0.sql:
+    - Set correct path for movie directories (LP: #440680)
+    - Set mytharchive work directory (LP: #439213)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 04 Oct 2009 20:43:11 -0500
+
+mythtv (0.22.0~trunk22167-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout (r22167).
+    - Fixes some segfaults.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri, 02 Oct 2009 00:23:18 -0500
+
+mythtv (0.22.0~trunk22101-0ubuntu1) karmic; urgency=low
+
+  [ Mario Limonciello ]
+  * New upstream checkout (r22101)
+  * Try to guard and make sure that ~mythtv is read from /etc/passwd 
+    rather than assuming it's /home/mythtv.
+
+  [ John Baab ]
+  * debian/mythtv-common.postinst:
+    - Added symlink for /home/mythtv/.mythtv/config.xml
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 29 Sep 2009 01:33:23 -0500
+
+mythtv (0.22.0~trunk21954-0ubuntu1) karmic; urgency=low
+
+  [ Mario Limonciello ]
+  * New upstream checkout (r21954)
+  * debian/mythtv_0.22.sql:
+    - Update to new schema, 1244.
+  * debian/mythtv.desktop:
+    - Use a real icon.
+  * debian/mythtv-frontend.files:
+    - Rename mythtv to mythavtest (see upstream 21904 for details)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 20 Sep 2009 02:13:10 -0500
+
+mythtv (0.22.0~trunk21785-0ubuntu2) karmic; urgency=low
+
+  * debian/control:
+    - Conflicts/replaces for mythcenter themes. (LP: #428211)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri, 11 Sep 2009 20:13:57 -0500
+
+mythtv (0.22.0~trunk21785-0ubuntu1) karmic; urgency=low
+
+  [ Mario Limonciello ]
+  * New upstream checkout (r21785)
+  * debian/mythtv-backend.postinst:
+    - Correct a typo in the postinst.
+  * debian/mythtv-common.postinst:
+    - Don't fail on actions that happen to /root (LP: #399120)
+
+  [ Thomas Mashos ]
+  * Removed default media directory db setting
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri, 11 Sep 2009 19:17:47 -0500
+
+mythtv (0.22.0~trunk21742-0ubuntu2) karmic; urgency=low
+
+  * debian/control:
+    - Conflicts for mythstream on mythtv-frontend (LP: #415922)
+  * debian/mythtv-backened.postinst, debian/mythtv-backend.dirs:
+    - Create Coverart, Fanart, Screenshots, and Banners directories so jamu
+      can have somewhere to store stuff to.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 10 Sep 2009 10:25:37 -0500
+
+mythtv (0.22.0~trunk21742-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout (21742)
+    - Fixes FTBFS on PPC. See changeset 21571 for more details.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 08 Sep 2009 23:08:37 -0500
+
+mythtv (0.22.0~trunk21556-0ubuntu3) karmic; urgency=low
+
+  * debian/mythtv-database.postinst:
+    - Don't hardcode the location of SQL database to a particular filename.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 02 Sep 2009 19:49:25 -0500
+
+mythtv (0.22.0~trunk21556-0ubuntu2) karmic; urgency=low
+
+  * debian/mythtv-database.postinst:
+     - Set BlackCuves as default OSD and Mythbuntu-9.10 as default theme.
+  * debian/mythtv_0.22.0.sql:
+     - Update to the current database schema (1242)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 02 Sep 2009 10:09:26 -0500
+
+mythtv (0.22.0~trunk21556-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout. (r21556)
+    - Fixes memory leaks with UPNP enabled. (LP: #200761)
+  * debian/control:
+    - Build depend on nvidia 185 or nvidia 180.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 23 Aug 2009 12:18:48 -0500
+
+mythtv (0.22.0~trunk21333-0ubuntu1) karmic; urgency=low
+
+  * New upstream checkout (21333)
+    - Fixes crash with linearblend filter. (LP: #414870)
+  * mythtv_0.21.0.sql:
+    - Set to default to Mythbuntu-9.10 theme for new installs.
+  * rules:
+    - Set the /usr/share/mythtv/*.pl file to be
+      executable as the backend wants to run it regularly.
+    - Update SOURCE_VERSION in version.sh as it's not in version.pro
+      anymore.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 17 Aug 2009 11:32:56 -0500
+
+mythtv (0.22.0~trunk21328-0ubuntu0) karmic; urgency=low
+
+  [ Thomas Mashos ]
+  * Remove arts support
+  * Add libqt4-opengl-dev as build dep
+
+  [ Mario Limonciello ]
+  * New upstream snapshot.  Switch to 0.22 based builds in preparation
+    for upstream's 0.22 release, which should be ready before karmic.
+  * debian/control: Build depend on nvidia 180
+  * debian/control: Conflicts/Replaces on mythcontrols
+  * debian/rules: enable vdpau
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 17 Aug 2009 01:23:08 -0500
+
+mythtv (0.21.0+fixes21261-0ubuntu1) karmic; urgency=low
+
+  * New upstream -fixes snapshot (21261)
+    - Fixes HDHomerun compatibility issues with reboot. (LP: #384556)
+    - LCDproc compatibility. (LP: #392362)
+  * debian/control:
+    - Build depends on libpulse0 so that pulseaudio disabling code works.
+  * debian/rules:
+    - Don't compress perl and python scripts that are installed. (LP: #380812)
+  * debian/mythtv-backend.init:
+    - If for some reason $USER_HOME doesn't exist, make it. (LP: #326702)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 16 Aug 2009 00:26:55 -0500
+
+mythtv (0.21.0+fixes19961-0ubuntu8) jaunty; urgency=low
+
+  * Remove any references to creating V4L devices.  Not necessary
+    since Ubuntu is exclusively UDEV.
+  * Correct the exit code in another portion of the init script. (LP: #346694)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 22 Mar 2009 17:53:24 -0500
+
+mythtv (0.21.0+fixes19961-0ubuntu7) jaunty; urgency=low
+
+  * debian/control:
+    - Depends on lsb-release.
+  * Add 30_python26_transition.dpatch to allow python 2.6 builds to work.
+    (LP: #342870)
+  * debian/control, debian/rules:
+    - Use python-central instead of python-support.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 16 Mar 2009 23:22:46 -0500
+
+mythtv (0.21.0+fixes19961-0ubuntu6) jaunty; urgency=low
+
+  * Fixed problem where init script errors on install 
+
+ -- John Baab <john.baab@xxxxxxxxx>  Fri, 13 Mar 2009 15:52:09 -0400
+
+mythtv (0.21.0+fixes19961-0ubuntu5) jaunty; urgency=low
+
+  * fixed backend init script to correctly detect if a backend is running. 
+
+ -- John Baab <john.baab@xxxxxxxxx>  Thu, 26 Feb 2009 00:54:27 -0500
+
+mythtv (0.21.0+fixes19961-0ubuntu4) jaunty; urgency=low
+
+  * debian/rules:
+    - Drop old references to update-notifier that got missed from building
+      in an unclean tree.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 25 Feb 2009 17:07:19 -0600
+
+mythtv (0.21.0+fixes19961-0ubuntu3) jaunty; urgency=low
+
+  * Don't display an update-notifier message about failing to reconfigure
+    database.  This doesn't get along well with live disks. (LP: 334547)
+
+ -- Mario Limonciello <mario_limonciello@xxxxxxxx>  Wed, 25 Feb 2009 15:46:22 -0600
+
+mythtv (0.21.0+fixes19961-0ubuntu2) jaunty; urgency=low
+
+  * Fixed symlinking config.xml issue (LP: #327534) 
+
+ -- John Baab <john.baab@xxxxxxxxx>  Tue, 10 Feb 2009 17:08:38 -0500
+
+mythtv (0.21.0+fixes19961-0ubuntu1) intrepid; urgency=low
+
+  [ John Baab ]
+  * Fixes missing config.xml issue (LP: #220604)
+
+  [ Mario Limonciello ]
+  * Check whether $USER_HOME exists in mythtv-backend init
+    script before continuing on. Thanks Will Uther. (LP: #326702)
+  * Update branch to release-0-21-fixes rev #19961.  Pulls in
+    fix related to channel scanning and setting number correctly. (LP: #323769)
+ 
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 09 Feb 2009 08:49:29 -0600
+
+mythtv (0.21.0+fixes19556-0ubuntu6) jaunty; urgency=low
+
+  [ Thomas Mashos ]
+  * debian/control, debian/rules:
+    - Disable arts support as it's no longer part of jaunty. (LP: #320915)
+
+  [ Mario Limonciello ]
+  * debian/control, debian/rules:
+    - Drop external x264 support.  It's causing a FTBFS.
+
+ -- Mario Limonciello <mario_limonciello@xxxxxxxx>  Wed, 04 Feb 2009 11:09:10 -0600
+
+mythtv (0.21.0+fixes19556-0ubuntu5) jaunty; urgency=low
+
+  * No-change rebuild against libx264-65
+
+ -- Steve Langasek <steve.langasek@xxxxxxxxxx>  Wed, 04 Feb 2009 10:04:20 +0000
+
+mythtv (0.21.0+fixes19556-0ubuntu4) jaunty; urgency=low
+
+  * debian/mythtv-database.postinst:
+    - Clear out mythtv/mysql_mythtv_password when we've read
+      it from /etc/mythtv/mysql.txt.
+  * debian/patches/00list:
+    - actually apply 29_fix_mythwelcome.dpatch
+  * debian/patches/29_fix_mythwelcome.dpatch
+    - clean up .orig file and related mess
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Sun, 01 Feb 2009 13:10:24 +0100
+
+mythtv (0.21.0+fixes19556-0ubuntu3) jaunty; urgency=low
+
+  * debian/rules: Install udev rules into /lib/udev/rules.d
+  * debian/mythtv-backend.rules: Remove old rules if unchanged
+  * debian/control: Add breaks to ensure the right version of udev is used.
+
+ -- Scott James Remnant <scott@xxxxxxxxxx>  Mon, 12 Jan 2009 18:20:17 +0000
+
+mythtv (0.21.0+fixes19556-0ubuntu2) jaunty; urgency=low
+
+  * Re-upload last version with proper pull from bzr.
+    For some reason a lot of things got were missing
+    due to a broken merge.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 08 Jan 2009 22:31:26 -0600
+
+mythtv (0.21.0+fixes19556-0ubuntu1) jaunty; urgency=low
+
+  * New upstream fixes snapshot.
+    - Provides some UPNP fixes.
+  * debian/control:
+    - Promote pwgen to pre-depends for mythtv-common
+      so that it can be used in the .config.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 08 Jan 2009 21:55:34 -0600
+
+mythtv (0.21.0+fixes19136-0ubuntu3) jaunty; urgency=low
+
+  [ Michael Haas ]
+  * Drop debian/patches/28_fix_v4l.dpatch because upstream 
+    fixed this properly in r19250.
+
+  [ Mario Limonciello ]
+  * debian/mythtv-database.postinst:
+    - Don't reset the backend IPs unless you
+      are loading a database
+    - Pre-set mythbuntu theme.  If mythbuntu theme isn't
+      around, G.A.N.T. gets loaded instead, so no expected
+      regresssions.
+  * debian/mythtv-database.config:
+    - Try to get answer from mysql-server config if possible
+      this avoids asking admin pass question twice.
+    - Check if mysql binary is around before repeatedly
+      asking questions.
+   - Check if localhost that mysqld is running.  If it's
+      not, then don't keep asking questions.
+    - Pass on failed answer to postinst (don't reset)
+  * debian/mythtv-common.config:
+    - Display the password that is set, not just "value set"
+  * debian/mythtv-common.postinst:
+    - Only create a user if it doesn't already exist. (LP: #280974)
+  * debian/rules:
+    - Unset executable permissions on .sh and .d files in clean
+      section. (LP: #311573)
+    - Don't restart mythtv-backend on upgrade of packages.
+      Unexpected behavior might happen depending on what other packages
+      are installed at that time and what will still be installed.
+      The common use case for a problem here is dist-upgrades.
+      (LP: #298914)
+  * Store .sh and .d files as non executable in bzr to better reflect
+    flat packaging as seen in the archive.
+  * debian/patches/24_fix_h264_frame_counting.dpatch:
+    - Remove .orig file from the patch as it's unnecessary (LP: #311549)
+  * debian/mythtv-backend.postinst:
+    - If we are mounted on NFS, changing permissions will fail.  Don't
+      fail the postinst in this case. (LP: #299352)
+
+  [ TJ ]
+  * debian/rules:
+    - Cleanup files that upstream is forgetting to clean between builds.
+      (LP: #311552)
+
+ -- Mario Limonciello <mario_limonciello@xxxxxxxx>  Fri, 02 Jan 2009 14:28:58 -0600
+
+mythtv (0.21.0+fixes19136-0ubuntu2) jaunty; urgency=low
+
+  * Add 30_2.6.28_support.dpatch.  Fixes FTBFS when
+    working building against 2.6.28.
+  * debian/control:
+    - Drop references to ubuntu-mythtv-frontend
+    - Reorder build dep on lame so that apt-get build-dep
+      resolves correctly.
+  * Drop these files as they were only used by
+    ubuntu-mythtv-frontend:
+    - debian/background.xpm
+    - debian/dmrc
+    - debian/gdm.conf
+    - debian/mplayer-config
+    - debian/mythbuntu-gdm.conf
+    - debian/mythtv-xsession.desktop
+    - debian/openbox-menu.xml
+    - debian/startmythtv.sh
+    - debian/ubuntu-mythtv-frontend.postinst
+    - debian/ubuntu-mythtv-frontend.prerm
+  * debian/rules:
+    - Drop references to ubuntu-mythtv-frontend
+    - Install all sql files rather than a specific one
+    - Don't install dirs here.  Do that in specific files
+  * debian/session-settings:
+    - Drop some references to ubuntu-mythtv-frontend
+  * debian/mythtv_0.20.1.sql:
+    - Drop, we're at 0.21 now!
+  * debian/mythsql:
+    - Drop old unused script.
+  * debian/mythtv-backend.NEWS:
+    - Drop quite old NEWS file.  We're not updating it anyway.
+  * debian/debian/README.Debian:
+    - Drop.  The comments in here are pretty old and dated.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 14 Dec 2008 00:32:34 -0600
+
+mythtv (0.21.0+fixes19136-0ubuntu1) jaunty; urgency=low
+
+  [ Thomas Mashos ]
+  * Updated posters dir to /var/lib/mythtv/posters
+
+  [ Michael Haas ]
+  * New upstream snapshot.
+  * Added size restriction to frontend and backend logs (10M)
+    - (LP: #250776)
+  * debian/patches:
+    - Add 29_mythwelcome_fix.dpatch to prevent MythWelcome from quitting
+      spuriously (backports revision 18671 from trunk)
+
+  [ Dustin Kirkland ]
+  * debian/mythtv-database.config: test the validity of the input mysql
+    passphrase, up to 5 times (LP: #243504)
+
+  [ Mario Limonciello ]
+  * debian/mythtv-database.postinst:
+    - Clean up old code calls
+    - Adjust for changes to .config
+    - Make sure to clear root password
+  * debian/mythtv-common.config:
+    - Read mysql.txt before starting
+  * debian/mythtv-common.postinst:
+    - Clean up old file checks that are unnecessary.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 13 Dec 2008 18:39:01 -0600
+
+mythtv (0.21.0+fixes18722-0ubuntu1) intrepid; urgency=low
+
+  * Sync against release-0-21-fixes branch. Fixes:
+    - (LP: #260429)
+  * Update 24_fix_h264_frame_counting.dpatch to incorporate changeset
+    18542 from trunk <http://svn.mythtv.org/trac/changeset/18542>
+  * debian/patches/:
+    - drop 27_disable_deinterlacing_in_guide.dpatch because it's been
+      committed upstream
+    - add 28_fix_v4l.dpatch (LP: #259321)
+  * Add debian/mythtv-frontend.dirs back in (LP: #280792)
+  * Add kdesudo to list of graphical sudo providers in
+    debian/dialog_functions.sh to account for KDE 4 in Intrepid (LP: #274602)
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Wed, 15 Oct 2008 23:56:53 +0200
+
+mythtv (0.21.0+fixes18379-0ubuntu1) intrepid; urgency=low
+
+  * Sync against release-0-21-fixes branch:
+    - Fix inconsistent text in theme xml file (LP: #242000)
+  * Correct arguments for mythfrontend launching. (LP: #212604)
+  * Backport fix for slow guide (LP: #229949)
+  * debian/patches:
+    - 26_h264_ffmpeg_merge.dpatch: drop patch as it's been committed upstream
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Wed, 24 Sep 2008 00:57:01 +0200
+
+mythtv (0.21.0+fixes18207-0ubuntu6) intrepid; urgency=low
+
+  * debian/mythtv-backend.init: Add the 'status' action (LP: #251325).
+
+ -- Dustin Kirkland <kirkland@xxxxxxxxxx>  Wed, 03 Sep 2008 10:16:21 -0500
+
+mythtv (0.21.0+fixes18207-0ubuntu5) intrepid; urgency=low
+
+  [ Michael Haas ]
+  * Fix init script (LP: #263127)
+
+  [ Mario Limonciello
+  * Don't crash on init script installation. (LP: #261866)
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Mon, 01 Sep 2008 21:04:13 +0200
+
+mythtv (0.21.0+fixes18207-0ubuntu4) intrepid; urgency=low
+
+  * Update 25_skiploop_option w/ upstream requested changes.
+  * debian/control:
+    - Modify previous change by a nonmaintainer to re-include adept-notifier 
+      as an option.  Dropping it breaks hardy builds, and this package is
+      very often backported.
+    - Add Vcs-Bzr fields to deter further uploads without commiting back
+      to the branch.
+    - Add homepage field.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 28 Aug 2008 15:59:11 -0500
+
+mythtv (0.21.0+fixes18207-0ubuntu3) intrepid; urgency=low
+
+  * Recommends update-notifier-kde instead of adept-notifier
+
+ -- Anthony Mercatante <tonio@xxxxxxxxxx>  Thu, 28 Aug 2008 15:08:03 +0200
+
+mythtv (0.21.0+fixes18207-0ubuntu2) intrepid; urgency=low
+
+  * debian/control:
+    - Build depend on liblame-dev | libmp3lame-dev instead
+      since liblame-dev is gone for intrepid.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 27 Aug 2008 17:29:49 -0500
+
+mythtv (0.21.0+fixes18207-0ubuntu1) intrepid; urgency=low
+
+  * New checkout of release-0-21-fixes branch.
+  * debian/patches:
+    - drop 17_pvr_350_tvout_fix.dpatch, 07_glx-procaddressARB-configure.dpatch
+      and 15_hue_fix.dpatch because these changes have been committed
+      upstream
+    - add 24_fix_h264_frame_counting.dpatch,
+      25_skiploop_option.dpatch and 26_h264_ffmpeg_merge.dpatch.
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Wed, 27 Aug 2008 23:16:52 +0200
+
+mythtv (0.21.0+fixes17416-0ubuntu2) intrepid; urgency=low
+
+  * Build depend on xserver-xorg-video-openchrome or old libchrome*
+    packages (to not break building on earlier releases, but still allow
+    building on intrepid) (LP: #256540)
+  * Start mythfrontend.real from mythfrontend rather than another script
+    instance. (LP: #241015)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 16 Jul 2008 01:22:49 -0500
+
+mythtv (0.21.0+fixes17416-0ubuntu1) intrepid; urgency=low
+
+  * New checkout of release-0-21-fixes branch.
+  * debian/mythfrontend.sh:
+    - check for /etc/mythtv/session-settings when sourcing it. (LP: #220681)
+  * debian/mythtv-backend.postinst:
+    - check for directories before overriding (LP: #223988)
+  * drop debian/mythtv-database.postrm
+    - Wasn't doing anything productive but causing crashes. (LP: #213200)
+  * debian/control:
+    - Adjust dependencies to only build depend on chrome for i386 and 
+      amd64.  This should fix all other archs. (LP: #211125)
+  * add debian/patches/17_pvr350_tvout_fix:
+    - Fixes PVR-350 tv output's EPG.  (LP: #236498)
+      Thanks bal_zac for tracking this down.
+  * update debian/patches/07_glx-procaddressARB-configure
+    - Certain parts are absorbed upstream.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 01 Jun 2008 17:04:11 -0500
+
+mythtv (0.21.0+fixes16838-0ubuntu3) hardy; urgency=low
+
+  [ Michael Haas ]
+  * mythtv-common: add myth-reboot.sh, myth-halt.sh, myth-suspend.sh and
+    myth-hibernate.sh into /usr/share/mythtv/. These scripts use HAL to shutdown/reboot/etc
+  * Add 16_hal_shutdown.dpatch to adjust some defaults in mythtv to use the
+    new scripts. (LP: #148281)
+
+  [ Mario Limonciello ]
+  * Don't spawn gnome-screensaver in ubuntu-mythtv-frontend.
+    It doesn't work.  ubuntu-mythtv-frontend is going away in Intrepid
+    but not this late in the game here.  (LP: #216431)
+  * Don't depend on a screensaver for u-m-f, since it's broke.
+  * Prevent warnings on first boot about updating the mythconverg DB, by providing
+    the updated mythconverg db.
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Fri, 11 Apr 2008 20:54:14 +0200
+
+mythtv (0.21.0+fixes16838-0ubuntu2) hardy; urgency=low
+
+  * Update 11_add_myth_prime's internal primer
+    for fixes on SA cable boxes.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 10 Apr 2008 22:49:01 -0500
+
+mythtv (0.21.0+fixes16838-0ubuntu1) hardy; urgency=low
+
+  [ Michael Haas ]
+  * Don't build depend against liba52.
+  * New upstream checkout: switch to release-0-21-fixes branch
+    - SECURITY FIX:
+      + CVE 2007-6036
+  * Remove the following patches as they're included now:
+    - 12_changeset_16483.dpatch
+    - 13_changeset_16577.dpatch
+  * Add 14_fix_video_fallback.dpatch so we don't fall back to the opengl
+    video renderer if xvmc-blit is not available (LP: #205158)
+  * Add 15_hue_fix.dpatch (see <http://svn.mythtv.org/trac/ticket/5039>)
+
+  [ Mario Limonciello ]
+  * debian/control:
+    - Add xterm to mythtv-backend depends (LP: #202708)
+
+  [ majoridiot ]
+  * Update debian/patches/11_add_mythprime:
+    - Automatically detect both P2P and broadcast connections
+      and prime them now without needing to specify node and device.
+
+ -- Michael Haas <laga@xxxxxxxxxxx>  Fri, 28 Mar 2008 23:47:20 +0100
+
+mythtv (0.21.0-0ubuntu3) hardy; urgency=low
+
+  [ Mario Limonciello ]
+  * Add libchromexvmc1 and libchromexvmcpro1 to build depends to allow
+    VIA XvMC support. (LP: #200633)
+  * Build without faad runtime library loading.  (LP: #202590, #201572)
+  * Add 12_firewire_tester.dpatch:
+    - Creates directory structure for building with firewire tester.
+  * Add 13_changeset_16577.dpatch:
+    - Fixes UPnP breakage on PS3.
+  * debian/rules:
+    - Create symlinks for firewire tester out of contrib (LP: #201876)
+  * Fribidi needs version 0.19.x, but only 0.10.9 is in apt right now.
+    Disable it from debian/rules until newer version available.
+
+  [ Michael Haas ]
+  * Add 07_glx-procaddressARB-configure to fix problem where glXGetProcAddress 
+    can't be found in some OpenGL libs. (LP: #201567)
+  * Remove liba52-0.7.4-dev from build dependencies
+  * debian/rules:
+    - Add call to the glx-procaddressARB patch new argument.
+    - Do not build with unadvertised liba52 support (LP: #203692)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 12 Mar 2008 03:37:46 -0500
+
+mythtv (0.21.0-0ubuntu2) hardy; urgency=low
+
+  * Add 12_changeset_16483.dpatch:
+    - Fixes DVD menu handling problem found shortly after release.
+      See MythTV #4897 and #4567 for more information.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 09 Mar 2008 20:20:48 -0500
+
+mythtv (0.21.0-0ubuntu1) hardy; urgency=low
+
+  * New upstream version. (LP: #192486)
+  * Include etc/network/if-up.d/mythtv-backend.if-up.d.  This makes sure
+    that if the network is to come up late, myth starts late. (LP: #187348)
+  * Start mysql from mythtv-database postinst if we can.
+  * Start mythtv-setup with taskset -c 0 (Thanks Daniel Kristjansson)
+  * Only --tune to i686 again due to upstream changes in the configure
+    script.  This time add MMX though. (LP: #198104) (LP: #198115)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 08 Mar 2008 01:31:06 -0600
+
+mythtv (0.21.0~fixes16338-0ubuntu3) hardy; urgency=low
+
+  * Install var/log/mythtv into mythtv-frontend package
+    to prevent alternate install CDs from failing in the order
+    packages get installed. (LP: #198314)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 04 Mar 2008 01:47:57 -0600
+
+mythtv (0.21.0~fixes16338-0ubuntu2) hardy; urgency=low
+
+  * Add chmod to mythtv-frontend.postinst.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 03 Mar 2008 06:37:04 -0600
+
+mythtv (0.21.0~fixes16338-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout.
+  * debian/mythtv-frontend.dirs:
+    - Add var/log/mythtv (LP: #185646)
+  * debian/patches/10_mythfilldatabase_log:
+    - Should allow mythfilldatabase to really log (LP: #196553)
+  * debian/patches/11_add_myth_prime:
+    - Adds mythprime binary for firewire priming.
+  * debian/rules:
+    - Turn on fribidi formatting (LP: #195780)
+    - Drop XvMC-OpenGL. (LP: #195780)
+  * debian/mythtv-backend.files:
+    - Install mythprime binary
+  * Add 41-mythtv-permissions.rules to override permissions on
+    raw1394 devices to folks in the mythtv group. (LP: #197202)
+  * Add firewire priming support to mythtv-backend init script.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 01 Mar 2008 01:54:49 -0600
+
+mythtv (0.21.0~fixes16259-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout.
+  * debian/control:
+    - Add libfftw3-dev to build depends for FFT support.
+    - Add conflicts/replaces for mythappearance. (LP: #195421)
+  * debian/rules:
+    - Replace with pentium3 tuning to attempt to get more MMX
+      optimizations.
+      Should (hopefully) fix (LP: #195306).
+    - Add libfftw3 support (undocumented in configure)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 20 Feb 2008 02:16:46 -0600
+
+mythtv (0.21.0~fixes16174-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout.
+    - Drop 07_alsa_default as it has been absorbed upstream (rev 15995)
+  * Depend on libfaad2-dev | libfaad-dev so as to make building
+    on gutsy still possible
+  * Clean up 09_perl_bindings for changes upstream.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 16 Feb 2008 17:14:23 -0600
+
+mythtv (0.21.0~fixes15967-0ubuntu2) hardy; urgency=low
+
+  * Replace --tune=i686 and --cpu=i686 as it was a performance loss
+    to tune to generic. (LP: #191165)
+  * Build with unadvertised faad support.
+  * Build with unadvertised faac support.
+  * Build with unadvertised libmp3lame support.
+  * Build with unadvertised liba52 support.
+  * Build with unadvertised libx264 support.
+  * Build with unadvertised libxvid support.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 16 Feb 2008 02:07:39 -0600
+
+mythtv (0.21.0~fixes15967-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout.
+    - Upstream has entered feature freeze and this is built
+      against the 0.21-fixes branch now.
+  * Update 07_alsa_default due to upstream changes again.
+  * debian/control:
+    - Add new python bindings package, libmyth-python.
+    - Promote all mysql-server depends to pre-depends.
+  * debian/rules:
+    - Add python-support to build depends
+    - Add libnet-upnp-perl to libmyth-perl depends.
+  * Drop mythtv-common and mythtv-database experimental
+    warnings.
+  * debian/startmythtv.sh:
+    - Launch via xterm to guarantee order that things happen.
+  * Update pre-filled SQL file that is shipped to be 0.21.0 based
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 12 Feb 2008 20:13:15 -0600
+
+mythtv (0.20.99+trunk15849-0ubuntu2) hardy; urgency=low
+
+  * Update 07_alsa_default which was causing FTBFS
+    due to changes with ALSA handling upstream.
+  * Update 08_default_directory which was causing
+    FTBFS since storage groups got moved.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri, 08 Feb 2008 13:54:31 -0600
+
+mythtv (0.20.99+trunk15849-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout.
+    - Fixes FTBFS on powerpc.
+  * Drop 14_newlibraries since upstream does this now.
+  * debian/rules:
+    - Build with ffmpeg pthread support.
+  * debian/control:
+    - Depend on ttf-liberation | msttcorefonts since ttf-liberation
+      provides fonts with the correct metrics.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 03 Feb 2008 23:10:21 -0600
+
+mythtv (0.20.99+trunk15689-0ubuntu3) hardy; urgency=low
+
+  * debian/control:
+    - Change soname of library package to libmyth-0.21-0
+  * Update 09_perl_bindings_prefix, debian/libmyth-perl.files
+    - Make libmyth-perl install into /usr/share/perl5 
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 02 Feb 2008 14:22:00 -0600
+
+mythtv (0.20.99+trunk15689-0ubuntu2) hardy; urgency=low
+
+  * debian/control:
+    - Make libmyth-perl arch all rather than any
+  * Drop 11_idle_countdown_reset-fix and 13_interlaced_refresh_rate.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri, 01 Feb 2008 03:05:05 -0600
+
+mythtv (0.20.99+trunk15689-0ubuntu1) hardy; urgency=low
+
+  " it's about time we switched "
+
+  [ Mario Limonciello ]
+  * Switch to trunk in preparation of upcoming 0.21 release.
+    - Feature freeze is Feb 14, all changes between this and the 0.21
+      release will be bug fixes, but not necessarily tracked on LP.
+  * Merge with ubuntu-mythtv's trunk bzr branch.
+    - Drop perl items from mythtv-common package.
+    - Update debian/rules get-orig-source target to base from -fixes.
+    - Drop 01_debian, 06_gnome_screensaver, 10_alpha-build-fix, 20_backend_crash
+      21_openmedia_mheg5, 22_openmedia_livetv, 26_edit_display, 27_pulseaudio,
+      29_perl_bindings, 31_pvr350_ivtv, 33_israeli_freq, 34_utf8_fixes,
+      35_upnp_length patches.
+  * Update standards version to 3.7.3, no source changes.
+  * debian/rules:
+    - Don't optimize to a particular cpu as that's deprecated in new gcc.
+      Default configure behavior now tunes to generic and arch's to i686.
+  * Add 14_set_newlibraries to force sonames to 0.21 until upstream changes this
+    with their impending freeze.
+  * debian/control:
+    - Adjust packages to 0.21 soname.
+  * Move libmyth-0.20.files to libmyth-0.21.files.
+  * Adjust lintian override for 0.21 soname
+
+  [ Michael Haas ]
+  * Until builds are actually at 0.21, include warnings via preinstall
+    files about the stability.
+  * Add perl bindings to libmyth-perl package.
+  * Drop old debian default directory patch in favor of a storage
+    groups patch, 08_default_direcotry
+  * Add 11_perl_bindings_prefix patch that doesn't work off /usr/local.
+  * Add local patches from tickey 3597 in 11_idle_countdown_reset-fix,
+    13_interlaced_fresh_rate.
+  * debian/rules:
+    - Build with xvmc/opengl and opengl/video
+    - Install examples to proper location
+  * Update default session-settings to give a better warning.
+  * debian/control:
+    - Update for dropped mythdvd package
+    - Add libmyth-perl package.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 30 Jan 2008 11:24:34 -0600
+
+mythtv (0.20.2+fixes15513-0ubuntu4) hardy; urgency=low
+
+  * Rebuild against newer kdelibs to resolve stat64 symbol
+    problems. (LP: #185033, 185108)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 23 Jan 2008 01:06:21 -0600
+
+mythtv (0.20.2+fixes15513-0ubuntu3) hardy; urgency=low
+
+  * New upstream checkout (minor fixes).
+  * mythtv-backend.int:
+    - Bump the default starting runlevel to 50.
+  * Add UTF-8 support for UPnP server. (LP: #156689)
+  * Add fixes for 0 length recordings. (LP: #156691)
+  * mythtv-setup.sh:
+    - Fill database *after* starting backend.
+  * debian/control:
+    - Change ntp requirements from suggests to recommends.
+    - Make mythtv-database a suggest rather than recommend.
+    - Drop gdm from depends on ubuntu-mythtv-frontend.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 18 Dec 2007 03:25:37 -0600
+
+mythtv (0.20.2+fixes15096-0ubuntu2) hardy; urgency=low
+
+  [ Mario Limonciello ]
+  * mythtv-backend.init:
+    - Require networking and remote file systems to be started before
+      running. (LP: #149268)
+    - Find the home directory of our USER and then create a symbolic
+      link in that user's home directory for mysql.txt.
+    - Add LSB support.
+
+  [ Paul McEnery ]
+  * More resilient init script PID handling (LP: #118538)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 17 Dec 2007 00:15:52 -0600
+
+mythtv (0.20.2+fixes15096-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout. (LP: #172291)
+  * Drop 32_gcc_4.2_changes.  No longer necessary.
+  * debian/rules:
+    - Disable symbol visibility again.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 09 Dec 2007 15:40:01 -0600
+
+mythtv (0.20.2+fixes14789-0ubuntu2) hardy; urgency=low
+
+  * Add 32_gcc_4.2_changes to prevent FTBFS when using
+    gcc 4.2 in hardy.
+  * Update 31_pvr350_ivtv to remove old ivtv ".orig" file.
+  * debian/rules:
+    - Explicitly turn on symbol visibility
+  * Add 33_israeli_frequencies to include israeli frequencies.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Wed, 14 Nov 2007 19:45:11 -0600
+
+mythtv (0.20.2+fixes14789-0ubuntu1) hardy; urgency=low
+
+  * New upstream checkout (svn changeset 14789)
+    - Drop 23_schedulesdirect.dpatch (included upstream).
+    - Drop 24_mythstream_typo.dpatch (included upstream).
+    - Drop 25_firewire.dpatch (included upstream).
+    - Drop 28_profilebuild.dpatch (included upstream).
+    - Drop 30_xinerama_fix.dpatch (included upstream).
+  * Create a symbolic link to /etc/mythtv/mysql.txt in ~/.mythtv/
+    if you don't already have a mysql.txt.
+  * debian/control: depend on gnome-screensaver | xscreensaver rather
+    than just gnome-screensaver.
+  * Update 06_gnomescreensaver.dpatch with changeset 10090, 14023,
+    and 14755 from trunk. (LP: #147905)
+  * debian/control:
+    - Move all references of mythtv-doc to suggests
+    - Remove mysql-server from recommends
+    - Move reference of xmltv-util to suggests
+  * Add 31_pvr350_ivtv.dpatch to fix pvr-350 ivtv output. (LP: #158562)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 29 Oct 2007 16:56:16 -0400
+
+mythtv (0.20.2-0ubuntu10) gutsy; urgency=low
+
+  [ Michael Haas ]
+  * Move logging support.  It's now setup to log for any
+    methods other than a terminal launch. (LP: #130925)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 11 Oct 2007 09:02:36 -0500
+
+mythtv (0.20.2-0ubuntu9) gutsy; urgency=low
+
+  [ Mario Limonciello ]
+  * Change compile type to profile per upstream recommendations.
+  * Include 28_patch_build.dpatch from upstream # 14587 to improve
+    profile builds.
+  * Import debconf translations from rosetta.
+  * Build with perl bindings.  For now include them in mythtv-common,
+    but later they will be included in their own binary package.
+    - Add 29_perl_bindings.dpatch to update settings.pro
+    - Add to mythtv-common package in debian/control
+    - Remove pack list from debian/rules
+    - Add dh_perl  to debian/rules
+    - Build --with-bindings=perl in debian/rules
+
+  [ Michael Haas ]
+  * Add 30_xinerama_fix.dpatch from upstream trunk rev 14520 (LP: #136533)
+
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 01 Oct 2007 18:47:06 -0500
+
+mythtv (0.20.2-0ubuntu8) gutsy; urgency=low
+
+  [ Mario Limonciello ]
+  * debian/startmythtv.sh:
+    - Switch ~ to $HOME
+    - Only run mtd if not running.
+  * debian/control:
+    - Refresh dependencies for ubuntu-mythtv-frontend
+      to gutsy appropriate package names.
+  * debian/ubuntu-mythtv-frontend.postinst:
+    - Take ownership of ~/.mythtv if necessary. (LP: #145714)
+
+  [ Michael Haas ]
+  * debian/startmythtv.sh:
+    - Correct minor typo in ${MYTHWELCOME}. (LP: #144541)
+
+  [ Jo Shields ]
+  * Start mythtv-setup in a terminal. (LP: #147701)
+
+  [ Brian J. Murrell ]
+  * Clarify text in mythtv-database.postinst (LP: #146328)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 27 Sep 2007 02:00:01 -0500
+
+mythtv (0.20.2-0ubuntu7) gutsy; urgency=low
+
+  [ Mario Limonciello ]
+  * debian/control:
+    - Mark a 'replaces' for mythtv-backend-0.20.2-0ubuntu1 (LP: #140841)
+    - Make all instances of ntp, ntp | time-daemon (LP: #144268)
+  * Add debian/patches/26_edit_display.dpatch (LP: #139821)
+  * Add debian/patches/27_pulseaudio.dpatch (LP: #138810)
+
+  [ Joel Ebel ]
+  * debian/startmythtv.sh:
+    - Add support to start mtd -d
+    - Add support to check for not executing irexec -d
+
+  [ Michael Haas ]
+  * debian/startmythtv.sh:
+    - Create a frontend and welcome log file in /var/lib/mythtv.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 23 Sep 2007 19:34:56 -0500
+
+mythtv (0.20.2-0ubuntu6) gutsy; urgency=low
+
+  * Add X-AppInstall-Package= to both .desktop files to ensure that
+    they install the 'mythtv' metapackage rather than mythtv-backend
+    or mythtv-frontend when selected in Add/Remove programs.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 10 Sep 2007 00:23:26 -0500
+
+mythtv (0.20.2-0ubuntu5) gutsy; urgency=low
+
+  * Update 23_schedulesdirect.dpatch:
+    - Include [14430] & [14427] to drop TMS all together.
+  * Add 25_firewire.dpatch:
+    - Backports firewire fixes to prevent the need for currently
+      necessary workarounds.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 06 Sep 2007 12:06:33 -0500
+
+mythtv (0.20.2-0ubuntu4) gutsy; urgency=low
+
+  * debian/control:
+    - Make update-notifier | adept-notifier recommends so
+      gnome/kde users benefit without harming non users. (LP: #135431)
+  * debian/mythtv-database.postinst:
+    - Check for $unud and only copy if it exists.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 04 Sep 2007 22:17:13 -0500
+
+mythtv (0.20.2-0ubuntu3) gutsy; urgency=low
+
+  * Add 24_mythstream_typo.dpatch:
+    - Fixes mythstream load errors. (LP: #136483)
+  * debian/control:
+    - Depend on update-notifier | adept-notifier to not pull in
+      unnecessary dependencies for kubuntu users.  (LP: #135431)
+    - Depend on usplash-theme-ubuntu | usplash to make backporting to
+      Dapper easier.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 02 Sep 2007 04:52:33 -0500
+
+mythtv (0.20.2-0ubuntu2) gutsy; urgency=low
+
+  * Add 23_schedulesdirect.dpatch:
+    - Cherry pick [14307] [14324] [14348] to fix a few items
+      found related to schedules direct after 0.20.2 release.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 28 Aug 2007 16:16:24 -0500
+
+mythtv (0.20.2-0ubuntu1) gutsy; urgency=low
+
+  [ Mario Limonciello ]
+  * New Upstream Checkout:
+    - Tagged release to 0.20.2.
+    - Removes deprecated datadirect support in favor of Schedules
+      Direct for North American users.
+    - Cleans up UPNP support.
+    - Checks for DTS libraries properly
+  * debian/control:
+    - Adjust Suggests for mythtv-frontend.
+    - Adjust recommends for ubuntu-mythtv-frontend
+  * debian/rules:
+    - Add support to show svn version number in mythfrontend --version.
+    - Add support for tagged releases that don't need +fixes appended.
+  * Cleanup source.lintian-overrides for additional warnings.
+  * Drop unnecessary libdts patch as dts has changed upstream to
+    detect when dts_pic is necessary.
+  * Use proper files for upnp support from backported -fixes on
+    mythtv-backend.
+  * Change section to multiverse/graphics so this can build on PPAs.
+
+  [ Nick Hemsley ]
+  * Add support to check for ~/.mythtv/session upon startup for
+    ubuntu-mythtv-frontend meta. (LP: #134028)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 20 Aug 2007 16:40:59 -0500
+
+mythtv (0.20.1+fixes14194-0.0ubuntu1) gutsy; urgency=low
+
+  * New upstream checkout:
+    - Includes support for mythstream in the menu system.
+  * Change background color to black in gdm configurations.
+  * debian/control:
+    - Move ntp | ntp-simple into metas only.
+    - Make ntp | ntp-simple Suggests on mythtv-frontend or mythtv-backend.
+  * debian/mythfrontend.sh:
+    - Make sure that exec mythfrontend to start
+  * Remove 20_backend_crash_without_tuner.dpatch.  It's included
+    in the current 0.20-fixes branch.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue,  14 Aug 2007 09:54:21 -0500
+
+mythtv (0.20.1+fixes13837-0.0ubuntu2) gutsy; urgency=low
+
+  * debian/control:
+    - Update to ${source:version}. (LP: #125685)
+  * Add additional function to ubuntu-mythtv-frontend's prerm.
+  * Source xmodmap configuration if the user has it.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon,  9 Jul 2007 20:37:52 -0500
+
+mythtv (0.20.1+fixes13837-0.0ubuntu1) gutsy; urgency=low
+
+  * New svn fixes co, 13837.
+  * Correct minor typo in debian/control.
+  * Add the rest of mythbuntu-gdm.conf
+  * Myth mythtv-transcode-utils conflict older backends.
+  * Modify README.debian to clarify a contrib script.
+  * Prefill the database with populated information.
+    No longer is it "necessary" to run mythtv-setup before
+    starting mythfrontend.
+  * Provide debconf questions that can be used to change
+    bind settings for MySQL and MythTV.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 25 Jun 2007 10:04:06 -0500
+
+mythtv (0.20.1+fixes13737-0.0ubuntu1) gutsy; urgency=low
+
+  * Update to new SVN Fixes co, 13737.
+  * Adapt new package naming structure.
+  * Add 21_openmedia_mheg5.dpatch importing many MHEG5
+    fixes from trunk. (LP: 119984).
+  * Add 22_openmedia_livetv.dpatch importing many Livetv
+    fixes from trunk. (LP: 119884).
+  * debian/rules:
+    - Add support to grab the latest .orig.tar.gz.
+    - Add debconf-updatepo to the clean: target.
+  * Clean up all fields mismarked as translatable (LP: 118952)
+  * Add source.lintian-overrides to handle a few warnings
+    about binary NMU's.
+  * Add a mythbuntu gdm.conf that will use the mythbuntu-gdm-theme
+    if available at package installation.
+  * Update debian/ubuntu-mythtv-frontend.postinst to use the appropriate
+    gdm theme.
+  * Add mythbuntu-gdm-theme | feisty-gdm-themes to debian/control.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 17 Jun 2007 11:53:58 -0500
+
+mythtv (0.20-svn20070523-0.0ubuntu1) gutsy; urgency=low
+
+  [ Mario Limonciello ]
+  * Merge with debian multimedia:
+    o New SVN release. (last change is 13496)
+    o Rename libmyth0.20-dev to libmyth-dev .
+  * Remaining changes:
+    o Drop 21_changeset12782_hd_homerun as its included in 13496.
+    o Make ubuntu-mythtv-frontend depend on mythbuntu-artwork-usplash
+      rather than the ubuntu artwork if available.
+    o Create mythtv-transcode-utils (LP: #92703)
+    o FE & BE depend on either fake-msttcorefonts or msttcorefonts. (LP: #110068)
+    o Bump debian/compat to 5.
+    o Add an option to /etc/mythtv/session-settings for controlling
+      if mythwelcome is used or mythfrontend.
+    o Add "ntp |" to all ntp-simple depends. (LP: 118705)
+    o Add update-notifier to mythtv-database depends (LP: # 109950)
+
+  [ Nick Fox ]
+  * Add gnome-power-manager to startmythtv.sh script if installed
+    to properly control DPMS.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue, 05 June 2007 12:26:31 -0500
+
+mythtv (0.20-svn20070122-0.0ubuntu6) feisty; urgency=low
+
+  [ Mario Limonciello ]
+  * debian/mythtv-database.postinst:
+    - Move "exit 0" after notifier install. (LP: #105948)
+  * debian/mythtv-reconfigure-required.update-notifier:
+    - Update text to more closely reflect packaging changes.
+  * debian/startmythtv.sh:
+    - Add checks to see if backend has been ran yet. (LP: #96737)
+  * debian/mythtv-setup.sh:
+    - Start/Stop mythbackend & offer to fill database for user.
+  * Add mythtv-setup.desktop. (LP: #106002)
+
+  [ Tom Metro ]
+  * Fix minor typo in init mythtv-backend.init. (LP: #106012)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 12 Apr 2007 14:17:14 -0500
+
+mythtv (0.20-svn20070122-0.0ubuntu5) feisty; urgency=low
+
+  * debian/mythtv-database.config:
+    - Change priority of questions.  User will only get questions
+      when reconfiguring the package. (LP: #99916)
+  * debian/mythtv-common.templates & mythtv-common.postinst
+    - Tell the user about their MySQL password. (LP: #96739)
+  * debian/ubuntu-mythtv-frontend.postinst & mplayer-config
+    - Add mplayer config to make sure screensaver off. (LP: #103191)
+  * Add 07_alsa_default.dpatch to make ALSA default. (LP: #93341)
+  * debian/mythtv-backend.init:
+    - unset DISPLAY & SESSION_MANAGER to prevent ominous QT
+      authentication warnings. (LP: #55827)
+  * Clarify text of debian/dialog_functions.sh.
+  * Add 21_changeset12782_hd_homerun.dpatch (LP: #104965)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Tue,  10 Apr 2007 03:50:16 -0500
+
+mythtv (0.20-svn20070122-0.0ubuntu4) feisty; urgency=low
+
+  * debian/control:
+    - msttcorefonts to mythtv-frontend and mythtv-backend.
+      Appears several themes DO use it. (LP: #93986, #96734, #96768)
+  * Update templates for correct wording about mythtv
+    users/groups (LP: #96739)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 24 Mar 2007 19:30:53 -0500
+
+mythtv (0.20-svn20070122-0.0ubuntu3) feisty; urgency=low
+
+  [ Mario Limonciello ]
+  * Add new wrapper script for mythfrontend and mythtv-setup
+    to guarantee user is in the mythtv group. (LP: #93476).
+  * debian/control: Add zenity | kdebase-bin, gksu | kdebase-bin
+    for wrapper scripts to mythtv-backend and mythtv-frontend.
+  * debian/rules: Install wrapper scripts functions.
+  * debian/control: Add XSBC-Original-Maintainer field.
+  * debian/control: Drop msttcorefonts requirement
+  * debian/control: Add mythtv user to dialout group (LP: #95074).
+
+  [ Kees Cook ]
+  * debian/patches/20_backend_crash_without_tuner.dpatch: stop backend
+    crashes when missing tuner info (LP: #93250).
+
+ -- Kees Cook <kees@xxxxxxxxxx>  Fri, 23 Mar 2007 22:59:29 -0700
+
+mythtv (0.20-svn20070122-0.0ubuntu2) feisty; urgency=low
+
+  * debian/control: Trim down metapackages.
+  * debian/rules: adjusted config file locations.
+  * debian/*myth*.{pre,post}{inst,rm}: moved gdm link, built symlinks to
+    startup configs.  Fixed insecure temp file.
+  * debian/patches/01_debian_patch: Use /var/lib/mythtv/recordings,
+    drop mythtv cron.
+  * Removed debian/mythtv-backend.cron.daily; the database fill must
+    happen from backend scheduler to take advantage of next-run hints.
+
+ -- Kees Cook <kees@xxxxxxxxxx>  Mon, 19 Feb 2007 08:49:46 -0800
+
+mythtv (0.20-svn20070122-0.0ubuntu1) feisty; urgency=low
+
+  * Merge with debian multimedia:
+    o New svn release (12617).
+    o Install desktop file in the right package.
+  * Remaining Changes:
+    o Update debian/rules to more closely match debian multimedia.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon, 22 Jan 2007 08:59:52 -0600
+
+mythtv (0.20-svn20061209-0.3ubuntu1) feisty; urgency=low
+
+  * Merge with debian multimedia:
+    o To re-enable dvb support in some archs (amd64, powerpc) :
+       - Build-depends on linux-kernel-headers instead of linux-headers-2.6
+       - and don't set --dvb-path (not necessary).
+    o Call su with - in cron.daily for mythtv-backend package.
+    o Update --dvb-path option to use linux-headers-`uname -r` path.
+    o Build-Conflicts: libmyth-0.20-dev, build with --enable-opengl-vsync.
+    o Add mythtv user to the cdrom group.
+    o Add desktop file for GNOME.
+    o Call update-notifier if mysql-server isn't running
+    o Source /etc/mythtv/mysql.txt in cron.weekly for mythtv-database.
+  * Remaining changes:
+    o Add source.lintian-overrides to cover two lintian warnings
+      with explanations why they are safe to ignore.
+    o Switch to alternative's system for gdm.conf.
+    o Install openbox menu.xml only to /home/mythtv instead of /etc/mythtv.
+    o Remove openbox from PreDepends.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Thu, 28 Dec 2006 15:20:21  -0600
+
+mythtv (0.20-svn20061209-0.1ubuntu1) feisty; urgency=low
+
+  * Merge with debian multimedia:
+    o Add all files in the contrib directory to the mythtv-backend package.
+    o New svn from 0.20 fixes branch (12227).
+    o Source /etc/mythtv/mysql.txt in cron.weekly for the mythtv-database package.
+  * Remaining Changes:
+    o Add a ubuntu-mythtv-frontend.postinst to set permissions on /home/mythtv
+      if it already exists.
+    o Add feisty-gdm-themes | edgy-gdm-themes to ubuntu-mythtv-frontend
+      depends.
+    o Add libgl1-mesa-glx to  ubuntu-mythtv-frontend depends.
+    o Make sure gdm.conf-custom and openbox-menu.xml are placed in /etc/mythtv.
+      Create symlinks for them in /etc/gdm and /etc/xdg/openbox.
+    o Properly set up diversions for /etc/gdm/gdm.conf-custom &
+      /etc/xdg/openbox/menu.xml.
+    o Add a pre-depends to ubuntu-mythtv-frontend to make sure that
+      gdm.conf-custom and menu.xml are generated *before* the diversions.
+    o Add ubuntu-mythtv-secondary-backend metapackage for consistency.
+    o Add ntp-simple to several metapackages.
+    o Change default recordings directory to /media/mythtv/recordings.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 10 Dec 2006 01:36:46 -0600
+
+mythtv (0.20-0.5ubuntu2) feisty; urgency=low
+
+  * Remove unnecessary mythtv-frontend.files.old.
+  * Make startmythtv.sh executable on installation.
+  * Fix depends on ubuntu-mythtv-secondary-backend-frontend.
+  * Update description for ubuntu-mythtv-secondary-backend-frontend.
+  * Add .dmrc to set default session for mythtv user in ubuntu-mythtv-frontend.
+  * Add feh to dependencies to set a nice background for ubuntu-mythtv-frontend.
+  * Provide background.xpm for ubuntu-mythtv-frontend.
+  * Provide menu.xml for openbox in ubuntu-mythtv-frontend.
+  * Provide gdm.conf-custom in ubuntu-mythtv-frontend.
+  * Add ubuntu-mythtv-frontend.preinst and .postrm for menu.xml, gdm.conf-custom diversions.
+  * Add mythtv-themes to Recommends for ubuntu-mythtv-frontend.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Fri,  8 Dec 2006 20:13:36 -0600
+
+mythtv (0.20-0.5ubuntu1) feisty; urgency=low
+
+  * Merge with debian multimedia:
+    o Check in cron script if mythfilldatabase is here and executable.
+    o Updated 0.20 fixes patch (latest is 11627).
+    o Added patch from svn to fix hue when using XV. Mythtv bug 2241.
+    o Added support for make -j
+    o Make sure that mythtv is stopped before mysql in init script.
+    o Added /etc/cron/weekly/mythtv-database to backup mythconverg database.
+    o Added mythtv-backend.configfiles to preserve user changes.
+    o Move CDS_scpd.xml, CMGR_scpd.xml and upnpavcd.xml into
+      mythtv-backend. (Thanks Scott Davilla)
+    o Add ccache to build depends.
+  * Remaining Changes:
+    o Revert the --disable-ccache in debian/rules
+    o Be sure that debian/mythtv-database.prerm includes a DEBHELPER tag
+    o Remove patch #11365 for mythreplex bug.
+      Included in new 0.20-fixes patch from debian multimedia.
+    o Update maintainer, "MythTV Ubuntu Maintainers <ubuntu-mythtv@xxxxxxxxxxxxxxxx>"
+    o Add mysql-server to 'mythtv' metapackage, so that this package
+      can again be used for a quick install on top of a desktop to
+      properly get all necessary dependencies.
+    o Begin to introduce the idea of "profile metapackages" to be used for
+      standalone Ubuntu machines intended soley for mythtv usage.
+      - ubuntu-mythtv-master-backend
+      - ubuntu-mythtv-frontend
+      - ubuntu-mythtv-master-backend-frontend
+      - ubuntu-mythtv-secondary-backend-frontend
+    o Create GDM xsession to be used in frontend profiles
+    o Create openbox startup script to be used in frontend profiles
+      - Include support for irexec, nvidia-settings, gnome-screensaver
+    o Be sure that "mythtv" is added to the cdrom group.  This will make
+      sure that mtd will be able to rip dvds. (Closes: #69651)
+    o Rename 05_gnomescreensaver.dpatch to 06_gnomescreensaver.dpatch
+      to make room for upstream patch 05_11372.dpatch
+    o Update author on 06_gnomescreensaver.dpatch.
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Mon,  04 Dec 2006 02:52:20 -0600
+
+mythtv (0.20-0.2ubuntu3) edgy; urgency=low
+
+  * Silently fail more gracefully during dist-upgrades if mysql-server isn't
+    running.  Instead provide a update-notifier notification to the user to
+    reconfigure the database.  (Closes Ubuntu: #67696, 41339, 58155, 68400)
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sat, 28 Oct 2006 11:38:27 -0500
+
+mythtv (0.20-0.2ubuntu2) edgy; urgency=low
+
+  * Import changeset #11365 from mythtv SVN to resolve mythreplex bug
+    (Closes Ubuntu: #65790)
+  * Update maintainer to be MOTU-Media
+
+ -- Mario Limonciello <superm1@xxxxxxxxxx>  Sun, 15 Oct 2006 13:18:12 -0500
+
+mythtv (0.20-0.2ubuntu1) edgy; urgency=low
+
+  * Merge with debian multimedia.  Remaining changes:
+  * Keep --enable-opengl-vsync enabled
+  * Remove mythtv-debug from suggests in debian/control
+  * Rename 04_gnomescreensaver.dpatch to 05_gnomescreensaver.dpatch
+    to make room for 04_0.20-fixes.dpatch from debian multimedia.
+  * Compile with --compile-type=debug to adhere to requirements
+    for pkg-create-dbgsym.  All debugging symbols are still stripped,
+    but placed in a .ddeb by pkg-create-dbgsym.
+
+ -- Mario Limonciello <superm1@xxxxxxxxx>  Thu,  5 Oct 2006 12:47:25 -0500
+
+mythtv (0.20-0.0ubuntu4) edgy; urgency=low
+
+  * Adds a menu file for mythfrontend (Closes Ubuntu: #737).
+
+ -- Mario Limonciello <superm1@xxxxxxxxx>  Tue,  3 Oct 2006 12:45:37 -0500
+
+mythtv (0.20-0.0ubuntu3) edgy; urgency=low
+
+  * Fix gnome-screensaver patch to properly disable screensaver
+  * Explicitly enable MMX for i386
+
+ -- Mario Limonciello <superm1@xxxxxxxxx>  Fri, 29 Sep 2006 01:31:16 -0500
+
+mythtv (0.20-0.0ubuntu2) edgy; urgency=low
+
+  * Added --disable-ccache to debain/rules so it doesnt try to use
+    ccache on the buildd's
+
+ -- Brandon Holtsclaw <imbrandon@xxxxxxxxxxx>  Thu, 28 Sep 2006 00:22:27 -0500
+
+mythtv (0.20-0.0ubuntu1) edgy; urgency=low
+
+  [ Mario Limonciello ]
+  * Syncronize with debian-multimedia
+  * Add 04_gnomescreensaver.dpatch to disable gnome-screensaver instead of xscreensaver
+
+ -- Brandon Holtsclaw <imbrandon@xxxxxxxxxxx>  Thu, 14 Sep 2006 23:42:09 -0500
+
+mythtv (0.20-0.0) unstable; urgency=low
+
+  * New upstream release
+  * Removed sparc patch.
+  * Removed --enable-dvb-eit who has been removed.
+  * Replace debconf dependency by ${misc:Depends}.
+  * mythtv-database should depends on mysql-client instead of mysql-server.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue, 12 Sep 2006 08:46:02 +0200
+
+mythtv (0.19-0.10) unstable; urgency=low
+
+  * Add 02_0.19-fixes patch. This patch add all the changes from the
+    0.19-fixes svn branch.
+  * New patch to fix build on alpha.
+  * Delete the mythtv user on purge.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Sat,  1 Jul 2006 15:24:40 +0200
+
+mythtv (0.19-0.9) unstable; urgency=low
+
+  * Really apply the libdts patch.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Wed, 28 Jun 2006 10:55:30 +0200
+
+mythtv (0.19-0.8) unstable; urgency=low
+
+  * The dts patch should be applied for all archs.
+  * Build with -fPIC
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue, 27 Jun 2006 15:01:58 +0200
+
+mythtv (0.19-0.7) unstable; urgency=low
+
+  * Fix typo (a space character) in 01_debian patch. Thanks to Andrew Ruthven.
+  * Set QMAKE_PROJECT_DEPTH to 1 in settings.pro
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Mon, 12 Jun 2006 15:16:53 +0200
+
+mythtv (0.19-0.6) unstable; urgency=low
+
+  * Oooops, update-rc.d was called with wrong arguments.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Fri, 24 Mar 2006 14:40:58 +0100
+
+mythtv (0.19-0.5) unstable; urgency=low
+
+  * Create /etc/mythtv directories in mythtv-common package.
+  * Start the backend more later than the mysql serveur (24 instead of 20).
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Wed, 22 Mar 2006 13:58:46 +0100
+
+mythtv (0.19-0.4) unstable; urgency=low
+
+  * Added a patch from svn to fix a problem with mysql 5 (mythtv lose
+    "Recording Schedule").
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Wed,  8 Mar 2006 10:04:49 +0100
+
+mythtv (0.19-0.3) unstable; urgency=low
+
+  * Doesn't use CFLAGS but instead --extra-cflags for special gcc flags (sparc).
+  * Remove the pid file when stop is invoked in the mythbackend init.d
+    script so start can work has expected. Thanks to Sebastian Bremicker.
+  * debian/control replace libmysqlclient-dev by libmysqlclient12-dev.
+  * Fix for ppc from Magnus Ihse Bursie to link against libdts.
+  * XvMC is also disabled for ppc.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Sat, 18 Feb 2006 14:46:03 +0100
+
+mythtv (0.19-0.2) unstable; urgency=low
+
+  * libmyth-0.19-dev and mythtv-debug should depends on libmyth-0.19 instead
+    of libmyth-0.18.1
+  * Build with "--compile-type=debug" for the debug package (Thanks to Brad Fritz).
+  * Revert "Move debug libraries in the right place." introduced in 0.18.1-11
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Thu, 16 Feb 2006 09:57:35 +0100
+
+mythtv (0.19-0.1) unstable; urgency=low
+
+  * Forgot to add Guido's changes.
+  * Add libjack-dev and libdts-dev in Build-Depends.
+  * Doesn't build XvMC support for amd64 (doesn't compile).
+  * New amd64 patch to fix link problem with libdts.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Wed, 15 Feb 2006 14:40:14 +0100
+
+mythtv (0.19-0.0) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue, 14 Feb 2006 18:52:34 +0100
+
+mythtv (0.18.1-11) unstable; urgency=low
+
+  * Move debug libraries in the right place.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Thu, 26 Jan 2006 11:14:44 +0100
+
+mythtv (0.18.1-10) unstable; urgency=low
+
+  * Doh ! Forget to write the test command in my test.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Wed, 11 Jan 2006 08:57:12 +0100
+
+mythtv (0.18.1-9) unstable; urgency=low
+
+  * Doesn't restart the backend if already running in postinst.
+  * Patch from Peter Kahle no not use repeat who is a keyword in mysql 5.0
+  * mythtv-database.postinst If hostname is blank set to localhost.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue, 10 Jan 2006 16:01:07 +0100
+
+mythtv (0.18.1-8) unstable; urgency=low
+
+  * Changes from Micah F. Galizia
+    o Use --tune=i486 instead of pentium4.
+    o Enable vld XvMC and XvMC.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue,  3 Jan 2006 15:59:56 +0100
+
+mythtv (0.18.1-7) unstable; urgency=low
+
+  * Move patches in the diff to dpatch.
+  * gettextize debconf templates files.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Fri, 23 Dec 2005 15:49:52 +0100
+
+mythtv (0.18.1-6) unstable; urgency=low
+
+  * Rebuild after removing the fglrx-driver package.
+  * Add a versioned libiec61883-dev in Build-Depends.
+  * Add libavc1394-dev in Build-Depends.
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Tue, 20 Dec 2005 16:40:07 +0100
+
+mythtv (0.18.1-5) unstable; urgency=low
+
+  * Prefer libmysqlclient15-dev in Build-Depends.
+  * Build with --enable-dvb-eit and --enable-dvb
+
+ -- Christian Marillat <marillat@xxxxxxxxxx>  Sat, 17 Dec 2005 16:32:28 +0100
+
+mythtv (0.18.1-4) unstable; urgency=low
+
+  * Prefer libmysqlclient14-dev
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Mon, 29 Aug 2005 15:16:34 -0700
+
+mythtv (0.18.1-3) unstable; urgency=low
+
+  * Fix menu entry to refer to mythtv-frontend, rather than mythtv (thanks
+    to Paul Andreassen)
+  * Disable silly xinit test entirely
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 11 Jun 2005 12:51:58 -0700
+
+mythtv (0.18.1-2) unstable; urgency=low
+
+  * Fix configure test for xinit to work on Debian as well
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 11 Jun 2005 12:07:11 -0700
+
+mythtv (0.18.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Changes from Micah Galizia <mfgalizi@xxxxxxxxxx>
+   - Patch configure to allow xvmc-vld
+  * Use gcc-3.4 rather than -3.3 (ABI transition for libmyth-0.18.1)
+  * Fix configure xinit test to be compatible with Ubuntu breezy (where
+    xinit has moved to /usr/bin)
+  * Adjust dependencies on libqt3-mt-mysql to accomodate systems both
+    before and after the gcc-4.0 transition
+  * Include static libraries in libmyth-0.18.1-dev where available
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 10 Jun 2005 12:53:11 -0700
+
+mythtv (0.18-3) unstable; urgency=low
+
+  * Add /usr/X11R6/include to INCLUDEPATH for libmyth
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 29 May 2005 18:57:30 -0700
+
+mythtv (0.18-2) breezy; urgency=low
+
+  * mythtv Recommends: mythtv-themes
+  * Build-Depends: libxext-dev
+  * Update README.Debian to reflect that running as alternate users
+    doesn't quite work anymore (patches welcome)
+  * Configure with --cpu=i486 --tune=pentium4 --enable-mmx
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 26 May 2005 14:27:54 -0700
+
+mythtv (0.18-1) breezy; urgency=low
+
+  * New upstream release
+    - Use gcc-3.3 explicitly, and build-depend on it, so as to continue to
+      build on Breezy (at least libavcodec doesn't compile with 4.0)
+    - mythtv-setup is now installed for us, no need to do it in debian/rules
+    - Set QMAKE_LIBDIR_X11 in settings.pro
+    - Comment out code in configure which disables x11 support based on
+      presence of xinit(?!)
+  * Explicitly enable lirc, alsa, oss, jack, arts, xvmc, opengl-vsync, dvb,
+    firewire, ivtv and joystick-menu
+    - Add build-depends: libdvb-dev
+  * Build-Depends: libdvb-dev, gcc-3.3
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun,  1 May 2005 21:22:54 -0700
+
+mythtv (0.17-3) hoary; urgency=low
+
+  * Fix bad merge of backendsettings.cpp
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Mon, 14 Feb 2005 09:50:35 -0800
+
+mythtv (0.17-2) hoary; urgency=low
+
+  * Fix CXXFLAGS to -O2 -g all around (fixes FTBFS on amd64)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 13 Feb 2005 23:24:53 -0800
+
+mythtv (0.17-1) unstable; urgency=low
+
+  * New upstream release
+  * Add build-depends: libxinerama-dev | xlibs-static-dev (<< 6.8.1-1), libxxf86vm-dev | xlibs-static-dev (<< 6.8.1-1)
+  * Add debian/mysql.txt.dist as template; upstream no longer ships one
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 12 Feb 2005 23:10:39 -0800
+
+mythtv (0.16-2) unstable; urgency=low
+
+  * Drop alternative dependency on libqt3-mt-mysql, since woody isn't
+    really supported anymore anyway, and it was causing confusion
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 11 Feb 2005 19:33:06 -0800
+
+mythtv (0.16-1) unstable; urgency=low
+
+  * New upstream release
+  * Add an explanation to the package description of mythtv-debug
+    explaining its use
+  * Build without -march=i686
+  * Add a Depends: line to mythtv-debug to appease linda
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 10 Sep 2004 17:46:18 -0700
+
+mythtv (0.15.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Add mythtv-backend.NEWS file with pointer to datadirect upgrade
+    instructions
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue,  1 Jun 2004 12:12:09 -0700
+
+mythtv (0.15-1) unstable; urgency=low
+
+  * New upstream release
+    - Includes support for Zap2It Data Direct service (you'll need to
+      switch to this if you used tv_grab_na with 0.14)
+  * Downgrade xmltv-util dependency to a Recommends, since it's now
+    optional for North American users
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 26 May 2004 22:53:35 -0700
+
+mythtv (0.14-6) unstable; urgency=low
+
+  * Use copytruncate in logrotate config, so that mythbackend is always
+    writing to mythbackend.log, as a workaround until such time as I get
+    around to adding a signal handler to mythtv to reopen the logfile
+    (thanks to Brad Fritz)
+  * Remove build-depends: linux-kernel-headers
+  * Provide concrete alternative libmysqlclient10-dev for virtual package
+    libmysqlclient-dev
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Mon, 29 Mar 2004 19:43:31 -0800
+
+mythtv (0.14-5) unstable; urgency=low
+
+  * Include ALSA and ARTS support
+  * Preserve permissions on /etc/mythtv/mysql.txt if they are changed
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 20 Feb 2004 15:32:58 -0800
+
+mythtv (0.14-4) unstable; urgency=low
+
+  * Add missing ttf-freefont dependency
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 18 Feb 2004 23:36:29 -0800
+
+mythtv (0.14-3) unstable; urgency=low
+
+  * Replace FreeMono.ttf, FreeSans.ttf with a symlink to the one in ttf-freefont
+  * Move setup.xml and font symlinks into mythtv-common, since they're
+    needed by mythtv-setup
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 18 Feb 2004 11:09:21 -0800
+
+mythtv (0.14-2) unstable; urgency=low
+
+  * Move themes into mythtv-common, as they're needed for the backend
+    setup as well
+  * mythtv-common Replaces mythtv-frontend (<< 0.14-2)
+  * New binary package mythtv-debug, which has debugging symbols for
+    mythtv-frontend, mythtv-backend and libmyth.  No more recompiling just
+    to get backtraces.
+  * Build with -O2 -g -march=pentiumpro (rather than -O3 -fomit-frame-pointer)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 31 Jan 2004 20:35:36 -0800
+
+mythtv (0.14-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 31 Jan 2004 14:43:48 -0800
+
+mythtv (0.13-6) unstable; urgency=low
+
+  * Add a check to ensure that the package isn't being built under /usr,
+    due to #180240 (which shows no signs of being fixed)
+  * Remove debconf prompts from mythtv-frontend which used to be used to
+    configure the backend location; this is now done inside the UI
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 24 Jan 2004 12:29:06 -0800
+
+mythtv (0.13-5) unstable; urgency=low
+
+  * Don't compress the mythbackend log when rotating it (it doesn't get
+    reopened yet)
+  * Install configfiles/* as examples
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Mon, 12 Jan 2004 09:54:06 -0800
+
+mythtv (0.13-4) unstable; urgency=low
+
+  * Enable DVB and LIRC support
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 14 Dec 2003 11:57:23 -0800
+
+mythtv (0.13-3) unstable; urgency=low
+
+  * Apply tvformat.fix.0.13.diff to fix problem where tvformat column was
+    not properly initialized
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 13 Dec 2003 23:43:53 -0800
+
+mythtv (0.13-2) unstable; urgency=low
+
+  * Include mythtvosd in mythtv-frontend until such time as I decide where
+    it really belongs
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat, 13 Dec 2003 16:00:49 -0800
+
+mythtv (0.13-1) unstable; urgency=low
+
+  * New upstream release (packaged at last)
+  * No more database upgrade scripts (hurrah)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 12 Dec 2003 15:14:01 -0800
+
+mythtv (0.11-6) unstable; urgency=low
+
+  * Rebuild with gcc 3.3.2-0pre2.  Building with 3.3.2-0pre3 is broken due to
+    #210848
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 18 Sep 2003 10:47:50 -0400
+
+mythtv (0.11-5) unstable; urgency=low
+
+  * Make sure that debian/mythsql is executable (it is created by the
+    Debian diff)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 16 Sep 2003 09:06:10 -0400
+
+mythtv (0.11-4) unstable; urgency=low
+
+  * Fix another problem initializing the database on fresh installs
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 20 Aug 2003 22:29:48 -0400
+
+mythtv (0.11-3) unstable; urgency=low
+
+  * Add Suggests for the various add-ons
+  * Fix a strange problem in the mythtv-database postinst which broke
+    fresh installs
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 20 Aug 2003 21:30:51 -0400
+
+mythtv (0.11-2) unstable; urgency=low
+
+  * Clean up database handling a bunch, adding a script (mythsql) which
+    can be used by the add-ons to initialize their database without messy
+    postinst tricks
+  * mythtv-common Depends: mysql-client
+  * Fix description for libmyth-0.11-dev
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 15 Aug 2003 23:28:39 -0400
+
+mythtv (0.11-1) unstable; urgency=low
+
+  * New upstream release
+  * Run qmake before make, because qmake puts broken dependencies into the
+    Makefile
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 15 Aug 2003 15:24:48 -0400
+
+mythtv (0.10-4) unstable; urgency=low
+
+  * Don't attempt to drop the database in postrm.  Too many people screw up
+    the username/password configuration and then can't purge it
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 30 Jul 2003 09:03:17 -0400
+
+mythtv (0.10-3) unstable; urgency=low
+
+  * Include mythcommflag in mythtv-backend.  Thanks to Jim <jim@xxxxxxxx>
+    for pointing this out.
+  * Include i18n files for mythfrontend
+  * Include mythtranscode binary in mythtv-backend
+  * Build-Depend on libfreetype6-dev rather than libttf-dev.  Thanks to
+    Eduardo P?rez Ureta <eperez@xxxxxxxxxx>
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 22 Jul 2003 20:03:46 -0400
+
+mythtv (0.10-2) unstable; urgency=low
+
+  * Add /etc/default/mythtv-backend with some handy options for controlling
+    the startup of the backend
+  * Include patch from upstream CVS to work correctly with xmltv 0.5.15
+  * Use exact versioned dependencies for the mythtv metapackage to make it
+    easy to keep everything in sync
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 10 Jul 2003 00:02:57 -0400
+
+mythtv (0.10-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue,  1 Jul 2003 21:22:40 -0400
+
+mythtv (0.9.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Add keys.txt to documentation
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 10 Jun 2003 16:51:45 -0400
+
+mythtv (0.9-2) unstable; urgency=low
+
+  * Fix permissions on /var/lib/mythtv and /var/cache/mythtv
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 10 Jun 2003 14:33:02 -0400
+
+mythtv (0.9-1) unstable; urgency=low
+
+  * New upstream release
+  * Recommend mythtv-doc in a few places
+  * Fix default paths in backend setup; apparently this was lost in the 0.8
+    merge.  The correct defaults are /var/lib/mythtv and /var/cache/mythtv for
+    recordings and live tv, respectively.  Permissions are automatically set
+    appropriately on these directories by default.
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed,  4 Jun 2003 23:12:05 -0400
+
+mythtv (0.8-11) unstable; urgency=low
+
+  * Print a warning if any old myth stuff is found in /usr/local
+    (too many complaints about "broken" packages caused by old libraries and
+     binaries)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri,  4 Apr 2003 15:10:00 -0500
+
+mythtv (0.8-10) unstable; urgency=low
+
+  * Clean /var/log/mythtv on purge of mythtv-backend
+  * Clarify the debconf note which explains about running setup, so that
+    it includes a note about X and explains how to start the backend
+    afterward.
+  * Clarify package descriptions to explain their relationships
+  * Raise the priority of the question about the mysql admin password to
+    'high', and add some additional info to it.  There is a dilemma here
+    between confusing users by asking this question (when they have not
+    set a password), and confusing them by skipping it (when the user has
+    set a password)
+  * Move the dependency on the Qt mysql module to libmyth-0.8 where it is
+    shared by all packages which depend on it
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 20 Mar 2003 09:34:41 -0500
+
+mythtv (0.8-9) unstable; urgency=low
+
+  * Fix display of hostname in informational message in postinst
+  * Fix log rotation (mythfilldatabase.log no longer exists, rotate
+    mythbackend.log)
+  * Fix permissions on /var/log/mythtv in mythtv-backend postinst
+  * Move database drop from mythtv-common to mythtv-database
+  * Fix removal of /etc/mythtv in mythtv-common on purge
+  * Create mythbackend.log with proper permissions
+  * Generate the random database password in mythtv-common, not
+    mythtv-database (would end up with a blank password in
+    /etc/mythtv/mysql.txt)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 19 Mar 2003 10:40:37 -0500
+
+mythtv (0.8-8) unstable; urgency=low
+
+  * Fix error introduced in 0.8-7
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Mon, 17 Mar 2003 00:09:43 -0500
+
+mythtv (0.8-7) unstable; urgency=low
+
+  * Close all file descriptors when daemonizing the backend, to avoid a
+    hang when using debconf in mythtv-backend postinst
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 23:41:33 -0500
+
+mythtv (0.8-6) unstable; urgency=low
+
+  * Oops, load confmodule in mythtv-backend.postinst
+  * mythtv-backend Depends: debconf
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 23:30:26 -0500
+
+mythtv (0.8-5) unstable; urgency=low
+
+  * Finish moving creation of v4l devices to mythtv-backend from
+    mythtv-common
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 23:19:05 -0500
+
+mythtv (0.8-4) unstable; urgency=low
+
+  * Make 'mythtv' Architecture: all, since it is just a metapackage now
+  * Do automated database upgrade from 0.7
+  * Fix cron.daily pathname in informational message in setup
+  * Fix quoting in cron.daily/mythtv-backend
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 23:04:16 -0500
+
+mythtv (0.8-3) unstable; urgency=low
+
+  * Return proper exit status from DoSQL in postinst (broke initial
+    creation of the database and error detection)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 22:43:25 -0500
+
+mythtv (0.8-2) unstable; urgency=low
+
+  * Split database configuration into a separate package, mythtv-database,
+    which should be installed where the mysql server is
+  * Make config file substitution in postinst scripts a bit more robust
+  * Add mythtv-doc package with HOWTO
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 17:14:46 -0500
+
+mythtv (0.8-1) unstable; urgency=low
+
+  * New upstream release
+  * Split up backend and frontend into separate packages
+  * Add some error checking in postinst to give more meaningful error
+    messages when database operations fail
+  * Attempt to migrate cron and logrotate config from mythtv to
+    mythtv-backend
+  * Install new program mythprogfind
+  * Fix up copyright file
+  * Use --quiet in mythfilldatabase cron job, and report errors via cron,
+    rather than writing a logfile
+  * mythtv-backend Depends: libqt3c102-mt-mysql | libqt3-mt-mysql, to
+    support unstable
+  * Clean up dependencies a bit, so they should work correctly for
+    distributed setups (though I have none to test at present)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 16 Mar 2003 12:52:31 -0500
+
+mythtv (0.7-12) unstable; urgency=low
+
+  * Add missing '-c' option in example for running mythtv-setup
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 21 Nov 2002 16:27:25 -0500
+
+mythtv (0.7-11) unstable; urgency=low
+
+  * Improve the run_setup template to omit the now-unnecessary --shell
+    option to su, and to give some instruction on how to properly start
+    mythtv for those who don't read README.Debian.
+  * Add workaround for pwgen bug #118181, which exists in woody and was
+    causing the strange failures with exit code 160.
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 19 Nov 2002 11:24:23 -0500
+
+mythtv (0.7-10) unstable; urgency=low
+
+  * Add Bugs: header to control file.  Please use reportbug to report
+    problems with these packages
+  * Include keys.txt in documentation (describes key bindings)
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 17 Nov 2002 17:22:11 -0500
+
+mythtv (0.7-9) unstable; urgency=low
+
+  * When generating a random password, store it in the debconf database for
+    next time
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Fri, 15 Nov 2002 18:16:06 -0500
+
+mythtv (0.7-8) unstable; urgency=low
+
+  * Fix sections
+  * Redirect mythfilldatabase stderr to the logfile, as well as stdout
+    (filed Debian bug #169157 against xmltv to get this fixed right)
+  * Add missing dependency on pwgen
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 14 Nov 2002 21:24:31 -0500
+
+mythtv (0.7-7) unstable; urgency=low
+
+  * Depend on pwgen, and generate a random password if none is specified
+  * Fix setup text to not recommend "su --shell" since the mythtv user now
+    has a real shell
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 13 Nov 2002 23:47:55 -0500
+
+mythtv (0.7-6) unstable; urgency=low
+
+  * Depend on adduser
+  * Ensure that we are doing an upgrade before comparing the version
+    number
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 13 Nov 2002 23:19:12 -0500
+
+mythtv (0.7-5) unstable; urgency=low
+
+  * Split libmyth into its own package(s) in order to facilitate packaging
+    of add-ons such as mythmusic and mythweb
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 13 Nov 2002 19:45:51 -0500
+
+mythtv (0.7-4) unstable; urgency=low
+
+  * Add a real package description
+  * Add a README.Debian
+  * Create the mythtv user with shell /bin/sh, and change the shell on
+    upgrade from a previous version
+  * Flesh out some of the debconf questions with more explanations
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue, 12 Nov 2002 23:17:58 -0500
+
+mythtv (0.7-3) unstable; urgency=low
+
+  * Revert to the RingBuffer in 0.7-1 for now
+  * Build against woody libc6
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sun, 10 Nov 2002 18:44:49 -0500
+
+mythtv (0.7-2) unstable; urgency=low
+
+  * Revert RingBuffer changes, which caused a drastic performance decrease on
+    my installation
+  * Improve clean target
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat,  9 Nov 2002 22:19:17 -0500
+
+mythtv (0.7-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat,  9 Nov 2002 17:38:51 -0500
+
+mythtv (0.6+cvs.20021109-1) unstable; urgency=low
+
+  * Synched with upstream CVS
+  * Make a shlibs file and corresponding virtual package for libmyth
+  * Add dependency on wget, used for fetching channel logos
+  * Fix permissions on configuration files
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat,  9 Nov 2002 15:56:47 -0500
+
+mythtv (0.6+cvs.20021106-3) unstable; urgency=low
+
+  * Grant privileges to user@localhost as well as user@'%' so that stuff
+    should work with a local database
+  * Add documentation
+  * Call MAKEDEV to create v4l devices with appropriate permissions
+  * Create database tables using mc.sql
+  * Add lots more configuration options
+  * Patch setup to explain how to run mythfilldatabase as the mythtv user
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Sat,  9 Nov 2002 15:20:32 -0500
+
+mythtv (0.6+cvs.20021106-2) unstable; urgency=low
+
+  * First attempt at database setup at install time
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed,  6 Nov 2002 23:28:39 -0500
+
+mythtv (0.6+cvs.20021106-1) unstable; urgency=low
+
+  * Synched with upstream CVS
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed,  6 Nov 2002 19:38:20 -0500
+
+mythtv (0.6+cvs.20021105-1) unstable; urgency=low
+
+  * Synched with upstream CVS
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Tue,  5 Nov 2002 22:51:35 -0500
+
+mythtv (0.6+cvs.20021031-1) unstable; urgency=low
+
+  * Synched with upstream CVS
+  * Move config files to /etc/mythtv
+  * postinst: Create mythtv user and set permissions
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Thu, 31 Oct 2002 22:28:33 -0500
+
+mythtv (0.6-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx>  Wed, 16 Oct 2002 23:20:56 -0400
+

=== added file 'debian/clean'
--- debian/clean	1970-01-01 00:00:00 +0000
+++ debian/clean	2011-05-12 02:35:46 +0000
@@ -0,0 +1,29 @@
+debian/shlibs.local
+version.cpp
+mythtv/config.mak
+mythtv/config.h
+mythtv/config.log
+mythtv/bindings/python/build
+mythtv/programs/mythbackend/version.cpp
+mythtv/programs/mythfrontend/version.cpp
+mythtv/libs/libmythupnp/version.cpp
+mythtv/external/FFmpeg/.config
+mythtv/external/FFmpeg/.version
+mythtv/external/FFmpeg/config.h
+mythtv/VERSION
+mythplugins/debian
+mythplugins/config.pro
+mythplugins/config.log
+mythplugins/config.mak
+mythplugins/config.h
+mythplugins/config.ep
+mythplugins/mythconfig.mak
+mythplugins/mythgallery/mythgallery/config.h
+mythplugins/mythmusic/mythmusic/config.h
+mythplugins/mythgallery/mythgallery/config.pro
+mythplugins/mythgallery/config.pro
+mythplugins/mythmusic/mythmusic/config.pro
+mythplugins/mytharchive/mytharchive/config.h
+mythplugins/mytharchive/mytharchive/config.pro
+mythplugins/cleanup/Makefile
+.qmake*

=== added file 'debian/compat'
--- debian/compat	1970-01-01 00:00:00 +0000
+++ debian/compat	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+7

=== added file 'debian/control'
--- debian/control	1970-01-01 00:00:00 +0000
+++ debian/control	2011-05-12 02:35:46 +0000
@@ -0,0 +1,509 @@
+Source: mythtv
+Section: graphics
+Priority: optional
+Maintainer: MythTV Ubuntu Maintainers <ubuntu-mythtv@xxxxxxxxxxxxxxxx>
+Uploaders: Mario Limonciello <superm1@xxxxxxxxxx>,
+           Andres Mejia <mcitadel@xxxxxxxxx>,
+Homepage: http://www.mythtv.org
+Standards-Version: 3.8.4
+Vcs-Bzr: bzr+ssh://bazaar.launchpad.net/~mythbuntu/mythtv/mythtv-fixes
+Vcs-Browser: http://bazaar.launchpad.net/~mythbuntu/mythtv/mythtv-fixes
+Build-Conflicts: libqt3-mt-dev
+Build-Depends:  debhelper (>= 7.0.50~),
+                quilt,
+                ccache,
+                yasm,
+                libqt4-dev,
+                libqtwebkit-dev | libqt4-webkit-dev | libqt4-dev (<< 4:4.7.0~beta1),
+                libqt4-opengl-dev,
+                libdvb-dev,
+                po-debconf,
+                texi2html,
+                python-central,
+                linux-kernel-headers,
+                libdvdnav-dev,
+                libfreetype6-dev,
+                libavc1394-dev,
+                libiec61883-dev (>= 1.0.0),
+                liblircclient-dev,
+                libxinerama-dev | xlibs-static-dev (<< 6.8.1-1),
+                libxxf86vm-dev | xlibs-static-dev (<< 6.8.1-1),
+                libmysqlclient16-dev,
+                libxvmc-dev | xlibs-static-dev (<< 6.8.1-1),
+                libxext-dev | xlibs-static-dev (<< 6.8.1-1),
+                libimlib2-dev,
+                libasound2-dev,
+                libmp3lame-dev | liblame-dev,
+                libvorbis-dev,
+                libdts-dev,
+                lsb-release,
+                libpulse-dev,
+                libxrandr-dev,
+                libfftw3-dev,
+                libvdpau-dev [i386 amd64 armel] | nvidia-190-libvdpau-dev [i386 amd64] | nvidia-185-libvdpau-dev [i386 amd64] | nvidia-180-libvdpau-dev [i386 amd64],
+                libudev-dev,
+                libclass-dbi-perl,
+                libnet-upnp-perl,
+                libwww-perl,
+                python-oauth,
+                python-lxml,
+                python-mysqldb,
+                python-pycurl,
+                libgl1-mesa-dev | xlibmesa-gl-dev | xlibmesa-dev | libgl-dev,
+                libdvdread-dev | libdvdread3-dev,
+                fftw-dev,
+                libvorbis-dev,
+                libflac-dev,
+                libmad0-dev,
+                libcdaudio-dev,
+                libcdparanoia-dev | libcdparanoia0-dev,
+                libsdl1.2-dev,
+                libfaad-dev | libfaad2-dev,
+                libexif-dev (>= 0.6.9-6),
+                libfaac-dev,
+                libtiff4-dev | libtiff-dev,
+                libxv-dev,
+                libtag1-dev,
+                libvisual-0.4-dev,
+                libmysqlclient16-dev | libmysqlclient15-dev,
+                libdate-manip-perl,
+                libxml-simple-perl,
+                libimage-size-perl,
+                libdatetime-format-iso8601-perl,
+                libsoap-lite-perl,
+                libxml-xpath-perl
+
+Package: mythtv
+Architecture: all
+Depends: mysql-server, mythtv-database, mythtv-frontend, mythtv-backend, ntp | time-daemon | ntp-simple, ${misc:Depends}
+Suggests: mythtv-doc
+Description: A personal video recorder application (client and server)
+ MythTV implements the following PVR features, and more, with a
+ unified graphical interface:
+ .
+  - Basic 'live-tv' functionality. Pause/Fast Forward/Rewind "live" TV.
+  - Video compression using RTjpeg or MPEG-4
+  - Program listing retrieval using XMLTV
+  - Themable, semi-transparent on-screen display
+  - Electronic program guide
+  - Scheduled recording of TV programs
+  - Resolution of conflicts between scheduled recordings
+  - Basic video editing
+ .
+ http://www.mythtv.org/
+ .
+ This package will install a complete MythTV client/server environment on a
+ single system.  If you are intended on using this as your only MythTV machine,
+ and this machine is already configured as a desktop, this package will get you
+ up and running switfly.
+ .
+ If you are intended on installing this on a standalone/non-desktop machine,
+ you should look into the metapackages available:
+ mythtv-backend-master (backend with a local database)
+ mythtv-backend (backend needing a remote database)
+
+Package: mythtv-common
+Architecture: any
+Depends: pwgen, adduser, mysql-client, ttf-freefont, ttf-liberation, ttf-droid, ttf-dejavu, python, ${shlibs:Depends}, ${misc:Depends}
+Suggests: mythtv-doc
+Conflicts: mythtv (<< 0.8-1), mythmusic (<< 0.20.99+trunk14393), mythweather (<< 0.20.99+trunk14393), mythcontrols, mythtv-theme-mythcenter, mythtv-theme-mythcenter-wide, mythtv-theme-gray-osd, mythtv-theme-isthmus
+Replaces: mythtv (<< 0.8-1), mythtv-frontend (<< 0.23.0~trunk23548), mythmusic (<< 0.20.99+trunk14393), mythweather (<< 0.20.99+trunk14393), mythcontrols (<< 0.20.trunk19500), mythcontrols, mythtv-theme-mythcenter, mythtv-theme-mythcenter-wide, mythtv-theme-isthmus, mythtv-theme-gray-osd, mythtv-theme-mythbuntu, mythtv-backend (<< 1:0.24.0+fixes27252), mythtv-database (<< 0.24.0~trunk25638)
+Breaks: mythtv-backend (<< 1:0.24.0+fixes27252)
+Description: A personal video recorder application (common data)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains infrastructure needed by both the client and the
+ server.
+
+Package: mythtv-doc
+Architecture: all
+Conflicts: mythtv (<< 0.8-1)
+Section: doc
+Replaces: mythtv (<< 0.8-1)
+Depends: ${misc:Depends}
+Description: A personal video recorder application (documentation)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains documentation, including the MythTV HOWTO.
+
+Package: mythtv-database
+Architecture: all
+Depends: mythtv-common, libdbd-mysql-perl, mysql-client, cron, ${misc:Depends}
+Recommends: update-notifier | update-notifier-kde | adept-notifier
+Conflicts: mythtv (<< 0.8-1), mythtv-common (<< 0.8-2)
+Replaces: mythtv (<< 0.8-1), mythtv-common (<< 0.8-2)
+Description: A personal video recorder application (database)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package sets up a MySQL database for use by MythTV. It should be
+ installed on the system where the MySQL server resides.
+
+Package: mythtv-backend
+Architecture: any
+Depends: mythtv-common, mythtv-transcode-utils, ${shlibs:Depends}, cron, wget, zenity | kdebase-bin, gksu | kdebase-bin, xterm, python, ${misc:Depends}
+Conflicts: mythtv (<< 0.8-1)
+Replaces: mythtv (<< 0.8-1), mythtv-frontend (<= 0.20-0.4)
+Recommends: ntp | time-daemon | ntp-simple, logrotate, libmyth-python, libmythtv-perl
+Suggests: mythtv-frontend, mythweb, mythtv-database, xmltv-util
+Description: A personal video recorder application (server)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains only the server software, which provides video and
+ audio capture and encoding services. In order to be useful, it requires a
+ mythtv-frontend installation, either on the same system or one reachable
+ via the network.
+ .
+ A database is also required. The mythtv-database package must be installed,
+ either on the same system, or one reachable via the network.
+ .
+ For a complete installation of all MythTV components, install the 'mythtv'
+ package.
+
+Package: mythtv-transcode-utils
+Architecture: any
+Depends: mythtv-common, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: mythtv-backend (<< 0.20.2-0ubuntu1)
+Replaces: mythtv-backend (<< 0.20.2-0ubuntu1)
+Suggests: mythtv-backend, mytharchive
+Description: Utilities used for transcoding MythTV tasks
+ Some utilities are applicable for both a frontend or a backend machine.
+ This package provides utilities that can be used on both without
+ requiring an entire backend to be installed.
+
+Package: mythtv-frontend
+Architecture: any
+Depends: mythtv-common, ${shlibs:Depends}, adduser, zenity | kdebase-bin, gksu | kdebase-bin, wmctrl, libnotify-bin, ${misc:Depends}
+Recommends: libmyth-python, libmythtv-perl
+Suggests: mythtv-backend, mythmusic, mythweather, mythgallery, mythvideo, mythgame, ntp | time-daemon | ntp-simple
+Conflicts: mythtv (<< 0.8-1), mythappearance (<< 0.21.0), mythstream (<< 0.21.0), mythflix (<< 0.23.0)
+Replaces: mythtv (<< 0.8-1),  mythappearance (<< 0.21.0)
+Description: A personal video recorder application (client)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains only the client software, which provides a front-end
+ for playback and configuration. It requires access to a mythtv-backend
+ installation, either on the same system or one reachable via the network.
+ .
+ A database is also required. The mythtv-database package must be installed,
+ either on the same system, or one reachable via the network.
+ .
+ For a complete installation of all MythTV components, install the 'mythtv'
+ package.
+
+Package: libmyth-0.24-0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, libqt4-sql-mysql, ${misc:Depends}
+Conflicts: mythtv (<< 0.7-5), libmyth-0.23-0
+Replaces: mythtv (<< 0.7-5), libmyth-0.23-0
+Description: Common library code for MythTV and add-on modules (runtime)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains a shared library, libmyth, which is used by various
+ components in the system.
+
+Package: libmyth-dev
+Architecture: any
+Section: libdevel
+Depends: libmyth-0.24-0 (= ${binary:Version}), ${misc:Depends}
+Provides: libmyth-0.24-0-dev
+Conflicts: libmyth-0.24-0-dev
+Description: Common library code for MythTV and add-on modules (development)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for developing applications which use
+ libmyth (such as the various add-ons for MythTV)
+
+Package: libmythtv-perl
+Architecture: all
+Section: perl
+Depends: ${misc:Depends}, ${perl:Depends}, libdbi-perl, libdbd-mysql-perl, libnet-upnp-perl
+Replaces: mythtv-common (<< 0.20.98 ), libmyth-perl
+Conflicts: mythtv-common (<< 0.20.98 ), libmyth-perl
+Description: A PERL library to access some MythTV features
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for some PERL MythTV add-ons like
+ nuvexport or mythrename.pl.
+
+Package: libmyth-python
+Architecture: all
+Section: libs
+Depends: ${python:Depends}, python-mysqldb, python-lxml, ${misc:Depends}
+Replaces: mythtv-common (<< 0.20.98 )
+Conflicts: mythtv-common (<< 0.20.98 )
+Description: A python library to access some MythTV features
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for some python MythTV add-ons.
+
+
+Package: mythtv-backend-master
+Architecture: all
+Section: metapackages
+Depends: mysql-server, ntp | time-daemon | ntp-simple, mythtv-database, mythtv-backend, ${misc:Depends}
+Recommends: mythweb
+Description: Metapackage to setup and configure a "Master Backend" profile of MythTV.
+ This meta-package will install and configure all necessary packages for this 
+ machine to behave as a "Master" Backend for a mythtv network.  This package 
+ is intended to be installed on the machine that will behave as the first 
+ (and possibly only) backend for the network.  Typically, this package will be
+ installed on a server rather then a desktop. It makes no sense to install it 
+ on anything but the first backend machine on the network.
+
+Package: mythtv-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Recommends: libc6-dbg
+Conflicts: mythplugins-dbg
+Replaces: mythplugins-dbg
+Depends: ${misc:Depends}, mythtv-backend (=${binary:Version}) | mythtv-frontend (=${binary:Version})
+Description: Debug symbols for mythtv packages
+ This package provides all debug symbols for mythtv packages since ddebs
+ don't appear to always do the right thing.
+
+Package: mythplugins
+Architecture: all
+Conflicts: mythflix, mythmovies
+Replaces: mythmovies
+Depends: ${misc:Depends},
+         mythgallery,
+         mythgame,
+         mythmusic,
+         mythnews,
+         mythvideo,
+         mythweather,
+         mythweb,
+         mytharchive,
+         mythbrowser,
+         mythnetvision
+Description: Metapackage package for MythTV plugins
+ This meta-package will install all available MythTV plugins.
+
+Package: mythgallery
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Image gallery/slideshow add-on module for MythTV
+ MythGallery allows you to visually browse a directory tree containing image
+ files. It can display any image file format supported by Qt, and supports
+ image rotation and simple slideshows.
+
+Package: mythgame
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         python, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Emulator & PC Game frontend module for MythTV
+ MythGame can be used as a frontend to start any emulator that your host OS
+ runs.
+
+Package: mythmusic
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Music add-on module for MythTV
+ MythMusic provides a digital audio jukebox integrated with MythTV. It
+ supports Ogg Vorbis, FLAC and MP3 streams, displays visualizations, and can
+ also encode new Ogg Vorbis or FLAC streams from audio CDs using a CD-ROM
+ drive.
+
+Package: mythnews
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: An RSS feed news reader module for MythTV
+ MythNews will fetch RSS feeds for you to read.
+
+Package: mythvideo
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         libxml-simple-perl, 
+         libwww-perl, 
+         libmyth-python, 
+         transcode, 
+         python, 
+         python-imdbpy, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Replaces: mythdvd, mythtv-common (<< 0.20.99+trunk15258-0ubuntu0~mythbuntu1 )
+Conflicts: mythdvd, mythtv-common (<< 0.20.99+trunk15258-0ubuntu0~mythbuntu1 )
+Provides: mythdvd
+Recommends: python-imaging
+Suggests: xine | ogle | mplayer
+Enhances: mythbuntu-control-centre
+Description: A generic video player frontend module for MythTV
+ MythVideo allows you to browse and play video streams, using an external
+ player, from within the MythTV interface. It also acts as a DVD player
+ and DVD backup software, superseding mythdvd.
+
+Package: mythweather
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}, 
+         perl, 
+         libimage-size-perl, 
+         perlmagick, 
+         libxml-parser-perl, 
+         libxml-sax-perl, 
+         libcarp-clan-perl, 
+         libsoap-lite-perl, 
+         libdate-manip-perl, 
+         libwww-perl,
+         libxml-simple-perl,
+         libdatetime-format-iso8601-perl,
+         libxml-xpath-perl
+Conflicts: mythtv-common (<< 0.20.99)
+Replaces:  mythtv-common (<< 0.20.99)
+Description: Weather add-on module for MythTV
+ MythWeather displays current and forecast weather information within
+ MythTV.
+
+Package: mythweb
+Architecture: all
+Depends: mythtv-common (>= ${binary:Version}), 
+         apache2-mpm-prefork | httpd, php5 | libapache2-mod-php5, 
+         php5-mysql, 
+         ${misc:Depends}
+Recommends: libmath-round-perl
+Description: Web interface add-on module for MythTV
+ MythWeb provides a web interface which can be used to view listings,
+ schedule recordings, delete recordings, and search for programs. It can
+ also browse mythmusic's music database, and may eventually support playing
+ music streams as well.
+
+Package: mytharchive
+Architecture: any
+Depends: mythtv-transcode-utils(>= ${binary:Version}), 
+         mythtv-frontend (>= ${binary:Version}), 
+         mjpegtools, 
+         ffmpeg, 
+         dvdauthor, 
+         genisoimage, 
+         dvd+rw-tools, 
+         python, 
+         python-imaging, 
+         python-mysqldb, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Suggests: transcode, project-x
+Replaces: mytharchive-data
+Conflicts: mytharchive-data
+Description: create and burn DVD's from MythTV - binary file
+ MythArchive is a plugin for MythTV that lets you create DVDs from your
+ recorded shows, MythVideo files and any video files available on your
+ system. It can also archive recordings in a proprietary format that
+ archives not only the file but also all the associated metadata like title,
+ description and cut list information which will mean you can create backups
+ of myth recordings which can later be restored or it will also allow you to
+ move recordings between myth systems without losing any of the metadata. It
+ is a complete rewrite of the old MythBurn bash scripts, now using python,
+ and the mythfrontend UI plugin.
+
+Package: mythzoneminder
+Architecture: any
+Suggests: zoneminder
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: view status and display footage recorded with zoneminder
+ MythZoneMinder interfaces with Zoneminder, a CCTV solution.
+ You can view the status of ZoneMinder and watch live camera shots and
+ recorded surveillance footage.
+
+Package: mythbrowser
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: A web browser for MythTV
+ Mythbrowser is a standards compliant web browser plugin for MythTV built
+ on top of Webkit.
+
+Package: mythnetvision
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         mythbrowser (>= ${binary:Version}), 
+         libmyth-python (>= ${binary:Version}), 
+         python-feedparser, 
+         python-pycurl,
+         ${shlibs:Depends}, 
+         ${misc:Depends} 
+Recommends: flashplugin-installer | adobe-flashplugin
+Description: A Internet Video Player plugin for MythTV
+ MythNetvision is a plugin designed to make adding Internet video sources to 
+ MythTV fun and easy. MythNetvision consists of two components:
+ - a search screen
+ - a site/RSS browser screen.
+ When installed, MythNetvision appears on the Media Library screen as the 
+ options "Search Internet Video" and "Browse Internet Video."
+
+Package: mythtv-themes
+Architecture: all
+Depends: mythtv-theme-arclight, mythtv-theme-childish, mythtv-theme-graphite, mythtv-theme-metallurgy, mythtv-theme-mythbuntu, ${misc:Depends}
+Conflicts: mythtv-theme-blootube, 
+           mythtv-theme-blootube-wide,
+           mythtv-theme-blootubelite-wide,
+           mythtv-theme-glass-wide,
+           mythtv-theme-projectgrayhem,
+           mythtv-theme-proejctgrayhem-wide,
+           mythtv-theme-minimalist-wide,
+           mythtv-theme-retro,
+           mythtv-theme-titivillus,
+           mythtv-theme-iulius,
+           mythtv-theme-neon-wide
+Description: Themes for MythTV
+ This package is a metapackage to pull in all of the supported themes
+ that are available on svn.mythtv.org not directly in the MythTV
+ package itself, nor the mythtv-themes-extra metapackage.
+
+Package: mythtv-theme-arclight
+Architecture: all
+Depends: mythtv-common, ttf-dejavu, ${misc:Depends}
+Replaces: mythtv-common (<< 1:0.22.0~zrc1-0ubuntu1)
+Description: The arclight MythTV Theme
+ This package provides the arclight theme for MythTV.
+
+Package: mythtv-theme-childish
+Architecture: all
+Depends: mythtv-common, ttf-dejavu, ${misc:Depends}
+Replaces: mythtv-common (<< 1:0.22.0~zrc1-0ubuntu1)
+Description: The childish MythTV Theme
+ This package provides the childish theme for MythTV.
+
+Package: mythtv-theme-graphite
+Architecture: all
+Depends: mythtv-common, ttf-dejavu, ${misc:Depends}
+Replaces: mythtv-common (<< 1:0.22.0~zrc1-0ubuntu1)
+Description: The graphite MythTV Theme
+ This package provides the graphite theme for MythTV.
+
+Package: mythtv-theme-metallurgy
+Architecture: all
+Depends: mythtv-common, ttf-dejavu, ${misc:Depends}
+Replaces: mythtv-common (<< 1:0.22.0~zrc1-0ubuntu1)
+Description: The metallurgy MythTV Theme
+ This package provides the metallurgy theme for MythTV.
+
+Package: mythtv-theme-mythbuntu
+Architecture: all
+Depends: mythtv-common, ttf-dejavu, ${misc:Depends}
+Replaces: mythtv-common (<< 1:0.22.0~zrc1-0ubuntu1)
+Description: The mythbuntu MythTV Theme
+ This package provides the mythbuntu theme for MythTV.
+

=== added file 'debian/control.in'
--- debian/control.in	1970-01-01 00:00:00 +0000
+++ debian/control.in	2011-05-12 02:35:46 +0000
@@ -0,0 +1,474 @@
+Source: mythtv
+Section: graphics
+Priority: optional
+Maintainer: MythTV Ubuntu Maintainers <ubuntu-mythtv@xxxxxxxxxxxxxxxx>
+Uploaders: Mario Limonciello <superm1@xxxxxxxxxx>,
+           Andres Mejia <mcitadel@xxxxxxxxx>,
+Homepage: http://www.mythtv.org
+Standards-Version: 3.8.4
+Vcs-Bzr: bzr+ssh://bazaar.launchpad.net/~mythbuntu/mythtv/mythtv-#TYPE#
+Vcs-Browser: http://bazaar.launchpad.net/~mythbuntu/mythtv/mythtv-#TYPE#
+Build-Conflicts: libqt3-mt-dev
+Build-Depends:  debhelper (>= 7.0.50~),
+                quilt,
+                ccache,
+                yasm,
+                libqt4-dev,
+                libqtwebkit-dev | libqt4-webkit-dev | libqt4-dev (<< 4:4.7.0~beta1),
+                libqt4-opengl-dev,
+                libdvb-dev,
+                po-debconf,
+                texi2html,
+                python-central,
+                linux-kernel-headers,
+                libdvdnav-dev,
+                libfreetype6-dev,
+                libavc1394-dev,
+                libiec61883-dev (>= 1.0.0),
+                liblircclient-dev,
+                libxinerama-dev | xlibs-static-dev (<< 6.8.1-1),
+                libxxf86vm-dev | xlibs-static-dev (<< 6.8.1-1),
+                libmysqlclient16-dev,
+                libxvmc-dev | xlibs-static-dev (<< 6.8.1-1),
+                libxext-dev | xlibs-static-dev (<< 6.8.1-1),
+                libimlib2-dev,
+                libasound2-dev,
+                libmp3lame-dev | liblame-dev,
+                libvorbis-dev,
+                libdts-dev,
+                lsb-release,
+                libpulse-dev,
+                libxrandr-dev,
+                libfftw3-dev,
+                libvdpau-dev [i386 amd64 armel] | nvidia-190-libvdpau-dev [i386 amd64] | nvidia-185-libvdpau-dev [i386 amd64] | nvidia-180-libvdpau-dev [i386 amd64],
+                libudev-dev,
+                libclass-dbi-perl,
+                libnet-upnp-perl,
+                libwww-perl,
+                python-oauth,
+                python-lxml,
+                python-mysqldb,
+                python-pycurl,
+                libgl1-mesa-dev | xlibmesa-gl-dev | xlibmesa-dev | libgl-dev,
+                libdvdread-dev | libdvdread3-dev,
+                fftw-dev,
+                libvorbis-dev,
+                libflac-dev,
+                libmad0-dev,
+                libcdaudio-dev,
+                libcdparanoia-dev | libcdparanoia0-dev,
+                libsdl1.2-dev,
+                libfaad-dev | libfaad2-dev,
+                libexif-dev (>= 0.6.9-6),
+                libfaac-dev,
+                libtiff4-dev | libtiff-dev,
+                libxv-dev,
+                libtag1-dev,
+                libvisual-0.4-dev,
+                libmysqlclient16-dev | libmysqlclient15-dev,
+                libdate-manip-perl,
+                libxml-simple-perl,
+                libimage-size-perl,
+                libdatetime-format-iso8601-perl,
+                libsoap-lite-perl,
+                libxml-xpath-perl
+
+Package: mythtv
+Architecture: all
+Depends: mysql-server, mythtv-database, mythtv-frontend, mythtv-backend, ntp | time-daemon | ntp-simple, ${misc:Depends}
+Suggests: mythtv-doc
+Description: A personal video recorder application (client and server)
+ MythTV implements the following PVR features, and more, with a
+ unified graphical interface:
+ .
+  - Basic 'live-tv' functionality. Pause/Fast Forward/Rewind "live" TV.
+  - Video compression using RTjpeg or MPEG-4
+  - Program listing retrieval using XMLTV
+  - Themable, semi-transparent on-screen display
+  - Electronic program guide
+  - Scheduled recording of TV programs
+  - Resolution of conflicts between scheduled recordings
+  - Basic video editing
+ .
+ http://www.mythtv.org/
+ .
+ This package will install a complete MythTV client/server environment on a
+ single system.  If you are intended on using this as your only MythTV machine,
+ and this machine is already configured as a desktop, this package will get you
+ up and running switfly.
+ .
+ If you are intended on installing this on a standalone/non-desktop machine,
+ you should look into the metapackages available:
+ mythtv-backend-master (backend with a local database)
+ mythtv-backend (backend needing a remote database)
+
+Package: mythtv-common
+Architecture: any
+Depends: pwgen, adduser, mysql-client, ttf-freefont, ttf-liberation, ttf-droid, ttf-dejavu, python, ${shlibs:Depends}, ${misc:Depends}
+Suggests: mythtv-doc
+Conflicts: mythtv (<< 0.8-1), mythmusic (<< 0.20.99+trunk14393), mythweather (<< 0.20.99+trunk14393), mythcontrols, mythtv-theme-mythcenter, mythtv-theme-mythcenter-wide, mythtv-theme-gray-osd, mythtv-theme-isthmus
+Replaces: mythtv (<< 0.8-1), mythtv-frontend (<< 0.23.0~trunk23548), mythmusic (<< 0.20.99+trunk14393), mythweather (<< 0.20.99+trunk14393), mythcontrols (<< 0.20.trunk19500), mythcontrols, mythtv-theme-mythcenter, mythtv-theme-mythcenter-wide, mythtv-theme-isthmus, mythtv-theme-gray-osd, mythtv-theme-mythbuntu, mythtv-backend (<< 1:0.24.0+fixes27252), mythtv-database (<< 0.24.0~trunk25638)
+Breaks: mythtv-backend (<< 1:0.24.0+fixes27252)
+Description: A personal video recorder application (common data)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains infrastructure needed by both the client and the
+ server.
+
+Package: mythtv-doc
+Architecture: all
+Conflicts: mythtv (<< 0.8-1)
+Section: doc
+Replaces: mythtv (<< 0.8-1)
+Depends: ${misc:Depends}
+Description: A personal video recorder application (documentation)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains documentation, including the MythTV HOWTO.
+
+Package: mythtv-database
+Architecture: all
+Depends: mythtv-common, libdbd-mysql-perl, mysql-client, cron, ${misc:Depends}
+Recommends: update-notifier | update-notifier-kde | adept-notifier
+Conflicts: mythtv (<< 0.8-1), mythtv-common (<< 0.8-2)
+Replaces: mythtv (<< 0.8-1), mythtv-common (<< 0.8-2)
+Description: A personal video recorder application (database)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package sets up a MySQL database for use by MythTV. It should be
+ installed on the system where the MySQL server resides.
+
+Package: mythtv-backend
+Architecture: any
+Depends: mythtv-common, mythtv-transcode-utils, ${shlibs:Depends}, cron, wget, zenity | kdebase-bin, gksu | kdebase-bin, xterm, python, ${misc:Depends}
+Conflicts: mythtv (<< 0.8-1)
+Replaces: mythtv (<< 0.8-1), mythtv-frontend (<= 0.20-0.4)
+Recommends: ntp | time-daemon | ntp-simple, logrotate, libmyth-python, libmythtv-perl
+Suggests: mythtv-frontend, mythweb, mythtv-database, xmltv-util
+Description: A personal video recorder application (server)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains only the server software, which provides video and
+ audio capture and encoding services. In order to be useful, it requires a
+ mythtv-frontend installation, either on the same system or one reachable
+ via the network.
+ .
+ A database is also required. The mythtv-database package must be installed,
+ either on the same system, or one reachable via the network.
+ .
+ For a complete installation of all MythTV components, install the 'mythtv'
+ package.
+
+Package: mythtv-transcode-utils
+Architecture: any
+Depends: mythtv-common, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: mythtv-backend (<< 0.20.2-0ubuntu1)
+Replaces: mythtv-backend (<< 0.20.2-0ubuntu1)
+Suggests: mythtv-backend, mytharchive
+Description: Utilities used for transcoding MythTV tasks
+ Some utilities are applicable for both a frontend or a backend machine.
+ This package provides utilities that can be used on both without
+ requiring an entire backend to be installed.
+
+Package: mythtv-frontend
+Architecture: any
+Depends: mythtv-common, ${shlibs:Depends}, adduser, zenity | kdebase-bin, gksu | kdebase-bin, wmctrl, libnotify-bin, ${misc:Depends}
+Recommends: libmyth-python, libmythtv-perl
+Suggests: mythtv-backend, mythmusic, mythweather, mythgallery, mythvideo, mythgame, ntp | time-daemon | ntp-simple
+Conflicts: mythtv (<< 0.8-1), mythappearance (<< 0.21.0), mythstream (<< 0.21.0), mythflix (<< 0.23.0)
+Replaces: mythtv (<< 0.8-1),  mythappearance (<< 0.21.0)
+Description: A personal video recorder application (client)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains only the client software, which provides a front-end
+ for playback and configuration. It requires access to a mythtv-backend
+ installation, either on the same system or one reachable via the network.
+ .
+ A database is also required. The mythtv-database package must be installed,
+ either on the same system, or one reachable via the network.
+ .
+ For a complete installation of all MythTV components, install the 'mythtv'
+ package.
+
+Package: libmyth-#ABI#-0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, libqt4-sql-mysql, ${misc:Depends}
+Conflicts: mythtv (<< 0.7-5), libmyth-0.23-0
+Replaces: mythtv (<< 0.7-5), libmyth-0.23-0
+Description: Common library code for MythTV and add-on modules (runtime)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains a shared library, libmyth, which is used by various
+ components in the system.
+
+Package: libmyth-dev
+Architecture: any
+Section: libdevel
+Depends: libmyth-#ABI#-0 (= ${binary:Version}), ${misc:Depends}
+Provides: libmyth-#ABI#-0-dev
+Conflicts: libmyth-#ABI#-0-dev
+Description: Common library code for MythTV and add-on modules (development)
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for developing applications which use
+ libmyth (such as the various add-ons for MythTV)
+
+Package: libmythtv-perl
+Architecture: all
+Section: perl
+Depends: ${misc:Depends}, ${perl:Depends}, libdbi-perl, libdbd-mysql-perl, libnet-upnp-perl
+Replaces: mythtv-common (<< 0.20.98 ), libmyth-perl
+Conflicts: mythtv-common (<< 0.20.98 ), libmyth-perl
+Description: A PERL library to access some MythTV features
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for some PERL MythTV add-ons like
+ nuvexport or mythrename.pl.
+
+Package: libmyth-python
+Architecture: all
+Section: libs
+Depends: ${python:Depends}, python-mysqldb, python-lxml, ${misc:Depends}
+Replaces: mythtv-common (<< 0.20.98 )
+Conflicts: mythtv-common (<< 0.20.98 )
+Description: A python library to access some MythTV features
+ MythTV provides a unified graphical interface for recording and viewing
+ television programs. Refer to the mythtv package for more information.
+ .
+ This package contains files needed for some python MythTV add-ons.
+
+
+Package: mythtv-backend-master
+Architecture: all
+Section: metapackages
+Depends: mysql-server, ntp | time-daemon | ntp-simple, mythtv-database, mythtv-backend, ${misc:Depends}
+Recommends: mythweb
+Description: Metapackage to setup and configure a "Master Backend" profile of MythTV.
+ This meta-package will install and configure all necessary packages for this 
+ machine to behave as a "Master" Backend for a mythtv network.  This package 
+ is intended to be installed on the machine that will behave as the first 
+ (and possibly only) backend for the network.  Typically, this package will be
+ installed on a server rather then a desktop. It makes no sense to install it 
+ on anything but the first backend machine on the network.
+
+Package: mythtv-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Recommends: libc6-dbg
+Conflicts: mythplugins-dbg
+Replaces: mythplugins-dbg
+Depends: ${misc:Depends}, mythtv-backend (=${binary:Version}) | mythtv-frontend (=${binary:Version})
+Description: Debug symbols for mythtv packages
+ This package provides all debug symbols for mythtv packages since ddebs
+ don't appear to always do the right thing.
+
+Package: mythplugins
+Architecture: all
+Conflicts: mythflix, mythmovies
+Replaces: mythmovies
+Depends: ${misc:Depends},
+         mythgallery,
+         mythgame,
+         mythmusic,
+         mythnews,
+         mythvideo,
+         mythweather,
+         mythweb,
+         mytharchive,
+         mythbrowser,
+         mythnetvision
+Description: Metapackage package for MythTV plugins
+ This meta-package will install all available MythTV plugins.
+
+Package: mythgallery
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Image gallery/slideshow add-on module for MythTV
+ MythGallery allows you to visually browse a directory tree containing image
+ files. It can display any image file format supported by Qt, and supports
+ image rotation and simple slideshows.
+
+Package: mythgame
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         python, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Emulator & PC Game frontend module for MythTV
+ MythGame can be used as a frontend to start any emulator that your host OS
+ runs.
+
+Package: mythmusic
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: Music add-on module for MythTV
+ MythMusic provides a digital audio jukebox integrated with MythTV. It
+ supports Ogg Vorbis, FLAC and MP3 streams, displays visualizations, and can
+ also encode new Ogg Vorbis or FLAC streams from audio CDs using a CD-ROM
+ drive.
+
+Package: mythnews
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: An RSS feed news reader module for MythTV
+ MythNews will fetch RSS feeds for you to read.
+
+Package: mythvideo
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         libxml-simple-perl, 
+         libwww-perl, 
+         libmyth-python, 
+         transcode, 
+         python, 
+         python-imdbpy, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Replaces: mythdvd, mythtv-common (<< 0.20.99+trunk15258-0ubuntu0~mythbuntu1 )
+Conflicts: mythdvd, mythtv-common (<< 0.20.99+trunk15258-0ubuntu0~mythbuntu1 )
+Provides: mythdvd
+Recommends: python-imaging
+Suggests: xine | ogle | mplayer
+Enhances: mythbuntu-control-centre
+Description: A generic video player frontend module for MythTV
+ MythVideo allows you to browse and play video streams, using an external
+ player, from within the MythTV interface. It also acts as a DVD player
+ and DVD backup software, superseding mythdvd.
+
+Package: mythweather
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}, 
+         perl, 
+         libimage-size-perl, 
+         perlmagick, 
+         libxml-parser-perl, 
+         libxml-sax-perl, 
+         libcarp-clan-perl, 
+         libsoap-lite-perl, 
+         libdate-manip-perl, 
+         libwww-perl,
+         libxml-simple-perl,
+         libdatetime-format-iso8601-perl,
+         libxml-xpath-perl
+Conflicts: mythtv-common (<< 0.20.99)
+Replaces:  mythtv-common (<< 0.20.99)
+Description: Weather add-on module for MythTV
+ MythWeather displays current and forecast weather information within
+ MythTV.
+
+Package: mythweb
+Architecture: all
+Depends: mythtv-common (>= ${binary:Version}), 
+         apache2-mpm-prefork | httpd, php5 | libapache2-mod-php5, 
+         php5-mysql, 
+         ${misc:Depends}
+Recommends: libmath-round-perl
+Description: Web interface add-on module for MythTV
+ MythWeb provides a web interface which can be used to view listings,
+ schedule recordings, delete recordings, and search for programs. It can
+ also browse mythmusic's music database, and may eventually support playing
+ music streams as well.
+
+Package: mytharchive
+Architecture: any
+Depends: mythtv-transcode-utils(>= ${binary:Version}), 
+         mythtv-frontend (>= ${binary:Version}), 
+         mjpegtools, 
+         ffmpeg, 
+         dvdauthor, 
+         genisoimage, 
+         dvd+rw-tools, 
+         python, 
+         python-imaging, 
+         python-mysqldb, 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Suggests: transcode, project-x
+Replaces: mytharchive-data
+Conflicts: mytharchive-data
+Description: create and burn DVD's from MythTV - binary file
+ MythArchive is a plugin for MythTV that lets you create DVDs from your
+ recorded shows, MythVideo files and any video files available on your
+ system. It can also archive recordings in a proprietary format that
+ archives not only the file but also all the associated metadata like title,
+ description and cut list information which will mean you can create backups
+ of myth recordings which can later be restored or it will also allow you to
+ move recordings between myth systems without losing any of the metadata. It
+ is a complete rewrite of the old MythBurn bash scripts, now using python,
+ and the mythfrontend UI plugin.
+
+Package: mythzoneminder
+Architecture: any
+Suggests: zoneminder
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: view status and display footage recorded with zoneminder
+ MythZoneMinder interfaces with Zoneminder, a CCTV solution.
+ You can view the status of ZoneMinder and watch live camera shots and
+ recorded surveillance footage.
+
+Package: mythbrowser
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         ${shlibs:Depends}, 
+         ${misc:Depends}
+Description: A web browser for MythTV
+ Mythbrowser is a standards compliant web browser plugin for MythTV built
+ on top of Webkit.
+
+Package: mythnetvision
+Architecture: any
+Depends: mythtv-frontend (>= ${binary:Version}), 
+         mythbrowser (>= ${binary:Version}), 
+         libmyth-python (>= ${binary:Version}), 
+         python-feedparser, 
+         python-pycurl,
+         ${shlibs:Depends}, 
+         ${misc:Depends} 
+Recommends: flashplugin-installer | adobe-flashplugin
+Description: A Internet Video Player plugin for MythTV
+ MythNetvision is a plugin designed to make adding Internet video sources to 
+ MythTV fun and easy. MythNetvision consists of two components:
+ - a search screen
+ - a site/RSS browser screen.
+ When installed, MythNetvision appears on the Media Library screen as the 
+ options "Search Internet Video" and "Browse Internet Video."
+
+Package: mythtv-themes
+Architecture: all
+Depends: #THEMES#, ${misc:Depends}
+Conflicts: mythtv-theme-blootube, 
+           mythtv-theme-blootube-wide,
+           mythtv-theme-blootubelite-wide,
+           mythtv-theme-glass-wide,
+           mythtv-theme-projectgrayhem,
+           mythtv-theme-proejctgrayhem-wide,
+           mythtv-theme-minimalist-wide,
+           mythtv-theme-retro,
+           mythtv-theme-titivillus,
+           mythtv-theme-iulius,
+           mythtv-theme-neon-wide
+Description: Themes for MythTV
+ This package is a metapackage to pull in all of the supported themes
+ that are available on svn.mythtv.org not directly in the MythTV
+ package itself, nor the mythtv-themes-extra metapackage.
+

=== added file 'debian/copyright'
--- debian/copyright	1970-01-01 00:00:00 +0000
+++ debian/copyright	2011-05-12 02:35:46 +0000
@@ -0,0 +1,68 @@
+This package was debianized by Matt Zimmerman <mdz@xxxxxxxxxx> on
+Wed, 16 Oct 2002 23:20:56 -0400.
+
+It was downloaded from http://www.mythtv.org/
+
+Upstream Authors:
+
+Main Author: 
+    Isaac Richards <ijr@xxxxxxxxxxx>
+
+Original NuppelVideo version: 
+    Roman HOCHLEITNER <roman at mars.tuwien.ac.at>
+libavcodec, from ffmpeg.sf.net:
+    Fabrice Bellard <fabrice.bellard at free.fr>
+Rewritten player class and improved a/v sync code:
+    John Coiner <jcoiner at stanfordalumni.org>
+TangoBlue theme:
+    Forrest Walter - www.forrestwalter.com
+LiquidTV theme:
+    jer warren <>
+Selectable GUI sizes:
+    thor at lamedomainname.com
+Video Filters:
+    Richard Jones <richard at earthmen.com>
+Misc changes:
+    Grant Taylor <gtaylor at picante.com>
+Colorize the EPG:
+    skrpub <skrpub at earthlink.net>
+Bugfixes, EPG updates, more UK friendly database filling, lots of other things:
+    Andrew M. Bishop <amb at gedanken.demon.co.uk>
+Non-integer channel fixes, customizable date displays:
+    Jens Lohmann-Hansen <JensLH at adslhome.dk>
+Modifyable install prefix, recording/scheduler improvements, mono support, more:
+    Jim Radford <jim at blackbean.org>
+Keybinding to toggle fullscreen playback, EPG speedups:
+    Erik Arendse <erik.arendse at bigfoot.com>
+EPG/filldatabase enhancements:
+    Christian Hoenig <me at christianhoenig.de>
+Setup enhancements:
+    Dan Schwarz <dschwarz at bellatlantic.net>
+Large amount of documentation:
+    Robert Kulagowski <rkulagowski at thrupoint.net>
+Alternative EPG layout:
+    John Danner <johndanner at psu.edu>
+Graphical setup UI, database backend for configuration, initial direct rendering support
+    Matt Zimmerman <mdz at debian.org>
+
+Copyright:
+    Copyright (C) 2002-2010 Isaac Richards <ijr@xxxxxxxxxxx> et al.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; version 2 of the License only.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program. If not, see <http://www.gnu.org/licenses/>.
+
+MythTV is distributed under the terms of the GPL, version 2 only.
+If you don't have a copy of the GPL, get one at:
+     http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
+
+On Debian systems, a copy of the GPL can be found in
+/usr/share/common-licenses/GPL-2.

=== added file 'debian/dialog_functions.sh'
--- debian/dialog_functions.sh	1970-01-01 00:00:00 +0000
+++ debian/dialog_functions.sh	2011-05-12 02:35:46 +0000
@@ -0,0 +1,188 @@
+#!/bin/sh
+# The following set of functions are borrowed from UCK and xdg-utils
+# with minor modifications as well as a few written myself
+#- Mario Limonciello, March 2007
+###################################################################
+
+find_dialog()
+{
+        if [ -z "$DIALOG" ] ; then
+                DIALOG=`which zenity`
+
+                if [ ! -z "$DIALOG" ]; then
+                        DIALOG_TYPE=zenity
+                fi
+        fi
+
+        if [ -z "$DIALOG" ]; then
+                DIALOG=`which kdialog`
+
+                if [ ! -z "$DIALOG" ]; then
+                        DIALOG_TYPE=kdialog
+                fi
+        fi
+
+        if [ -z $DIALOG ]; then
+                failure "You need zenity or kdialog installed to run mythfrontend"
+        fi
+}
+
+find_session()
+{
+    if [ x"$KDE_FULL_SESSION" = x"true" ]; then 
+	DE=kde;
+	DIALOG=`which kdialog`;
+	DIALOG_TYPE=kdialog;
+        SU=`which kdesudo`
+	SU_TYPE=kdesudo
+    elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then 
+	DE=gnome;
+	DIALOG=`which zenity`;
+	DIALOG_TYPE=zenity;
+        SU=`which gksu`
+	SU_TYPE=gksu
+    elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then 
+	DE=xfce;
+	DIALOG=`which zenity`;
+	DIALOG_TYPE=zenity;
+        SU=`which gksu`
+	SU_TYPE=gksu
+    fi
+}
+
+find_su()
+{
+        if [ -z "$SU" ] ; then
+                SU=`which gksu`
+
+                if [ -z "$SU_TYPE" ]; then
+                        SU_TYPE=gksu
+                fi
+        fi
+
+        if [ -z "$SU" ]; then
+                SU=`which kdesu`
+
+                if [ -z "$SU_TYPE" ]; then
+                        SU_TYPE=kdesu
+                fi
+        fi
+
+        if [ -z "$SU" ]; then
+                SU=`which kdesudo`
+
+                if [ -z "$SU_TYPE" ]; then
+                        SU_TYPE=kdesudo
+                fi
+        fi
+
+
+        if [ -z "$SU_TYPE" ]; then
+                failure "You need gksu or kdesu installed to run mythfrontend"
+        fi
+}
+
+dialog_choose_file()
+{
+        TITLE="$1"
+
+        if [ "$DIALOG_TYPE" = "zenity" ] ; then
+                $DIALOG --title "$TITLE" --file-selection "`pwd`/"
+        else
+                if [ "$DIALOG_TYPE" = "kdialog" ] ; then
+                        $DIALOG --title "$TITLE" --getopenfilename "`pwd`/"
+                else
+                        $DIALOG --stdout --title "$TITLE" --fselect "`pwd`/" 20 80
+                fi
+        fi
+}
+
+dialog_msgbox()
+{
+        TITLE="$1"
+        TEXT="$2"
+
+        if [ "$DIALOG_TYPE" = "zenity" ]; then
+                echo -n "$TEXT" | $DIALOG --title "$TITLE" --text-info --width=500 --height=400
+        else
+                $DIALOG --title "$TITLE" --msgbox "$TEXT" 20 80
+        fi
+}
+
+dialog_question()
+{
+        TITLE="$1"
+        TEXT="$2"
+
+        if [ "$DIALOG_TYPE" = "zenity" ]; then
+                $DIALOG --title "$TITLE" --question --text "$TEXT"
+        else
+                $DIALOG --title "$TITLE" --yesno "$TEXT" 20 80
+        fi
+}
+
+failure()
+{
+	echo "$@"
+	exit 1
+}
+
+check_groups()
+{
+if [ -n "$(groups | grep --invert-match mythtv)" ]
+then
+	if [ -e ~/.mythtv/ignoregroup ]
+	then
+		IGNORE_NOT=0
+	else	
+		dialog_question "Incorrect Group Membership" "You must be a member of the \"mythtv\" group before starting any mythtv applications.\nWould you like to automatically be added to the group?\n(Note: sudo access required)"
+		ADD_NOT=$?
+		# 0 means that they do want in
+		# 1 means that they don't want in
+		if [ "$ADD_NOT" = "1" ]; then
+			dialog_question "Incorrect Group Membership" "Would you like to disable this warning in the future and start anyway?"
+			IGNORE_NOT=$?
+			if [ "$IGNORE_NOT" = "0" ]; then
+				mkdir -p ~/.mythtv
+				touch ~/.mythtv/ignoregroup
+			fi
+		else
+			if [ "$DE" = "kde" ]; then
+				$SU_TYPE adduser `whoami` mythtv
+			else
+				$SU_TYPE adduser `whoami` mythtv --message "Please enter your current login password to add `whoami` to the mythtv group."
+			fi
+			dialog_question "Log out/in" "For the changes to take effect, your current login session will have to be restarted.  Save all work and then press OK to restart your session."
+			LOGOUT_NOT=$?
+			if [ "$LOGOUT_NOT" = "0" ]; then
+				if [ "$DE" = "gnome" ]; then
+					gnome-session-save --kill
+				elif [ "$DE" = "kde" ]; then
+					dcop ksmserver ksmserver logout 0 0 0
+				elif [ "$DE" = "xfce" ]; then
+					xfce4-session-logout
+				else
+					dialog_msgbox "No running KDM/Gnome/Xfce" "Please manually log out of your session for the changes to take effect."
+				fi
+				#exit in case they hit cancel here
+				exit 2
+			else		
+				exit 3			
+			fi
+		fi
+	fi
+else
+	IGNORE_NOT=0
+fi
+}
+
+symlink ()
+{
+mkdir -p $HOME/.mythtv
+if [ ! -e $HOME/.mythtv/mysql.txt ]; then
+	ln -s /etc/mythtv/mysql.txt $HOME/.mythtv/mysql.txt
+fi
+
+}
+###################################################################
+

=== added file 'debian/do-new-release.sh'
--- debian/do-new-release.sh	1970-01-01 00:00:00 +0000
+++ debian/do-new-release.sh	2011-05-12 02:35:46 +0000
@@ -0,0 +1,9 @@
+quilt pop -a 2>/dev/null || true
+debian/rules get-git-source
+debian/rules update-control-files
+if [ -n "$1" ]; then
+	DIST="$1"
+else
+	DIST="natty"
+fi
+dch -r -D $DIST --force-distribution ""

=== added file 'debian/libmyth-0.24-0.install'
--- debian/libmyth-0.24-0.install	1970-01-01 00:00:00 +0000
+++ debian/libmyth-0.24-0.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+usr/lib/libmyth*.so.*

=== added file 'debian/libmyth-dev.install'
--- debian/libmyth-dev.install	1970-01-01 00:00:00 +0000
+++ debian/libmyth-dev.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,5 @@
+usr/lib/libmyth*.so
+usr/lib/libmyth*.a
+usr/include/mythtv
+
+debian/mythtv.make usr/share/mythtv

=== added file 'debian/libmyth.install.in'
--- debian/libmyth.install.in	1970-01-01 00:00:00 +0000
+++ debian/libmyth.install.in	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+usr/lib/libmyth*.so.*

=== added directory 'debian/mcc-jamu'
=== added directory 'debian/mcc-jamu/python'
=== added file 'debian/mcc-jamu/python/jamuconfig.py'
--- debian/mcc-jamu/python/jamuconfig.py	1970-01-01 00:00:00 +0000
+++ debian/mcc-jamu/python/jamuconfig.py	2011-05-12 02:35:46 +0000
@@ -0,0 +1,277 @@
+## -*- coding: utf-8 -*-
+## File name: jamuconfig.py
+## Jamu (Just.Another.Metadata.Utility) - Mythbuntu mcc plugin
+## Purpose: This plugin allows a user to create and modify the ~mythtv/.mythtv/jamu.conf file
+## Author: R.D.Vaughan
+## Original source was Mario Limonciello's "skeletory.py" mcc example
+#
+# «skeletor» - An Example Plugin for showing how to use MCC as a developer
+#
+# Copyright (C) 2009, Mario Limonciello, for Mythbuntu
+#
+#
+# Mythbuntu is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this application; if not, write to the Free Software Foundation, Inc., 51
+# Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+##################################################################################
+
+__version__ = u"0.1.3"
+# 0.0.1 -   Initial development
+# 0.0.2 -   Alpha development version
+# 0.0.3 -   Phase 2 development version - Adding TV Series Movie Title Override screens and logic
+#           Also fixed a bug where the logger was called before it was actually initialized
+# 0.1.0 -   Beta release of Phase 1 - Only essential jamu.conf editing other logic removed
+# 0.1.1 -   Changed the plug-in icon to "gtk-add"
+# 0.1.2 -   Handle issues when the MythTV backend is not accessable with appropriate messages and logic.
+#           Also commented out code not currently used with this release of this plugin.
+# 0.1.3 -   Added detection that the Live CD is being used and the plugin exists
+
+from MythbuntuControlCentre.plugin import MCCPlugin
+import gtk
+
+import sys, os
+import logging
+
+
+class JamuconfigPlugin_error(Exception):
+    """An error which stops the jamu MCC plugin from functioning
+    """
+    pass
+
+class JamuconfigPlugin(MCCPlugin):
+    """A Jamu Configuration Plugin to create and modify ~mythtv/.mythtv/jamu.conf settings"""
+    #
+    #Load GUI & Calculate Changes
+    #
+    def __init__(self):
+        #Initialize parent class
+        information = {}
+        information["name"] = "Jamuconfig"
+        information["icon"] = "gtk-add"
+        information["ui"] = "tab_jamuconfig"
+
+        #Detect if booted from Live CD, exit is this is true. This plugin cannot be run from a Live CD boot.
+        lines=[]
+        try:
+            file = open('/proc/cmdline')    # Open for output (to read only)
+            lines = file.readlines( )       # Read entire file into list of line strings
+            file.close( )                   # Flush output buffers to disk
+            if lines[0].find('boot=casper') != -1:
+                print "This is a Live CD boot, the Jamu MCC plugin cannot be run from the Live CD"
+                sys.exit(0)
+        except Exception, e:
+            print 'An exception occured while trying to read the "/proc/cmdline" file to detect a Live CD boot.\nError (%s)' % e
+            sys.exit(1)
+
+        self.settings_initialized = True    # Popular the screen variable on initial display
+
+        # Create logger
+        self.logger = logging.getLogger("jamuconf")
+        self.logger.setLevel(logging.DEBUG)
+
+        hdlr = logging.FileHandler(u'/tmp/Mythbuntu_jamu_plugin.log')
+        formatter = logging.Formatter(u"%(asctime)s - %(name)s - %(levelname)s - %(message)s")
+        hdlr.setFormatter(formatter)
+        self.logger.addHandler(hdlr)
+
+        import jamuconfiguration
+        self.jamuconf = jamuconfiguration.jamuconf()
+        self.jamuconf.logger = self.logger
+
+        self.jamuconf.accessMythDB()
+        if self.jamuconf.mythdb == None:
+            errormsg = u"Jamu configuration plugin must have access to the MythTV database. Check the logs for messages indicating the issue.\nAlso note that this plugin CANNOT be run from a Live CD disk as nothing can be updated!\n"
+            self.logger.critical(errormsg)
+            raise JamuconfigPlugin_error(errormsg)
+
+        if not self.jamuconf.mythdb.getSetting('BackendServerIP', hostname = self.jamuconf.localhostname):
+            errormsg = u"Jamu configuration plugin must be run on a MythTV backend. Local host (%s) is not a MythTV backend.\n" % self.jamuconf.localhostname
+            self.logger.critical(errormsg)
+            raise JamuconfigPlugin_error(errormsg)
+
+        # Create a jamu.conf if it does not exist and read in the current settings
+        (self.cfg, self.config) = self.jamuconf.jamuconfig(u'mythtv', create=True)
+        if self.config == None:
+            errormsg = u'A jamu.conf file could not be read. No processing is possible - Check the log for details'
+            self.logger.critical(errormsg)
+            raise JamuconfigPlugin_error(errormsg)
+        self.tvdb_tmdb = self.jamuconf.findGrabbers()
+        if self.tvdb_tmdb[0] == None or self.tvdb_tmdb[1] == None:
+            errormsg = u'Either the ttvdb.py and/or tmdb.py metadata grabber scripts are not installed - Check the log for details'
+            self.logger.critical(errormsg)
+            raise JamuconfigPlugin_error(errormsg)
+
+        # If the backend is down or inaccessable then do not try to read the Scheduled TV shows
+        # NOTE: These lines of code have been commented out as this functionaly is only necessary for
+        #        a feature that has not been implemented yet.
+#        if self.jamuconf.mythbeconn == None:
+#            errormsg = u"The MythTV backend is not accessable or not running.\nSome plugin functionality will not be available as it requires a running MythTV backend.\n"
+#            self.logger.critical(errormsg)
+#            raise JamuconfigPlugin_error(errormsg)
+#        if self.jamuconf.mythbeconn != None:
+#            self.scheduledprograms = self.jamuconf.getScheduledTvShowsMovies()
+
+        self.conjobstatus = {'maint_checkbutton': [u'-M ', u'/etc/cron.daily/mythvideo', False, False], 'tvprog_checkbutton': [u'-MW ', u'/etc/cron.hourly/mythvideo', False, False], 'janitor_checkbutton': [u'-MJ ', u'/etc/cron.weekly/mythvideo', False, False], 'nfs_checkbutton': [u'', u'', False, False], }
+        for key in self.conjobstatus.keys():
+            if key == 'nfs_checkbutton':
+                continue
+            else:
+                result = self.jamuconf.getCronJobStatus(self.conjobstatus[key])
+                self.conjobstatus[key][2] = result[0]
+                if result[1]:
+                    self.conjobstatus['nfs_checkbutton'][2] = True        # At least one cronjob has a NFS flag
+
+        MCCPlugin.__init__(self, information)
+    # end __init__()
+
+
+    def captureState(self):
+        """Determines the state of the items on managed by this plugin
+            and stores it into the plugin's own internal structures"""
+        import os
+        if self.settings_initialized:
+            self.initailizeSettings()
+            self.settings_initialized = False
+        self.changes = {}
+        self.changes['maint_checkbutton'] = self.maint_checkbutton.get_active()
+        self.changes['tvprog_checkbutton'] = self.tvprog_checkbutton.get_active()
+        self.changes['janitor_checkbutton'] = self.janitor_checkbutton.get_active()
+        self.changes['nfs_checkbutton'] = self.nfs_checkbutton.get_active()
+        self.changes['lang_combobox'] = self.lang_combobox.get_active()
+    # end captureState()
+
+
+    def applyStateToGUI(self):
+        """Takes the current state information and sets the GUI
+            for this plugin"""
+        self.maint_checkbutton.set_active(self.changes['maint_checkbutton'])
+        self.tvprog_checkbutton.set_active(self.changes['tvprog_checkbutton'])
+        self.janitor_checkbutton.set_active(self.changes['janitor_checkbutton'])
+        self.nfs_checkbutton.set_active(self.changes['nfs_checkbutton'])
+        self.lang_combobox.set_active(self.changes['lang_combobox'])
+    # end applyStateToGUI()
+
+
+    def compareState(self):
+        """Determines what items have been modified on this plugin"""
+        MCCPlugin.clearParentState(self)
+        if self.maint_checkbutton.get_active() != self.changes['maint_checkbutton']:
+            self._markReconfigureRoot('maint_checkbutton', self.maint_checkbutton.get_active())
+        if self.tvprog_checkbutton.get_active() != self.changes['tvprog_checkbutton']:
+            self._markReconfigureRoot('tvprog_checkbutton', self.tvprog_checkbutton.get_active())
+        if self.janitor_checkbutton.get_active() != self.changes['janitor_checkbutton']:
+            self._markReconfigureRoot('janitor_checkbutton', self.janitor_checkbutton.get_active())
+        if self.nfs_checkbutton.get_active() != self.changes['nfs_checkbutton']:
+            self._markReconfigureRoot('nfs_checkbutton', self.nfs_checkbutton.get_active())
+        if self.lang_combobox.get_active() != self.changes['lang_combobox']:
+            self._markReconfigureRoot('lang_change', self.jamuconf.languages[self.lang_combobox.get_active()][0])
+    # end compareState()
+
+
+    def initailizeSettings(self):
+        """Initalize the tab values from the values in jamu.conf
+            This function will be ran by the frontend"""
+        self.maint_checkbutton.set_active(self.conjobstatus['maint_checkbutton'][2])
+        self.tvprog_checkbutton.set_active(self.conjobstatus['tvprog_checkbutton'][2])
+        self.janitor_checkbutton.set_active(self.conjobstatus['janitor_checkbutton'][2])
+        self.nfs_checkbutton.set_active(self.conjobstatus['nfs_checkbutton'][2])
+
+        self.lang_combobox.remove_text(0)    # Remove the empty initial first element
+
+        # Check that the font pack to display asian fonts are installed
+        asian_lang = {'zh': [False, u'Chinese'], 'ja': [False, u'Japanese'], 'ko': [False, u'Korean']}
+        #ttf-wqy-zenhei   "WenQuanYi Zen Hei" A Hei-Ti Style (sans-serif) Chinese font - Can also handle ja & ko
+        for key in asian_lang.keys():
+            if self.query_installed('ttf-wqy-zenhei'):
+                asian_lang[key][0] = True
+            else:
+                asian_lang[key][0] = self.query_installed('language-support-fonts-%s' % key)
+
+        # When the corect language fonts are not installed substitute English labels
+        for key in asian_lang.keys():
+            for lang in self.jamuconf.languages:
+                if lang[0] == key and not asian_lang[key][0]:
+                    lang[2] = asian_lang[key][1]
+
+        # Populate the choice of languages
+        for lang in self.jamuconf.languages:
+            self.lang_combobox.append_text(lang[2])
+
+        # Set the current active langauage selection use "Default" if it was not set in jamu.conf
+        index = 0
+        if self.cfg.has_option(u'variables', 'local_language'):
+            conf_lang = self.cfg.get(u'variables', 'local_language')
+            for lang in self.jamuconf.languages:
+                if conf_lang == lang[0]:
+                    break
+                index+=1
+            else:
+                index = 0
+        self.lang_combobox.set_active(index)
+    # end initailizeSettings()
+
+
+    #
+    # Process selected activities
+    #
+
+    def root_scripted_changes(self,reconfigure):
+        """System-wide changes that need root access to be applied.
+            This function is ran by the dbus backend"""
+        #
+        # Cronjob related changes
+        #
+        cron_job_change = False
+        for item in reconfigure:
+            if item in self.conjobstatus.keys():
+                self.conjobstatus[item][2] = reconfigure[item]
+                self.conjobstatus[item][3] = True
+                cron_job_change = True
+        # Apply any cronjob changes
+        if cron_job_change:
+            self.jamuconf.setCronJobStatus(self.conjobstatus)
+
+        #
+        # jamu.conf file changes
+        #
+        conf_change = False
+        # Language change
+        if reconfigure.has_key('lang_change'):
+            if not self.config[u'configchangeflag'].has_key(u'variables'):
+                self.config[u'configchangeflag'][u'variables'] = {}
+            self.config[u'configchangeflag'][u'variables']['local_language'] = reconfigure['lang_change']
+            conf_change = True
+
+        # Apply any jamu.conf changes
+        if conf_change:
+            self.jamuconf.writeJamuConf(self.config[u'configchangeflag'], self.cfg)
+    # end root_scripted_changes()
+
+
+    def user_scripted_changes(self,reconfigure):
+        """Local changes that can be performed by the user account.
+            This function will be run by the frontend"""
+        # No jamu config changes can be done at the user level
+        pass
+
+
+    #
+    # Callbacks
+    #
+    def launch_app(self, widget):
+        """Launches the Jamu overrides configuration application"""
+        if widget is not None:
+            if widget.get_name() == "overrides_button":
+                MCCPlugin.launch_app(self, widget, '/media/Plugins/source/python/jamu_overrides.py "~/.mythtv/jamu.conf"')
+
+    # end launch_app()

=== added file 'debian/mcc-jamu/python/jamuconfiguration.py'
--- debian/mcc-jamu/python/jamuconfiguration.py	1970-01-01 00:00:00 +0000
+++ debian/mcc-jamu/python/jamuconfiguration.py	2011-05-12 02:35:46 +0000
@@ -0,0 +1,621 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+# ----------------------
+# Name: jamuconfiguration.py
+# Python Script
+# Author:     R.D. Vaughan
+# Purpose:     This python script is intended to support common routines for maintenance of the ~/.mythtv/jamu.conf
+#            file.
+#
+# License:Creative Commons GNU GPL v2
+# (http://creativecommons.org/licenses/GPL/2.0/)
+#-------------------------------------
+__title__ ="jamuconfiguration.py - configuration maintenance routines";
+__author__="R.D.Vaughan"
+__purpose__='''
+This python script is intended to support common routines for maintenance of the ~/.mythtv/jamu.conf file.
+
+'''
+
+__version__ = u"0.1.4"
+# 0.0.1     Initial development
+# 0.0.2     Alpha development version
+# 0.0.3     Phase 2 development version - Adding TV Series Movie Title Override screens and logic
+#           Also fixed an bug where the logger was called before it was actually initialized
+#           Moved the logic for MythTV python binding import and initialization to it's own function
+# 0.0.4     Improved the messges and details when a MythDB connection cannot be made at plugin initialization
+# 0.1.0     Beta release of Phase 1 - Only essential jamu.conf editing other logic removed
+# 0.1.1     Fixed a syntax error when getting Scheduled and Recorded data
+# 0.1.2     Changed tabs to spaces and added functionality to callCommandLine() and
+#           fixed getTvSeriesOrMovieList()
+#           Made it optional to set the jamu.conf file ownership to group and owner to mythtv
+#           A number of functionality changes to accomidate Title Override editing
+# 0.1.3     Updated imports and calls to the new python bindings.
+#           Chnage exception meassages to provide additional information
+# 0.1.4     Removed the locate routine and replaced it with the more accurate "dpkg -L" package search
+
+# System modules
+import sys, os, re, locale, subprocess, ConfigParser, urllib, codecs, shutil, datetime, fnmatch, string
+from socket import gethostname, gethostbyname
+import tempfile
+
+
+class jamuconf_error(Exception):
+    """An error which stops the jamu MCC plugin from functioning
+    """
+    pass
+# end Class jamuconf_error()
+
+
+class jamuconf():
+
+    def __init__(self):
+        # List of language from http://www.thetvdb.com/api/0629B785CE550C8D/languages.xml
+        # Hard-coded here as it is realtively static, and saves another HTTP request, as
+        # recommended on http://thetvdb.com/wiki/index.php/API:languages.xml
+        # Language array elements [two character code, numeric code for tvdb api, display text]
+        self.languages = [[u'', u'', u'Default'], [u'en', u'7', u'English'], [u'sv', u'8', u'Svenska'], [u'no', u'9', u'Norsk'], [u'da', u'10', u'Dansk'], [u'fi', u'11', u'Suomeksi'], [u'nl', u'13', u'Nederlands'], [u'de', u'14', u'Deutsch'], [u'it', u'15', u'Italiano'], [u'es', u'16', u'Español'], [u'fr', u'17', u'Français'], [u'pl', u'18', u'Polski'], [u'hu', u'19', u'Magyar'], [u'el', u'20', u'Ελληνικά'], [u'tr', u'21', u'Türkçe'], [u'ru', u'22', u'русский язык'], [u'he', u'24', u'עברית'], [u'ja', u'25', u'日本語'], [u'pt', u'26', u'Português'], [u'zh', u'27', u'中文'], [u'cs', u'28', u'čeština'], [u'sl', u'30', u'Slovenski'], [u'hr', u'31', u'Hrvatski'], [u'ko', u'32', u'한국어'], ]
+
+        self.localhostname = gethostname()
+        self.matchto = u'/usr/bin/python /usr/share/mythtv/mythvideo/scripts/jamu.py'
+    # end __init__()
+
+    def accessMythDB(self):
+        '''Initialize MythTV python bindings
+        return nothing
+        '''
+        # Find out if the MythTV python bindings can be accessed and instances can be created
+        try:
+            '''If the MythTV python interface is found, we can insert data directly to MythDB or
+            get the directories to store poster, fanart, banner and episode graphics.
+            '''
+            from MythTV import MythDB, MythBE, MythError, MythLog
+            self.MythDB = MythDB
+            self.MythBE = MythBE
+            self.MythError = MythError
+            self.MythLog = MythLog
+            self.mythdb = None
+            self.mythbeconn = None
+            try:
+                '''Create an instance of each: MythDB, MythVideo
+                '''
+                self.MythLog._setlevel('none') # Some non option -M cannot have any logging on stdout
+                self.mythdb = self.MythDB()
+                self.MythLog._setlevel('important,general')
+            except self.MythError, e:
+                self.logger.critical(e.message)
+                filename = os.path.expanduser("~")+'/.mythtv/config.xml'
+                if not os.path.isfile(filename):
+                    self.logger.critical('A correctly configured (%s) file must exist' % filename)
+                else:
+                    self.logger.critical('Check that (%s) is correctly configured' % filename)
+            except Exception, e:
+                self.logger.warn("Creating an instance caused an error for one of: MythDBConn or MythVideo, error(%s)\n" % e)
+            try:
+                self.MythLog._setlevel('none') # Some non option -M cannot have any logging on stdout
+                self.mythbeconn = MythBE(backend=self.localhostname, db=self.mythdb)
+                self.MythLog._setlevel('important,general')
+            except self.MythError, e:
+                self.logger.warn("With any -M option Jamu and its MCC plugin must be run on a MythTV backend,\nError(%s)" % e.args[0])
+                self.mythbeconn = None
+        except Exception, e:
+            self.logger.warn("MythTV python bindings could not be imported, error(%s)\n" % e)
+            self.mythdb = None
+            self.mythbeconn = None
+    # end accessMythDB()
+
+
+    def accessCheck(self, filename):
+        '''Check that a file can be access as could be required to do the update functions
+        return True if all required access is available
+        rerutn False if there are any access issues
+        '''
+        # jamu.conf exists RW
+        # '/etc/cron.daily/mythvideo', '/etc/cron.weekly/mythvideo', '/etc/cron.hourly/mythvideo',  exists RW
+        return os.access(filename, os.F_OK | os.R_OK | os.W_OK)
+    # end accessChecks()
+
+
+    # Two routines used for movie title search and matching
+    def is_punct_char(self, char):
+        '''check if char is punctuation char
+        return True if char is punctuation
+        return False if char is not punctuation
+        '''
+        return char in string.punctuation
+    # end is_punct_char()
+
+
+    def is_not_punct_char(self, char):
+        '''check if char is not punctuation char
+        return True if char is not punctuation
+        return False if chaar is punctuation
+        '''
+        return not self.is_punct_char(char)
+    # end is_not_punct_char()
+
+
+    def readJamuConf(self, useroptions):
+        '''Read in all jamu.conf sections and key/value pairs
+        return a dictionary of the sections and the key/value pairs as they are in the jamu.conf file
+        '''
+        config={}
+        cfg = ConfigParser.SafeConfigParser()
+        cfg.read(useroptions)
+
+        # Flag all the config file sections as unchanged
+        config[u'configchangeflag'] = {}
+        for key in cfg.sections():
+            config[u'configchangeflag'][key] = {}
+
+        return (cfg, config)
+    # end readJamuConf
+
+
+    def writeJamuConf(self, configupdates, cfg, mythtv=True):
+        '''Perform add/change/delete functions to the key/value pairs in the jamu.conf file
+        return True if the task was completed successfully
+        return False if there were issues
+        '''
+        anything_updated = False
+        for section in configupdates.keys():
+            if not len(configupdates[section]): # Skip any section that has not been changed
+                continue
+            anything_updated = True
+            for key in configupdates[section].keys():
+                if not cfg.has_section(section):
+                    if configupdates[section][key] == u'':
+                        pass
+                    else:
+                        cfg.add_section(section)
+                        cfg.set(section, key, configupdates[section][key])
+                elif configupdates[section][key] == u'':
+                    if cfg.has_option(section, key):
+                        cfg.remove_option(section, key)
+                else:
+                    cfg.set(section, key, configupdates[section][key])
+
+        if not os.path.isfile(self.configfile): # Create the file if it does not exist
+            anything_updated = True
+
+        if anything_updated:
+            try:
+                fd = open(self.configfile, 'wb')
+                cfg.write(fd)
+            except IOError:
+                return False
+            # Change the owner and group from root to mythtv
+            if mythtv:
+	            os.system('chown mythtv:mythtv %s & chmod g+rw %s' % (self.configfile, self.configfile))
+        return True
+    # end writeJamuConf()
+
+
+    def getCronJobStatus(self, whichcronjob):
+        '''Read a specific cron job and return its status
+        return a cron jobs stats and current option switches in an array
+        return False if cron job could not be found or had garbage data
+        '''
+        results = self.callCommandLine(u'grep "%s" "%s"' % (self.matchto, whichcronjob[1]))
+        if len(results):
+            result = results[0]
+        else:
+            return [False, False]
+
+        if result[0] == '#':
+            return [False, False]
+        NFS = result.find(' -N')
+        if NFS != -1:
+            return [True, True]
+        else:
+            return [True, False]
+    # end getCronJobStatus()
+
+
+    def readFile(self, filename):
+        '''Read in the cron job and pass back an array of each line
+        return array of strings
+        return empty array of no file
+        '''
+        try:
+            myfile = open(filename)                     # Open for output (to read only)
+        except IOError:
+            return False
+
+        aList = myfile.readlines( )                     # Read entire file into list of line strings
+        myfile.close( )                                 # Flush output buffers to disk
+        array=[]                                        # Initialize 2 dimensional array
+        x=0                                                # Initialize array row value
+        for rec in aList:
+            array.append(rec)                        # Put record array into array of records
+        return array
+    # end readFile()
+
+
+    def writeFile(self, filename, textarray):
+        '''Write out the text array to the cron job
+        return True if writing was successful
+        return False if the writing failed
+        '''
+        try:
+            myfile = open(filename, 'w')     # Open for output (creates file)
+        except IOError:
+            return False
+        for rec in textarray:
+            myfile.write(rec)                 # Write a new-line deliminated strings
+        myfile.close()                         # Flush output buffers to disk
+        return True
+    # end writeFile()
+
+
+    def setCronJobStatus(self, whichcronjobs):
+        '''Change a specific cron job to disables and/or its command line options
+        return True if the changes were made
+        return Flase if the changes were not made
+        '''
+        insertpoint = u'jamu.py'
+        nfsoverride = u' -N'
+        disableline = u'    echo "Cron Job Disabled by User"\n'
+        for key in whichcronjobs.keys():
+            if whichcronjobs['nfs_checkbutton'][3] or (key != 'nfs_checkbutton' and whichcronjobs[key][3]):
+                if key == 'nfs_checkbutton':
+                    continue
+
+                if not self.accessCheck(whichcronjobs[key][1]):
+                    errormsg = u'The cron job file (%s) cannot be accessed with (RW) permissions. This is required for updating.' % whichcronjobs[key][1]
+                    self.logger.critical(errormsg)
+                    raise jamuconf_error(errormsg)
+
+                filearray = self.readFile(whichcronjobs[key][1])
+                if filearray == False:
+                    errormsg = u'The cron job (%s) could not be read' % whichcronjobs[key][1]
+                    self.logger.critical(errormsg)
+                    raise jamuconf_error(errormsg)
+                if whichcronjobs['nfs_checkbutton'][3]:         # Has the NFS flag changed
+                    if whichcronjobs['nfs_checkbutton'][2]:        # Enable the NFS  override option
+                        for index in range(len(filearray)):
+                            found = filearray[index].find(self.matchto)
+                            if found == -1:
+                                continue
+                            found = filearray[index].find(nfsoverride)
+                            if found == -1:
+                                filearray[index] = filearray[index].replace(insertpoint, insertpoint+nfsoverride)
+                            break
+                    else:                                        # Disable thr NFS override option
+                        for index in range(len(filearray)):
+                            found = filearray[index].find(self.matchto)
+                            if found == -1:
+                                continue
+                            filearray[index] = filearray[index].replace(nfsoverride, u'')
+                            break
+
+                if whichcronjobs[key][3]:
+                    if whichcronjobs[key][2]:                    # Enable the cron job
+                        for index in range(len(filearray)):
+                            found = filearray[index].find(self.matchto)
+                            if found == -1:
+                                continue
+                            if filearray[index][0] == u'#':
+                                filearray[index] = filearray[index][1:]
+                            break
+                        for index in range(len(filearray)):
+                            found = filearray[index].find(disableline)
+                            if found == -1:
+                                continue
+                            filearray.pop(index)
+                            break
+                    else:                                        # Disable thr NFS override option
+                        for index in range(len(filearray)):
+                            found = filearray[index].find(self.matchto)
+                            if found == -1:
+                                continue
+                            if filearray[index][0] != u'#':
+                                filearray[index] = u'#'+filearray[index]
+                                filearray.insert(index, disableline)
+                            break
+                if not self.writeFile(whichcronjobs[key][1], filearray):
+                    errormsg = u'The cron job (%s) could not be updated (written)' % whichcronjobs[key][1]
+                    self.logger.critical(errormsg)
+                    raise jamuconf_error(errormsg)
+
+        return True
+    # end setCronJobStatus()
+
+
+    def jamuconfig(self, user, create=False):
+        '''Retrieve the jamu config information. If no jamu.conf exists then use jamu-example.conf
+        return the jamu config info
+        return None if there were errors
+        '''
+        config_file = None
+        results = self.callCommandLine(u'dpkg -L mythvideo | grep -iE "(jamu-example.conf)"', stderr=False)
+        if results:
+            for line in results:
+                line = line.strip().replace(u'\n', u'')
+                if line.endswith('jamu-example.conf'):
+                   config_file = line
+                   continue
+
+        # Check if the config file exists for the specified user and if not then create it
+        # from jamu-example.conf
+        if user == None:
+            if config_file == None:
+                return (None, None)
+            else:
+                return self.readJamuConf(config_file)
+        elif user[0] == u'/':
+            self.configfile = user
+        else:
+            self.configfile = u'%s/.mythtv/jamu.conf' % os.path.expanduser(u"~"+user)
+        if os.path.isfile(self.configfile):
+            return self.readJamuConf(self.configfile)
+        else:
+            if create == True:
+                if config_file == None:
+                    self.logger.critical(u'Could not locate the (%s) file so no jamu.conf file can be created' % u'jamu-example.conf')
+                    return (None, None)
+                else:
+                    return self.readJamuConf(config_file)    # Use jamu-example.conf as the base for a new jamu.conf
+            else:
+                self.logger.critical(u'Config file (%s) does not exist and the auto create flag is not set to true' % self.configfile)
+                return (None, None)
+    # end jamuconfig()
+
+
+    def findGrabbers(self):
+        '''Find out the full path locations of the TVDB and TMDB metadata grabbers
+        return an array of the two full paths for the grabbers
+        '''
+        ttvdb = None
+        tmdb = None
+
+        results = self.callCommandLine(u'dpkg -L mythvideo | grep -iE "(ttvdb.py|tmdb.py)"', stderr=False)
+        if results:
+            for line in results:
+                line = line.strip().replace(u'\n', u'')
+                if line.endswith('ttvdb.py'):
+                   ttvdb = line
+                   continue
+                if line.endswith('tmdb.py'):
+                   tmdb = line
+                   continue
+        if not ttvdb or not tmdb:
+            errormsg = u"The 'mythvideo' package is not installed. Install/Reinstall that package and then retry"
+            self.logger.critical(errormsg)
+            return [ttvdb, tmdb]
+
+        if not ttvdb:
+            if not os.path.isfile(ttvdb):
+                self.logger.critical(u'ttvdb.py metadata grabber cannot be found at (%s)' % ttvdb)
+                ttvdb = None
+        if not tmdb:
+            if not os.path.isfile(tmdb):
+                self.logger.critical(u'tmdb.py metadata grabber cannot be found at (%s)' % tmdb)
+                tmdb = None
+        return [ttvdb, tmdb]
+    # end findGrabbers()
+
+
+    def getTvSeriesOrMovieList(self, title, grabber):
+        '''Retrieve a list of possible TV series or Movies that match the passed title.
+        return an array of "TV series and their TVDB#s" or "Movie titles and their IMDB#s"
+        return an empty array if there were likely matches
+        '''
+        array = []
+        arraydict = {}
+        dataarray = self.callCommandLine(u'%s -M "%s"' % (grabber, title))
+        for data in dataarray:
+            data = data.strip()
+            if not len(data):
+                continue
+            keyvalue=data.split(u':')
+            if len(keyvalue) != 2:  # Make sure that the values being returned are valid
+                return array
+
+            keyvalue[0] = keyvalue[0].strip()
+            keyvalue[1] = keyvalue[1].strip()
+            arraydict[keyvalue[1]] = keyvalue[0] # Reorder to title then ref#
+
+        # Sort array to place most likely matches first
+        sorted_keys = sorted(arraydict.keys())
+        sorted_keys2 = sorted_keys
+        for key in sorted_keys: # First add the near matches
+            if filter(self.is_not_punct_char, key.lower()).startswith(filter(self.is_not_punct_char, title.lower())):
+                array.append([key, arraydict[key]])
+                sorted_keys2.remove(key)
+        for key in sorted_keys2: # Now add the rest
+            array.append([key, arraydict[key]])
+        return array
+    # end getTvSeriesOrMovieList()
+
+
+    def getScheduledTvShowsMovies(self):
+        '''Fetch the Scheduled or Recorded TV Series and Movies videos titles and subtitles from MythTV
+        return an array of scheduled or recorded TV series and movie video titles
+        return an empty array if there are no scheduled or recorded TV Series
+        '''
+        tv = []
+        movies = []
+        for program in self._getScheduledRecordedProgramList():
+            if program[u'subtitle']:
+                tv.append(program)
+            else:
+                movies.append(program)
+        return [tv, movies]
+    # getScheduledTvShowsMovies()
+
+
+    def callCommandLine(self, command, stderr=False):
+        '''Perform the requested command line and return an array of stdout strings and stderr strings if
+        stderd=True
+        return array of stdout string array or stdout and stderr string arrays
+        '''
+        stderrarray = []
+        stdoutarray = []
+        try:
+            p = subprocess.Popen(command, shell=True, bufsize=4096, stdin=subprocess.PIPE,
+                stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
+        except:
+            if stderr:
+                return [[], []]
+            else:
+                return []
+
+        if stderr:
+            while True:
+                data = p.stderr.readline()
+                if not data:
+                    break
+                try:
+                    data = unicode(data, 'utf8')
+                except (UnicodeDecodeError):
+                    continue    # Skip any line that has non-utf8 characters in it
+                except (UnicodeEncodeError, TypeError):
+                    pass
+                stderrarray.append(data)
+
+        while True:
+            data = p.stdout.readline()
+            if not data:
+                break
+            try:
+                data = unicode(data, 'utf8')
+            except (UnicodeDecodeError):
+                continue    # Skip any line that has non-utf8 characters in it
+            except (UnicodeEncodeError, TypeError):
+                pass
+            stdoutarray.append(data)
+
+        if stderr:
+            return [stdoutarray, stderrarray]
+        else:
+            return stdoutarray
+    # end callCommandLine()
+
+
+    def _getFileList(self, dst):
+        ''' Create an array of fully qualified file names
+        return an array of file names
+        '''
+        file_list = []
+        names = []
+
+        try:
+            for directory in dst:
+                tmp_dir = directory
+                try:
+                    tmp_dir = unicode(directory, 'utf8')
+                except (UnicodeEncodeError, TypeError):
+                    pass
+                for filename in os.listdir(tmp_dir):
+                    names.append(os.path.join(tmp_dir, filename))
+        except OSError, e:
+            self.logger.error(u"Getting a list of files for directory (%s)\nThis is most likely a 'Permission denied' error, Error(%s)" % (dst, e))
+            return file_list
+
+        for video_file in names:
+            if os.path.isdir(video_file):
+                new_files = _getFileList([video_file])
+                for new_file in new_files:
+                    file_list.append(new_file)
+            else:
+                file_list.append(video_file)
+        return file_list
+    # end _getFileList
+
+
+    def _getScheduledRecordedProgramList(self):
+        '''Find all Scheduled and Recorded programs
+        return array of found programs, if none then empty array is returned
+        '''
+        programs=[]
+
+        # Get pending recordings
+        try:
+            progs = self.MythBE(backend=self.mythbeconn.hostname, db=self.mythbeconn.db).getUpcomingRecordings()
+        except self.MythError, e:
+            sys.stderr.write(u"\n! Error: Getting Upcoming Recordings list: %s\n" % e.args[0])
+            return programs
+
+        for prog in progs:
+            record={}
+            record['title'] = prog.title
+            record['subtitle'] = prog.subtitle
+            record['seriesid'] = prog.seriesid
+
+            if record['subtitle'] and prog.airdate != None:
+                record['originalairdate'] = prog.airdate[:4]
+            else:
+                if prog.year != '0':
+                    record['originalairdate'] = prog.year
+                elif prog.airdate != None:
+                    record['originalairdate'] = prog.airdate[:4]
+            for program in programs:    # Skip duplicates
+                if program['title'] == record['title']:
+                    break
+            else:
+                programs.append(record)
+
+        # Get recorded table field names:
+        try:
+            recordedlist = self.MythBE(backend=self.mythbeconn.hostname, db=self.mythbeconn.db).getRecordings()
+        except self.MythError, e:
+            sys.stderr.write(u"\n! Error: Getting recorded programs list: %s\n" % e.args[0])
+            return programs
+
+        if not recordedlist:
+            return programs
+
+        recordedprogram = {}
+        for recordedProgram in recordedlist:
+            try:
+                recordedRecord = recordedProgram.getRecorded()
+            except MythError, e:
+                sys.stderr.write(u"\n! Error: Getting recorded table record: %s\n" % e.args[0])
+                return programs
+            if recordedRecord.recgroup == u'Deleted':
+                continue
+            recorded = {}
+            if recordedRecord.chanid == 9999:
+                recorded[u'miro_tv'] = True
+            recorded[u'title'] = recordedRecord.title
+            recorded[u'subtitle'] = recordedRecord.subtitle
+            recorded[u'seriesid'] = recordedRecord.seriesid
+            for program in programs:    # Skip duplicates
+                if program['title'] == recorded['title']:
+                    break
+            else:
+                programs.append(recorded)
+                # Get Release year for recorded movies
+                # Get Recorded videos recordedprogram / airdate
+                try:
+                    recordedDetails = recordedRecord.getRecordedProgram()
+                except MythError, e:
+                    sys.stderr.write(u"\n! Error: Getting recordedprogram table record: %s\n" % e.args[0])
+                    continue
+                if not recordedDetails:
+                    continue
+                if not recordedDetails.subtitle:
+                    recordedprogram[recordedDetails.title]= u'%d' % recordedDetails.airdate
+
+        # Add release year to recorded movies
+        for program in programs:
+            if recordedprogram.has_key(program['title']):
+                program['originalairdate'] = recordedprogram[program['title']]
+
+        # Check that each program has an original airdate
+        for program in programs:
+            if not program.has_key('originalairdate'):
+                program['originalairdate'] = u'0000' # Set the original airdate to zero (unknown)
+
+        # Check that each program has seriesid
+        for program in programs:
+            if not program.has_key('seriesid'):
+                program['seriesid'] = u''     # Set an empty seriesid - Generall only for Miro Videos
+            if program['seriesid'] == None:
+                program['seriesid'] = u''     # Set an empty seriesid
+
+        return programs
+    # end _getScheduledRecordedProgramList
+
+# end Class jamuconf()

=== added directory 'debian/mcc-jamu/ui'
=== added file 'debian/mcc-jamu/ui/tab_jamuconfig.ui'
--- debian/mcc-jamu/ui/tab_jamuconfig.ui	1970-01-01 00:00:00 +0000
+++ debian/mcc-jamu/ui/tab_jamuconfig.ui	2011-05-12 02:35:46 +0000
@@ -0,0 +1,228 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkListStore" id="lang_list">
+    <columns>
+      <!-- column-name lang_array -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes"></col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkVBox" id="tab_jamuconfig">
+    <property name="visible">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkLabel" id="jamuconfig_title">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="xalign">0</property>
+        <property name="label" translatable="yes">&lt;b&gt;Jamu (Just.Another.Metadata.Utility) Configuration&lt;/b&gt;</property>
+        <property name="use_markup">True</property>
+        <property name="single_line_mode">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkHSeparator" id="hseparator6">
+        <property name="visible">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="padding">6</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkVBox" id="all_fields">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">10</property>
+        <child>
+          <object class="GtkLabel" id="cronjobs_label">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">&lt;b&gt;Jamu Cron Jobs Options&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="cronjob_alignment1">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="xscale">0</property>
+            <property name="left_padding">25</property>
+            <child>
+              <object class="GtkHBox" id="cronjob_hbox1">
+                <property name="visible">True</property>
+                <property name="homogeneous">True</property>
+                <child>
+                  <object class="GtkCheckButton" id="maint_checkbutton">
+                    <property name="label" translatable="yes">Maintenance</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="tooltip_markup">Jamu weekly maintenance cron job checks your MythVideo collection for missing metadata text and graphics and attempts to retrieve the missing text and/or graphics from thetvdb.com or themoviedb.com</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="cronjob_align1">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xscale">0</property>
+                    <child>
+                      <object class="GtkCheckButton" id="tvprog_checkbutton">
+                        <property name="label" translatable="yes">TV program graphics</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Jamu's hourly cron job that downloads graphics for your Scheduled and Recorded programs when they exist on thetvdb.com and themoviedb.com. These graphics are displayed on the "Watched Recordings" screen.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="cronjob_alignment2">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="xscale">0</property>
+            <property name="left_padding">25</property>
+            <child>
+              <object class="GtkHBox" id="cronjob_hbox2">
+                <property name="visible">True</property>
+                <property name="homogeneous">True</property>
+                <child>
+                  <object class="GtkCheckButton" id="janitor_checkbutton">
+                    <property name="label" translatable="yes">Graphics Janitor</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="tooltip_text" translatable="yes">Jamu's weekly cron job that looks for orphaned graphics files and removes any graphics files that are not being used by MythVideo or the Watched Recordings screen.</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="cronjob_align2">
+                    <property name="visible">True</property>
+                    <property name="xalign">1</property>
+                    <property name="xscale">0</property>
+                    <property name="left_padding">36</property>
+                    <child>
+                      <object class="GtkCheckButton" id="nfs_checkbutton">
+                        <property name="label" translatable="yes">NFS Override</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Jamu will exit if any of your Video or graphics directories are network mounts (e.g. NFS or SAMBA mounts). This is to deal with issues such as duplicate MythVideo records or incorrect graphics file being removed. This could only happen when multiple MythTV backend share the same Video and/or graphics directories. When that is the case Jamu should not be used. 
+If you use NFS or SAMBA for your Video and/or graphics directories but they are not shared with other MythTV back ends then click the check box for this option and the Jamu cron jobs will be enabled.</property>
+                        <property name="xalign">1</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="cronjobs_hseparator">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="lang_alignment">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="xscale">0</property>
+            <property name="yscale">0</property>
+            <property name="left_padding">25</property>
+            <child>
+              <object class="GtkHBox" id="lang_hbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkComboBox" id="lang_combobox">
+                    <property name="visible">True</property>
+                    <property name="tooltip_text" translatable="yes">Jamu's preferred language used when downloading metadata text and graphics. If no metadata text is found for the preferred language then English is the fall back language. Currently only supported for TV Shows. The "Default" is English for metadata text  with any language's graphics.</property>
+                    <property name="model">lang_list</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="lang_cellrenderertext"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="lang_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xpad">5</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Language&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="padding">6</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+</interface>

=== added directory 'debian/mcc-mirobridge'
=== added directory 'debian/mcc-mirobridge/python'
=== added file 'debian/mcc-mirobridge/python/mirobridgeconfig.py'
--- debian/mcc-mirobridge/python/mirobridgeconfig.py	1970-01-01 00:00:00 +0000
+++ debian/mcc-mirobridge/python/mirobridgeconfig.py	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1561 @@
+## -*- coding: utf-8 -*-
+## File name: mirobridgeconfig.py
+## Mirobridge (Just.Another.Metadata.Utility) - Mythbuntu mcc plugin
+## Purpose: This plugin allows a user install/uninstall and configure MiroBridge and its dependancies
+## Author: R.D.Vaughan
+## Original source was Mario Limonciello's "skeletory.py" mcc example
+#
+# «skeletor» - An Example Plugin for showing how to use MCC as a developer
+#
+# Copyright (C) 2009, Mario Limonciello, for Mythbuntu
+#
+#
+# Mythbuntu is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this application; if not, write to the Free Software Foundation, Inc., 51
+# Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+##################################################################################
+
+__version__ = u"0.1.2"
+# 0.0.1 - Initial development
+# 0.1.0 - Public release
+# 0.1.1 - Added detection that the Live CD is being used and the plugin exists
+# 0.1.2 - Changed the gtk icon
+
+from MythbuntuControlCentre.plugin import MCCPlugin
+import gtk
+
+import sys, os, ConfigParser, subprocess, shutil, pwd, datetime
+import urllib2
+import logging
+from socket import gethostname, gethostbyname
+import tarfile
+
+# Added for the crontab functions (os and sys) were already in the mirobridge.py script
+import re, tempfile
+
+
+class MirobridgeconfigPlugin_error(Exception):
+    """An error which stops the MiroBridge MCC plugin from functioning
+    """
+    pass
+
+class MirobridgeconfigPlugin(MCCPlugin):
+    """A Mirobridge Configuration Plugin to install/uninstall and configure MiroBridge and its dependancies"""
+    #
+    #Load GUI & Calculate Changes
+    #
+    def __init__(self):
+        #Initialize parent class
+        information = {}
+        information["name"] = "Mirobridgeconfig"
+        information["icon"] = "gtk-media-play-ltr"
+        information["ui"] = "tab_mirobridge"
+
+        #Detect if booted from Live CD, exit is this is true. This plugin cannot be run from a Live CD boot.
+        lines=[]
+        try:
+            file = open('/proc/cmdline')    # Open for output (to read only)
+            lines = file.readlines( )       # Read entire file into list of line strings
+            file.close( )                   # Flush output buffers to disk
+            if lines[0].find('boot=casper') != -1:
+                print "This is a Live CD boot, the MiroBridge MCC plugin cannot be run from the Live CD"
+                sys.exit(0)
+        except Exception, e:
+            print 'An exception occured while trying to read the "/proc/cmdline" file to detect a Live CD boot.\nError (%s)' % e
+            sys.exit(1)
+
+        self.settings_initialized = True    # Popular the screen variable on initial display
+
+        # Create logger
+        self.logger = logging.getLogger("mirobridgeconf")
+        self.logger.setLevel(logging.DEBUG)
+
+        hdlr = logging.FileHandler(u'/tmp/Mythbuntu_mirobridge_plugin.log')
+        formatter = logging.Formatter(u"%(asctime)s - %(name)s - %(levelname)s - %(message)s")
+        hdlr.setFormatter(formatter)
+        self.logger.addHandler(hdlr)
+
+        self.mbfunctions = MirobridgeConfigFunctions(self.logger)
+
+        MCCPlugin.__init__(self, information)
+    # end __init__()
+
+
+    def captureState(self):
+        """Determines the state of the items managed by this plugin
+        and stores it into the plugin's own internal structures
+        """
+        # Set the current condition of the MiroBridge installation and configuration
+        self.mbfunctions.isInstalled()
+
+
+        ### Used for debugging only. Usually commented out.
+#        print '-----------------------'
+#        print self.mbfunctions.config
+#        print '-----------------------'
+
+
+        self.changes = {}
+        if self.settings_initialized:
+            self.initialiseComboBoxLists()
+            self.settings_initialized = False
+
+        # Always reset active items according to the current installation conditions
+        self.initialiseSettings()
+
+        self.changes['enable_disable_combobox'] = self.enable_disable_combobox.get_active()
+        self.changes['cronjob_freq_combobox'] = self.cronjob_freq_combobox.get_active()
+        self.changes['behaviour_combobox'] = self.behaviour_combobox.get_active()
+
+        # Force Step #2 so the user initiates Miro at least once incase the Miro package was re-installed
+        if self.install_checkbutton.get_active() and self.mbfunctions.config['miro_test_passed']:
+            self.mbfunctions.config['miro_test_passed'] = False
+
+        # Always reset both check buttons to off for every screen rest. Stops both checked boxes being set.
+        # for both (install/uninstall)
+        self.changes['install'] = False
+        self.changes['uninstall'] = False
+
+        # Hide/Show UI objects depending on whether MiroBridge is installed or not
+        if not self.mbfunctions.config['installed']:
+            # Step #1: Something is missing and must be installed
+            self.install_checkbutton.show()
+            self.launch_miro_button.hide()
+            self.import_opml_filechooserbutton.hide()
+            self.uninstall_checkbutton.hide()
+            self.enable_disable_combobox.hide()
+            self.cronjob_freq_combobox.hide()
+            self.behaviour_combobox.hide()
+        elif not self.mbfunctions.config['miro_test_passed']:
+            self.install_checkbutton.hide()
+            self.launch_miro_button.show()
+            # Step #2: Configure Miro Channels and options
+            self.launch_miro_button.set_label(u'Step #2: Configure Miro Channels and options')
+            self.import_opml_filechooserbutton.hide()
+            self.uninstall_checkbutton.hide()
+            self.enable_disable_combobox.hide()
+            self.cronjob_freq_combobox.hide()
+            self.behaviour_combobox.hide()
+        else:
+            # Regular maintenance/configuratio options
+            self.install_checkbutton.hide()
+            self.launch_miro_button.show()
+            self.launch_miro_button.set_label(u'Launch Miro (Channel Add/Change/Delete)')
+            self.import_opml_filechooserbutton.show()
+            self.uninstall_checkbutton.show()
+            self.enable_disable_combobox.show()
+            self.cronjob_freq_combobox.show()
+            self.behaviour_combobox.show()
+    # end captureState()
+
+
+    def applyStateToGUI(self):
+        """Takes the current state information and sets the GUI
+            for this plugin"""
+        self.enable_disable_combobox.set_active(self.changes['enable_disable_combobox'])
+        self.cronjob_freq_combobox.set_active(self.changes['cronjob_freq_combobox'])
+        self.behaviour_combobox.set_active(self.changes['behaviour_combobox'])
+        self.install_checkbutton.set_active(self.changes['install'])
+        self.uninstall_checkbutton.set_active(self.changes['uninstall'])
+    # end applyStateToGUI()
+
+
+    def compareState(self):
+        """Determines what items have been modified on this plugin"""
+        MCCPlugin.clearParentState(self)
+        if self.enable_disable_combobox.get_active() != self.changes['enable_disable_combobox']:
+            if self.enable_disable_combobox.get_active() == 0:
+                self._markReconfigureUser('enable_disable', True)
+            else:
+                self._markReconfigureUser('enable_disable', False)
+        if self.cronjob_freq_combobox.get_active() != self.changes['cronjob_freq_combobox']:
+            self._markReconfigureUser('cronjob_freq', self.cronjob_freq_combobox.get_active())
+        if self.behaviour_combobox.get_active() != self.changes['behaviour_combobox']:
+            self._markReconfigureUser('behaviour', self.behaviour_combobox.get_active())
+        if self.install_checkbutton.get_active() != self.changes['install']:
+            self._markReconfigureUser('install', self.install_checkbutton.get_active())
+            if self.install_checkbutton.get_active():
+                for package in self.mbfunctions.config['dependancies'].keys():
+                    if not self.mbfunctions.config['dependancies'][package] and not package in self._to_install:
+                       self._markInstall(package, install=True) # Add a missing package to install
+            else:
+                for package in self.mbfunctions.config['dependancies'].keys():
+                    if package in self._to_install:
+                       self._markInstall(package, install=False) # User cancelled install
+        if self.uninstall_checkbutton.get_active() != self.changes['uninstall']:
+            self._markReconfigureUser('uninstall', self.uninstall_checkbutton.get_active())
+            # Only the 'miro' package is uninstalled as the others are common and could be being used
+            # by other installed apps
+            package = 'miro'
+            if self.uninstall_checkbutton.get_active():
+                if not package in self._to_remove:
+                   self._markRemove(package, remove=True) # A package to add to uninstall
+            else:
+                if package in self._to_remove:
+                   self._markRemove(package, remove=False) # A package to remove from uninstall list
+    # end compareState()
+
+
+    def initialiseSettings(self):
+        """Initalize the tab values from the values in found during the MiroBridge installation/config check.
+        This function will be ran by the frontend.
+        """
+        # Set the active values
+        if self.mbfunctions.config['cronjob']:
+            self.enable_disable_combobox.set_active(0)
+        else:
+            self.enable_disable_combobox.set_active(1)
+
+        self.cronjob_freq_combobox.set_active(0)
+        if self.mbfunctions.config['cronjob_freq']:
+            for index in range(len(self.mbfunctions.cronjob_freq)):
+                if self.mbfunctions.cronjob_freq[index].lower() == self.mbfunctions.config['cronjob_freq']:
+                    self.cronjob_freq_combobox.set_active(index)
+                    break
+            else:
+                self.cronjob_freq_combobox.set_active(0)
+
+        index = 0
+        if self.mbfunctions.config['cfg']:
+            conflict_count = 0 # Check to see if there are conflicting "All" options in the config file
+            for section in self.mbfunctions.config['cfg'].sections():
+                if section == u'watch_only':
+                    # All Channels will only not be moved to MythVideo
+                    for option in self.mbfunctions.config['cfg'].options(section):
+                        if option == u'all miro channels':
+                            index = 1
+                            conflict_count+=1
+                            break
+                        else:
+                            continue
+                    continue
+                if section == u'mythvideo_only':
+                    # Add the Channel names to the array of Channels that will be moved to MythVideo only
+                    for option in self.mbfunctions.config['cfg'].options(section):
+                        if option == u'all miro channels':
+                            index = 2
+                            conflict_count+=1
+                            break
+                        else:
+                            continue
+                    continue
+                if section == u'watch_then_copy':
+                    # Add the Channel names to the array of Channels once watched will be copied to MythVideo
+                    for option in self.mbfunctions.config['cfg'].options(section):
+                        if option == u'all miro channels':
+                            index = 3
+                            conflict_count+=1
+                            break
+                        else:
+                            continue
+                    continue
+            if conflict_count > 1:
+                errormsg = "Conflicting MiroBridge behavior options found. Only one 'all miro channels' can be set at a time.\nResetting to the default of no 'all miro channels'.\n"
+                self.logger.error(errormsg)
+                index = 0
+        self.behaviour_combobox.set_active(index)
+    # end initialiseSettings()
+
+    def initialiseComboBoxLists(self):
+        '''Set the list values in the combo boxes
+        '''
+        self.enable_disable_combobox.remove_text(0)    # Remove the empty initial first element
+        self.cronjob_freq_combobox.remove_text(0)    # Remove the empty initial first element
+        self.behaviour_combobox.remove_text(0)    # Remove the empty initial first element
+
+        # Populate the choice of Cronjob enable/disable list
+        for value in self.mbfunctions.cronjob:
+            self.enable_disable_combobox.append_text(value)
+        # Populate the choice of Cronjob frequency
+        for value in self.mbfunctions.cronjob_freq:
+            self.cronjob_freq_combobox.append_text(value)
+        # Populate the choice of MiroBridge processing behaviour
+        for value in self.mbfunctions.behaviour:
+            self.behaviour_combobox.append_text(value)
+    # end initialiseComboBoxLists()
+
+    #
+    # Front end : Process selected activities
+    #
+
+    def user_scripted_changes(self,reconfigure):
+        """Local changes that can be performed by the user account.
+        This function will be run by the frontend
+        """
+        #
+        # Install MiroBridge configuration components
+        #
+        if reconfigure.has_key('install'):
+            if reconfigure['install']:  # Set defaults
+                if self.mbfunctions.config['mirochannel'] == None:
+                    self.mbfunctions.addMiroBridgeChannel()
+                self.mbfunctions.maintCronjobs('enable_disable', True)
+                self.mbfunctions.maintCronjobs('cronjob_freq', 0)
+                if not self.mbfunctions.config['cfg']: # If a conf file does not exist then use the example
+                    self.mbfunctions.readExampleConf(self.mbfunctions.location_mirobridge_example_conf_file)
+                    self.mbfunctions.maintConfigFile('behaviour', 0)
+                self.mbfunctions.installDefaultImages()
+        #
+        # Uninstall MiroBridge configuration components
+        # NOTE: Uninstall does not remove any existing Watch Recordings or MythVideo records or video files
+        #
+        elif reconfigure.has_key('uninstall'):
+            if reconfigure['uninstall']:
+                # Remove any the Mirobridge default images/Channel image/Folder image
+                for key in self.mbfunctions.image_set.keys():
+                    filepath = u'%s%s' % (self.mbfunctions.vid_graphics_dirs[key], self.mbfunctions.image_set[key])
+                    if os.path.isfile(filepath):
+                        os.remove(filepath)
+                # Remove any mirobridge cronjobs
+                self.mbfunctions.maintCronjobs('enable_disable', False)
+                # Remove any mirobridge.conf file
+                filename = os.path.expanduser("~")+u'/.mythtv/mirobridge.conf'
+                if os.path.isfile(filename):
+                    os.remove(filename)
+                # Remove the MiroBridge Channel record if it exists
+                channel = self.mbfunctions.MythDB(self.mbfunctions.mythdb).getChannel(9999)
+                if channel['channum'] != None:
+                    if channel['channum'] == '999' and channel['name'] == 'Miro':
+                        self.mbfunctions.delChannel()
+        #
+        # Add/Change MiroBridge cronjob
+        # Add/Change mirobridge.conf
+        #
+        else:
+            for key in ['enable_disable', 'cronjob_freq']: # cronjob maintenance
+                if reconfigure.has_key(key):
+                    self.mbfunctions.maintCronjobs(key, reconfigure[key])
+            if reconfigure.has_key('behaviour'): # mirobridge.conf maintenance
+                self.mbfunctions.maintConfigFile('behaviour', reconfigure['behaviour'])
+    # end user_scripted_changes()
+
+
+    #
+    # Callbacks
+    #
+    def callBacks(self, widget):
+        """React to various button clicks or files selected
+        """
+        if widget is not None:
+            if widget.get_name() == "launch_miro_button":
+                MCCPlugin.launch_app(self, widget, 'miro')
+                self.captureState()
+            elif widget.get_name() == "import_opml_filechooserbutton":
+                filename = self.import_opml_filechooserbutton.get_filename()
+                if filename:
+                    (dirName, fileName) = os.path.split(filename)
+                    (fileBaseName, fileExtension)=os.path.splitext(fileName)
+                    if not fileExtension.endswith(u'.opml'):
+                        self.logger.error(u'The OPML import file must have an extension of ".opml", the selected file has an extension of (%s)' % fileExtension)
+                    elif os.path.isfile(filename):
+                        MCCPlugin.launch_app(self, widget, u'%s -i "%s"' % (self.mbfunctions.location_mirobridge_script, filename))
+                    else:
+                        self.logger.error(u'The import file(%s) does not exist' % filename)
+    # end launch_app()
+
+
+    #
+    # Back end : Process selected activities
+    #
+    def root_scripted_changes(self,reconfigure):
+        """System-wide changes that need root access to be applied.
+        This function is run by the dbus backend
+        """
+        # No root specific config changes required
+        pass
+    # end root_scripted_changes()
+
+
+############################################################################################################
+# MiroBridge MCC support functions
+############################################################################################################
+
+class MirobridgeConfigFunctions():
+    """A set of funtions that perform various tasks with the Mirobridge Configuration"""
+    #
+    # Evaluate the current installation of MiroBridge
+    #
+    def __init__(self, logger):
+        self.logger = logger
+        # Test and initialize the current configuration dictionary
+        self.local_only = True # Default setting that determines to use local directories or storage groups
+        self.accessMythDB() # Test that this is a BE
+        # Test that there is internet access
+        self.checkInternetAccess()
+        # Option lists for UI selection
+        self.cronjob = [u'Enabled', u'Disabled']
+        self.cronjob_freq = [u'Hourly', u'Daily', u'Weekly']
+        self.cronjob_keys = [u'hourly', u'daily', u'weekly']
+        self.behaviour = [
+            u'Default: Emulate Miro video processing',
+            u'Watched Recordings screen only',
+            u'Copy all Miro videos directly to MythVideo',
+            u'Watch Miro videos then copy to MythVideo',
+            ]
+        self.behaviour_section = [
+            u'default',
+            u'watch_only',
+            u'mythvideo_only',
+            u'watch_then_copy',
+            ]
+        self.cron_regx = [
+            # Hourly "?? * * * *"
+            re.compile(u'''[0-9]|[0-9] \* \* \* \*''', re.UNICODE),
+            # Daily "* ?? * * *"
+            re.compile(u'''\* [0-9]|[0-9] \* \* \*''', re.UNICODE),
+            # Weekly "* * * * ??"
+            re.compile(u'''\* \* \* \* [0-9]|[0-9]''', re.UNICODE),
+        ]
+    # end __init__()
+
+    def accessMythDB(self):
+        '''Initialize MythTV python bindings
+        return nothing
+        '''
+        # Find out if the MythTV python bindings can be accessed and instances can be created
+        try:
+            '''If the MythTV python interface is found, we can insert data directly to MythDB or
+            get the directories to store poster, fanart, banner and episode graphics.
+            '''
+            from MythTV import MythDB, MythBE, Channel, MythError, MythLog, MythDBBase
+            self.MythDB = MythDB
+            self.MythBE = MythBE
+            self.MythDBBase = MythDBBase
+            self.Channel = Channel
+            self.MythError = MythError
+            self.MythLog = MythLog
+            self.mythdb = None
+            self.mythbeconn = None
+            self.localhostname = gethostname()
+            try:
+                '''Create an instance of each: MythDB, MythVideo
+                '''
+                self.MythLog._setlevel('none') # Some non option -M cannot have any logging on stdout
+                self.mythdb = self.MythDB()
+                self.MythLog._setlevel('important,general')
+            except self.MythError, e:
+                self.logger.critical(e.args[0])
+                filename = os.path.expanduser("~")+'/.mythtv/config.xml'
+                if not os.path.isfile(filename):
+                    self.logger.critical('A correctly configured (%s) file must exist' % filename)
+                else:
+                    self.logger.critical('Check that (%s) is correctly configured' % filename)
+                raise MirobridgeconfigPlugin_error(e.args[0])
+            except Exception, e:
+                errormsg = "Creating an instance caused an error for one of: MythDBConn or MythVideo, error(%s)\n" % e
+                self.logger.critical(errormsg)
+                raise MirobridgeconfigPlugin_error(errormsg)
+            try:
+                self.MythLog._setlevel('none') # Some non option -M cannot have any logging on stdout
+                self.mythbeconn = MythBE(backend=self.localhostname, db=self.mythdb)
+                self.MythLog._setlevel('important,general')
+            except self.MythError, e:
+                self.logger.critical("MiroBridge and its MCC plugin must be run on a MythTV backend,\nError(%s)" % e.args[0])
+                raise MirobridgeconfigPlugin_error(e.args[0])
+        except Exception, e:
+            errormsg = "MythTV python bindings could not be imported, error(%s)\n" % e
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+    # end accessMythDB()
+
+    def checkInternetAccess(self):
+        '''Check that there is an Internet Access
+        return nothing
+        '''
+        try:
+            urllib2.urlopen('http://www.google.com')
+        except Exception, e:
+            errormsg = "MiroBridge requiries an Internet connection, error(%s)\n" % e
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+    # end checkInternetAccess()
+
+    def isInstalled(self):
+        '''Check the system for MiroBridge script, all prerequisite packages, config file and default images.
+        Establish what needs to be installed if anything.
+        return nothing
+        '''
+        # Get the location of the MB script and example conf file
+        self.location_mirobridge_script = u''
+        self.location_mirobridge_example_conf_file = u''
+        results = self.callCommandLine(u'dpkg -L mythtv-backend | grep -iE "(mirobridge-example.conf.gz|mirobridge.py)"', stderr=False)
+        if results:
+            for line in results:
+                line = line.strip().replace(u'\n', u'')
+                if line.endswith('mirobridge.py'):
+                   self.location_mirobridge_script = line
+                   continue
+                if line.endswith('mirobridge-example.conf.gz'):
+                   self.location_mirobridge_example_conf_file = line
+                   continue
+        if not self.location_mirobridge_script or not self.location_mirobridge_example_conf_file:
+            errormsg = u"The 'mythtv-backend' package is not installed. Install/Reinstall that package and then retry"
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+        # Check that mirobridge.py is installed
+        if not os.path.isfile(self.location_mirobridge_script):
+            errormsg = u"The file 'mirobridge.py' is not installed at (%s)\n" % (self.location_mirobridge_script, )
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+        # Check that mirobridge-example.conf.gz is installed
+        if not os.path.isfile(self.location_mirobridge_example_conf_file):
+            errormsg = u"The file 'mirobridge-example.conf.gz' is not installed at (%s)\n" % (self.location_mirobridge_example_conf_file, )
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+
+        self.config = {
+            'installed': False,
+            'dependancies': {'miro': False, 'ffmpeg': False, 'python-pyparsing': False, 'imagemagick': False},
+            'mirochannel': None, # None is not created, False cannot be created, True already created
+            'cfg': None,    # Current config file settings if there is a config file
+            'posterdir': False,
+            'bannerdir': False,
+            'fanartdir': False,
+            'cronjob': False,
+            'cronjob_freq': None,
+            'miro_test_passed': False,
+        }
+
+        # Check for MiroBridge package dependancies
+        import apt
+        cache = apt.cache.Cache()
+        for package in self.config['dependancies'].keys():
+            try:
+                if cache[package].installed != None:
+                    self.config['dependancies'][package] = True
+                    if package == 'miro': # version example: 2.5.4-0pcf1
+                        version = cache[package].installed.version
+                        if version[:3] < '2.5':
+                            errormsg = "The installed Miro package must be at least version '2.5.x' or higher, yours is (%s).\nUninstall the Miro package then retry the MCC plugin MiroBridge install.\n" % (version, )
+                            self.logger.critical(errormsg)
+                            raise MirobridgeconfigPlugin_error(errormsg)
+            except KeyError, e:
+                errormsg = "The MiroBridge dependancy package (%s) is not in your repository, error(%s)\n" % (package, e)
+                self.logger.critical(errormsg)
+                raise MirobridgeconfigPlugin_error(errormsg)
+
+        # Check if channelid '9999' has been created and if it is assigned as the Miro channel
+        channel = self.MythDB(self.mythdb).getChannel(9999)
+        if channel['channum'] != None:
+            if channel['channum'] != '999' or channel['name'] != 'Miro':
+                self.logger.critical("MiroBridge found that there is already a Channel record for Channel num (%s) name (%s)\n" % (channel['channum'], channel['name']))
+                self.config['mirochannel'] = False # The channel is already being used!
+            else:
+                self.config['mirochannel'] = True
+
+        # Check if the mirobridge.conf file exists in the users home directory
+        filename = os.path.expanduser("~")+u'/.mythtv/mirobridge.conf'
+        if os.path.isfile(filename):
+            self.config['cfg'] = ConfigParser.SafeConfigParser()
+            self.config['cfg'].read(filename)
+        else: # Check that there is an example config, if there is then use it to create a mirobridge.conf file
+            if not os.path.isfile(self.location_mirobridge_example_conf_file):
+                errormsg = u"The MiroBridge example config file (%s) is missing and it is required\n" % (self.location_mirobridge_example_conf_file, )
+                self.logger.critical(errormsg)
+                raise MirobridgeconfigPlugin_error(errormsg)
+
+        # Get storage groups
+        self.getStorageGroups()
+
+        # Initialize the Video and graphics directory dictionary
+        self.getMythtvDirectories()
+
+        # Specify the MiroBridge default image set names
+        self.image_set = {
+            # posterdir the Miro logo used as the folder and channel image
+            'posterdir': u'mirobridge_coverart.jpg',
+            'bannerdir': u'mirobridge_banner.jpg',
+            'fanartdir': u'mirobridge_fanart.jpg',
+            }
+        # Check for the Mirobridge default images/Channel image/Folder image
+        for key in self.image_set.keys():
+            if os.path.isfile(u'%s%s' % (self.vid_graphics_dirs[key], self.image_set[key])):
+                self.config[key] = True
+                continue
+
+        # Check if there is a mirobridge cronjob and set the values if there is a cronjob
+        self.getCronjobSettings()
+
+        # Is MiroBridge fully installed?
+        installed_total = len(self.config['dependancies'].keys())+len(self.image_set.keys())+3
+        install_count = 0
+        for package in self.config['dependancies'].keys():
+            if self.config['dependancies'][package]:
+               install_count+=1
+        if self.config['cfg'] != None:
+            install_count+=1
+        if self.config['mirochannel'] != None:
+            install_count+=1
+        if self.config['cronjob_freq'] != None:
+            install_count+=1
+        for key in self.image_set.keys():
+            if self.config[key]:
+                install_count+=1
+        if installed_total == install_count:
+            self.config['installed'] = True
+            self.testEnv()  # Verify that the Miro set up was completed with a MiroBridge environment test
+    # end isInstalled()
+
+    def getStorageGroups(self):
+        '''Populate the storage group dictionary with the host's storage groups.
+        return False if there is an error
+        '''
+        self.storagegroupnames = {u'Default': u'default', u'Videos': u'mythvideo', u'Coverart': u'posterdir', u'Banners': u'bannerdir', u'Fanart': u'fanartdir', u'Screenshots': u'episodeimagedir'}
+        self.storagegroups={} # The dictionary is only populated with the current hosts storage group entries
+
+        records = self.mythdb.getStorageGroup(hostname=self.localhostname)
+        if records:
+            for record in records:
+                if record.groupname in self.storagegroupnames.keys():
+                    try:
+                        dirname = unicode(record.dirname, 'utf8')
+                    except (UnicodeDecodeError):
+                        self.logger.error(u"The local Storage group (%s) directory contained\ncharacters that caused a UnicodeDecodeError. This storage group has been rejected." % (record.groupname))
+                        continue    # Skip any line that has non-utf8 characters in it
+                    except (UnicodeEncodeError, TypeError):
+                        pass
+
+                    # Add a slash if missing to any storage group dirname
+                    if dirname[-1:] == u'/':
+                        self.storagegroups[self.storagegroupnames[record.groupname]] = dirname
+                    else:
+                        self.storagegroups[self.storagegroupnames[record.groupname]] = dirname+u'/'
+                continue
+
+        if len(self.storagegroups):
+            # Verify that each storage group is an existing local directory
+            storagegroup_ok = True
+            for key in self.storagegroups.keys():
+                if not os.path.isdir(self.storagegroups[key]):
+                    self.logger.critical(u"The Storage group (%s) directory (%s) does not exist" % (key, storagegroups[key]))
+                    storagegroup_ok = False
+            if not storagegroup_ok:
+                errormsg = "There are MythTV storage group configuration errors correct and retry installation, errors are displayed in the log.\n"
+                self.logger.critical(errormsg)
+                raise MirobridgeconfigPlugin_error(errormsg)
+    # end getStorageGroups
+
+    def getMythtvDirectories(self):
+        """Get all video and graphics directories found in the MythTV DB and add them to the dictionary.
+        Ignore any MythTV Frontend setting when there is already a storage group configured.
+        """
+        # Stop processing if this local host has any storage groups
+        self.dir_dict={u'posterdir': u"VideoArtworkDir", u'bannerdir': u'mythvideo.bannerDir', u'fanartdir': 'mythvideo.fanartDir', u'episodeimagedir': u'mythvideo.screenshotDir', u'mythvideo': u'VideoStartupDir'}
+        self.vid_graphics_dirs={u'default': u'', u'mythvideo': u'', u'posterdir': u'', u'bannerdir': u'', u'fanartdir': u'', u'episodeimagedir': u'',}
+
+        # When there is NO SG for Videos then ALL graphics paths MUST be local paths set in the FE and accessable
+        # from the backend
+        if self.storagegroups.has_key(u'mythvideo'):
+            self.local_only = False
+            # Pick up storage groups first
+            for key in self.storagegroups.keys():
+                self.vid_graphics_dirs[key] = self.storagegroups[key]
+            for key in self.dir_dict.keys():
+                if key == u'default' or key == u'mythvideo':
+                    continue
+                if not self.storagegroups.has_key(key):
+                    # Set fall back graphics directory to Videos
+                    self.vid_graphics_dirs[key] = self.storagegroups[u'mythvideo']
+                    # Set fall back SG graphics directory to Videos
+                    self.storagegroups[key] = self.storagegroups[u'mythvideo']
+        else:
+            self.local_only = True
+            if self.storagegroups.has_key(u'default'):
+                self.vid_graphics_dirs[u'default'] = self.storagegroups[u'default']
+
+        if self.local_only:
+            self.logger.warning(u'There is no "Videos" Storage Group set so ONLY MythTV Frontend local paths for videos and graphics that are accessable from this MythTV Backend can be used.')
+
+        for key in self.dir_dict.keys():
+            if self.vid_graphics_dirs[key]:
+                continue
+            graphics_dir = self.mythdb.settings[self.localhostname][self.dir_dict[key]]
+            # Only use path from MythTV if one was found
+            if key == u'mythvideo':
+                if graphics_dir:
+                    tmp_directories = graphics_dir.split(u':')
+                    if len(tmp_directories):
+                        for i in range(len(tmp_directories)):
+                            tmp_directories[i] = tmp_directories[i].strip()
+                            if tmp_directories[i] != u'':
+                                if os.path.exists(tmp_directories[i]):
+                                    if tmp_directories[i][-1] != u'/':
+                                        tmp_directories[i]+=u'/'
+                                    self.vid_graphics_dirs[key] = tmp_directories[i]
+                                    break
+                                else:
+                                    self.logger.error(u"MythVideo video directory (%s) does not exist(%s)" % (key, tmp_directories[i]))
+                else:
+                    self.logger.error(u"MythVideo video directory (%s) is not set" % (key, ))
+
+            if key != u'mythvideo':
+                if graphics_dir and os.path.exists(graphics_dir):
+                    if graphics_dir[-1] != u'/':
+                        graphics_dir+=u'/'
+                    self.vid_graphics_dirs[key] = graphics_dir
+                else:    # There is the chance that MythTv DB does not have a dir
+                    self.logger.error(u"(%s) directory is not set or does not exist(%s)" % (key, self.dir_dict[key]))
+
+        # Make sure there is a directory set for Videos and other graphics directories on this host
+        dir_for_all = True
+        for key in self.vid_graphics_dirs.keys():
+            if not self.vid_graphics_dirs[key]:
+                self.logger.critical(u"There must be a directory for Videos and each graphics type the (%s) directory is missing." % (key))
+                dir_for_all = False
+        if not dir_for_all:
+            errormsg = "The MythTV video and/or image directories are not configured properly, correct and retry installation, errors are displayed in the log.\n"
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+
+        # Make sure that there is read/write access to all the directories Miro Bridge uses
+        access_issue = False
+        for key in self.vid_graphics_dirs.keys():
+            if not os.access(self.vid_graphics_dirs[key], os.F_OK | os.R_OK | os.W_OK):
+                self.logger.critical(u"\nEvery Video and graphics directory must be read/writable for Miro Bridge to function. There is a permissions issue with (%s)." % (self.vid_graphics_dirs[key], ))
+                access_issue = True
+        if access_issue:
+            errormsg = "The MythTV video and/or image directories do not have the proper read/write permission, correct and retry installation, errors are displayed in the log.\n"
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+        # end getMythtvDirectories()
+
+
+    def readExampleConf(self, archivename):
+        '''Extract the archive to /tmp and read the mirobridge-example.conf file as the new cfg
+        return nothing
+        '''
+        import gzip
+        tmp_name = '/tmp/mirobridge-example.conf'
+        try:
+            zip_file = gzip.open(archivename, 'r')
+            file_content = zip_file.read()
+            zip_file.close
+        except Exception, e:
+            errormsg = "The mirobridge-example.conf archive file(%s), could not be opened, error(%s)\n" % (archivename, e)
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+        try:
+            target_file = open(tmp_name, "w")
+            target_file.write(file_content)
+            target_file.close()
+        except Exception, e:
+            errormsg = "The mirobridge-example.conf could not be created in '/tmp', error(%s)\n" % (e, )
+            self.logger.critical(errormsg)
+            raise MirobridgeconfigPlugin_error(errormsg)
+        self.config['cfg'] = ConfigParser.SafeConfigParser()
+        self.config['cfg'].read(tmp_name)
+        os.remove(tmp_name)
+    # readExampleConf()
+
+
+    def callCommandLine(self, command, stderr=False):
+        '''Perform the requested command line and return an array of stdout strings and stderr strings if
+        stderr=True
+        return array of stdout string array or stdout and stderr string arrays
+        '''
+        stderrarray = []
+        stdoutarray = []
+        try:
+            p = subprocess.Popen(command, shell=True, bufsize=4096, stdin=subprocess.PIPE,
+                stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
+        except Exception, e:
+            self.logger.error(u'callCommandLine Popen Exception, error(%s)' % e)
+            if stderr:
+                return [[], []]
+            else:
+                return []
+
+        if stderr:
+            while True:
+                data = p.stderr.readline()
+                if not data:
+                    break
+                try:
+                    data = unicode(data, 'utf8')
+                except (UnicodeDecodeError):
+                    continue    # Skip any line that has non-utf8 characters in it
+                except (UnicodeEncodeError, TypeError):
+                    pass
+                stderrarray.append(data)
+
+        while True:
+            data = p.stdout.readline()
+            if not data:
+                break
+            try:
+                data = unicode(data, 'utf8')
+            except (UnicodeDecodeError):
+                continue    # Skip any line that has non-utf8 characters in it
+            except (UnicodeEncodeError, TypeError):
+                pass
+            stdoutarray.append(data)
+
+        if stderr:
+            return [stdoutarray, stderrarray]
+        else:
+            return stdoutarray
+    # end callCommandLine()
+
+
+    def getCronjobSettings(self):
+        '''Check the status of the MiroBridge cron job and initalize the values
+        return nothing
+        '''
+        self.tab = CronTab()
+        # Check if there is an existing cronjob
+        list = self.tab.find_command(self.location_mirobridge_script)
+
+        self.config['cronjob'] = False
+        if not len(list):
+            return
+
+        self.config['cronjob'] = True
+
+        # Check whether the cronjob is a Hourly, Daily or Weekly
+        mb_cronjob = (u'%s' % list[0])
+        for index in range(len(self.cron_regx)):
+            if self.cron_regx[index].match(mb_cronjob):
+                break
+        else:
+            index = 0 # Set to default of Daily as the cron job did not match hourly, daily or weekly options
+        self.config['cronjob_freq'] = self.cronjob_keys[index]
+    # end getCronjobSettings()
+
+
+    def maintCronjobs(self, action, value):
+        ''' Create the cron job if required
+        Actions:
+        (1) Enable/Disable the cronjob
+        (2) Set the frequency of the cronjob (hourly, daily, weekly)
+        return nothing
+        '''
+        # MiroBrdige cronjob - debus additions added even though they may not be needed for all users
+        miro_cronjob = u'''env `dbus-launch` sh -c 'trap "kill $DBUS_SESSION_BUS_PID" EXIT; %s ' >> '/var/log/mythtv/mirobridge.log' 2>&1'''
+
+        list = self.tab.find_command(self.location_mirobridge_script)
+        # Does the cronjob exist?
+        if not len(list) and action == 'enable_disable' and not value:
+            return  # You cannot disable a cronjob that does not exist
+
+        # Disable the conjob by removing it from the crontab
+        if len(list) and action == 'enable_disable' and not value:
+            self.tab.remove_all(self.location_mirobridge_script)
+            # Write out changes
+            self.tab.write()
+            return
+
+        # For all other actions a cronjob must exist so create one
+        cron = None
+        if not len(list): # Create the MiroBridge cronjob
+            cron = self.tab.new(command=miro_cronjob % self.location_mirobridge_script, comment=u'MiroBridge cronjob')
+            cron.valid = True   # Enable the cronjob to be written to the crontab
+            if self.config['cronjob_freq'] == None:
+                cron.minute().on(45) # On the 45 minute mark on every hour
+            if action == 'enable_disable':
+                self.tab.write()
+                return
+
+        if action == 'cronjob_freq':
+            if not cron:    # Use either the newly created cron job or one that already exists.
+                cron = list[0]
+            cron.clear()    # Reset any frequency settings for thus cronjob
+            if value == 0:
+                cron.minute().on(45) # Hourly - On the 45 minute mark of every hour
+            elif value == 1:
+                cron.hour().on(2) # Daily - At 2:00 AM every day
+            else:
+                cron.dow().on(0) # Weekly - Every Sunday night at midnight
+
+            cron.valid = True   # Enable the cronjob to be written to the crontab
+            self.tab.write()
+    # end maintCronjobs()
+
+
+    def maintConfigFile(self, action, value):
+        '''Actions: Set the behaviour of Mirobridge and how the Miro videos are processed.
+        return nothing
+        '''
+        if action == 'behaviour':
+            tmp = {}
+            if self.behaviour_section[value] == 'default':
+                for key in self.behaviour_section:
+                    if key == 'default':
+                        continue
+                    tmp[key] = {u'all miro channels': u''}
+            else:
+                for key in self.behaviour_section:
+                    if key == 'default':
+                        continue
+                    if key == self.behaviour_section[value]:
+                        tmp[key] = {u'all miro channels': u'  '}
+                        continue
+                    tmp[key] = {u'all miro channels': u''}
+            self.writeMiroBridgeConf(tmp, self.config['cfg'], mythtv=False)
+    # end maintConfigFile()
+
+
+    def installDefaultImages(self):
+        '''Download for image archives from the internet and install any missing default MiroBridge images
+        return nothing
+        '''
+        # Specify the MiroBridge default image download URLs
+        self.image_links = {
+            # posterdir the Miro logo used as the folder and channel image
+            'posterdir': u'http://img641.imageshack.us/img641/2396/mirocoverart.jpg',
+            'bannerdir': u'http://img402.imageshack.us/img402/7100/mirobridgebanner.jpg',
+            'fanartdir': u'http://img76.imageshack.us/img76/9897/mirobridgefanart.jpg',
+            }
+
+        # Download only the missing images
+        for key in self.image_links:
+            filename = u'%s%s' % (self.vid_graphics_dirs[key], self.image_set[key])
+            if not os.path.isfile(filename):
+                url = self.image_links[key]
+                org_url = url
+                tmp_URL = url.replace("http://";, "")
+                url = "http://"+urllib2.quote(tmp_URL.encode("utf-8"))
+                try:
+                    image = urllib2.urlopen(url).read()
+                except IOError, e:
+                    errormsg = "The MiroBridge image image URL (%s) could not be opened, error(%s)\n" % (org_url, e, )
+                    self.logger.error(errormsg)
+                    continue
+
+                try:
+                    output_image = open(filename, "wb")
+                    output_image.write(image)
+                    output_image.close()
+                except IOError, e:
+                    errormsg = "The MiroBridge image URL (%s) could not be downloaded, error(%s)\n" % (filename, e, )
+                    self.logger.error(errormsg)
+                    continue
+                os.chmod(filename, 0666)
+    # end installDefaultImages()
+
+
+    def readFile(self, filename):
+        '''Read in the cron job and pass back an array of each line
+        return array of strings
+        return empty array of no file
+        '''
+        try:
+            myfile = open(filename)                     # Open for output (to read only)
+        except IOError:
+            return False
+
+        aList = myfile.readlines( )                     # Read entire file into list of line strings
+        myfile.close( )                                 # Flush output buffers to disk
+        array=[]                                        # Initialize 2 dimensional array
+        x=0                                                # Initialize array row value
+        for rec in aList:
+            array.append(rec)                        # Put record array into array of records
+        return array
+    # end readFile()
+
+
+    def writeFile(self, filename, textarray):
+        '''Write out the text array to the cron job
+        return True if writing was successful
+        return False if the writing failed
+        '''
+        try:
+            myfile = open(filename, 'w')     # Open for output (creates file)
+        except IOError:
+            return False
+        for rec in textarray:
+            myfile.write(rec)                 # Write a new-line deliminated strings
+        myfile.close()                         # Flush output buffers to disk
+        return True
+    # end writeFile()
+
+
+    def writeMiroBridgeConf(self, configupdates, cfg, mythtv=True):
+        '''Perform add/change/delete functions to the key/value pairs in the mirobridge.conf file
+        return True if the task was completed successfully
+        return False if there were issues
+        '''
+        anything_updated = False
+        for section in configupdates.keys():
+            if not len(configupdates[section]): # Skip any section that has not been changed
+                continue
+            anything_updated = True
+            for key in configupdates[section].keys():
+                if not cfg.has_section(section):
+                    if configupdates[section][key] == u'':
+                        pass
+                    else:
+                        cfg.add_section(section)
+                        cfg.set(section, key, configupdates[section][key])
+                elif configupdates[section][key] == u'':
+                    if cfg.has_option(section, key):
+                        cfg.remove_option(section, key)
+                else:
+                    cfg.set(section, key, configupdates[section][key])
+
+        filename = os.path.expanduser("~")+u'/.mythtv/mirobridge.conf'
+        if not os.path.isfile(filename): # Create the file if it does not exist
+            anything_updated = True
+
+        if anything_updated:
+            try:
+                fd = open(filename, 'wb')
+                cfg.write(fd)
+            except IOError:
+                return False
+            # Change the owner and group from root to mythtv
+            if mythtv:
+                os.system('chown mythtv:mythtv %s & chmod g+rw %s' % (filename, filename))
+        return True
+    # end writeMiroBridgeConf()
+
+
+    def addMiroBridgeChannel(self):
+        '''Add the Mirobridge Channel and icon if possible
+        return nothing
+        '''
+        # Check if channelid '9999' has been created and if it is assigned as the Miro channel
+        channel = self.MythDB(self.mythdb).getChannel(9999)
+        if channel['channum'] != None:
+            if channel['channum'] != '999' or channel['name'] != 'Miro':
+                self.logger.critical("MiroBridge cannot create a channel record as the channel is already used for Channel num (%s) name (%s)\n" % (channel['channum'], channel['name']))
+                return
+            else:
+                return # The channel has already been created for MiroBridge
+
+        data={}
+        data['chanid'] = 9999
+        data['channum'] = '999'
+        data['freqid'] = '999'
+        data['atsc_major_chan'] = 999
+        data['icon'] = u'%s%s' % (self.vid_graphics_dirs['posterdir'], self.image_set['posterdir'])
+        data['callsign'] = u'Miro'
+        data['name'] = u'Miro'
+        data['last_record'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+
+        # Create the MiroBridge Channel record
+        try:
+            self.Channel().create(data)
+        except MythError, e:
+            errmsg = u"Failed writing the Miro channel record. Most likely the Channel Id and number already exists.\nUse MythTV set up program (mythtv-setup) to alter or remove the offending channel.\nSpecified Channel ID (%d) and Channel Number (%d), error(%s)" % (channel_id, channel_num, e.args[0])
+            self.logger.critical(errmsg)
+            raise MirobridgeconfigPlugin_error(errmsg)
+    # end addMiroBridgeChannel()
+
+
+    def delChannel(self):
+        '''Just delete a Channel record. Never abort as sometimes a record may not exist. This routine is
+        not supported in the native python bindings as MiroBridge uses the Channel table outside of its
+        original intent.
+        return nothing
+        '''
+        db = self.MythDBBase(None)
+        c = db.cursor()
+        query = 'DELETE FROM channel WHERE chanid=9999 AND name="Miro"'
+        try:
+            c.execute(query)
+        except Exception, e:
+            self.logger.error(u"Channel record delete failed (%s)" % (e, ))
+            pass
+        c.close()
+
+    def testEnv(self):
+        '''Run the MiroBridge environment test to see if the installation and configuration is complete
+        Use the return code to determine the results and set 'miro_test_passed' indicator accordingly.
+        '''
+        try:
+            retcode = subprocess.check_call([self.location_mirobridge_script, u"-t"])
+        except subprocess.CalledProcessError, e:
+            self.logger.error(u'Testing the MiroBridge environment with the "-t" option failed, error(%s)' % e)
+            return
+
+        # MiroBridge is read to run
+        self.config['miro_test_passed'] = True
+# end class delChannel()# end MirobridgeConfigFunctions()
+
+
+###########################################################################################
+# This code has no package in the Ubuntu repository. It was easier to copy than install.
+# Found at: http://pypi.python.org/pypi/python-crontab/0.9.4
+###########################################################################################
+
+#
+# Copyright 2008, Martin Owens.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Rewritten from scratch, but based on the code from gnome-schedual by:
+# - Philip Van Hoof <me at pvanhoof dot be>
+# - Gaute Hope <eg at gaute dot vetsj dot com>
+# - Kristof Vansant <de_lupus at pandora dot be>
+#
+
+"""
+Example Use:
+
+from crontab import CronTab
+
+tab = CronTab()
+cron = tab.new(command='/usr/bin/echo')
+
+cron.minute().during(5,50).every(5)
+cron.hour().every(4)
+
+cron2 = tab.new(command='/foo/bar',comment='SomeID')
+cron2.every_reboot()
+
+list = tab.find_command('bar')
+cron3 = list[0]
+cron3.clear()
+cron3.minute().every(1)
+
+print unicode(tab.render())
+
+for cron4 in tab.find_command('echo'):
+    print cron4
+
+for cron5 in tab:
+    print cron5
+
+tab.remove_all('echo')
+
+t.write()
+"""
+
+# These imports were moved to the top of the miroconfig.py file
+#import os, re, sys
+#import tempfile
+
+__version__ = '0.9.3'
+
+CRONCMD = "/usr/bin/crontab"
+ITEMREX = re.compile('^\s*([^@#\s]+)\s+([^@#\s]+)\s+([^@#\s]+)' +
+    '\s+([^@#\s]+)\s+([^@#\s]+)\s+([^#\n]*)(\s+#\s*([^\n]*)|$)')
+SPECREX = re.compile('@(\w+)\s([^#\n]*)(\s+#\s*([^\n]*)|$)')
+DEVNULL = ">/dev/null 2>&1"
+
+MONTH_ENUM = [
+    'jan', 'feb', 'mar', 'apr', 'may',
+    'jun', 'jul', 'aug', 'sep', 'oct',
+    'nov', 'dec',
+]
+WEEK_ENUM  = [
+    'sun', 'mon', 'tue', 'wed', 'thu',
+    'fri', 'sat', 'sun',
+]
+
+SPECIALS = {
+    "reboot"  : '@reboot',
+    "hourly"  : '0 * * * *',
+    "daily"   : '0 0 * * *',
+    "weekly"  : '0 0 * * 0',
+    "monthly" : '0 0 1 * *',
+    "yearly"  : '0 0 1 1 *',
+    "annually": '0 0 1 1 *',
+    "midnight": '0 0 * * *'
+}
+
+S_INFO = [
+    { 'name' : 'Minutes',      'max_v' : 59, 'min_v' : 0 },
+    { 'name' : 'Hours',        'max_v' : 23, 'min_v' : 0 },
+    { 'name' : 'Day of Month', 'max_v' : 31, 'min_v' : 1 },
+    { 'name' : 'Month',        'max_v' : 12, 'min_v' : 1, 'enum' : MONTH_ENUM },
+    { 'name' : 'Day of Week',  'max_v' : 7,  'min_v' : 0, 'enum' : WEEK_ENUM },
+]
+
+class CronTab(object):
+    """
+    Crontab object which can access any time based cron using the standard.
+
+    user = Set the user of the crontab (defaults to $USER)
+    fake_tab = Don't set to crontab at all, set to testable fake tab variable.
+    """
+    def __init__(self, user=None, fake_tab=None):
+        self.user  = user
+        self.root  = ( os.getuid() == 0 )
+        self.lines = None
+        self.crons = None
+        self.fake = fake_tab
+        self.read()
+
+    def read(self):
+        """
+        Read in the crontab from the system into the object, called
+        automatically when listing or using the object. use for refresh.
+        """
+        self.crons = []
+        self.lines = []
+        if self.fake:
+          lines = self.fake.split('\n')
+        else:
+          lines = os.popen(self._read_execute()).readlines()
+        for line in lines:
+            cron = CronItem(line)
+            if cron.is_valid():
+                self.crons.append(cron)
+                self.lines.append(cron)
+            else:
+                self.lines.append(line.replace('\n',''))
+
+    def write(self):
+        """Write the crontab to the system. Saves all information."""
+        # Add to either the crontab or the fake tab.
+        if self.fake != None:
+          self.fake = self.render()
+          return
+
+        filed, path = tempfile.mkstemp()
+        fileh = os.fdopen(filed, 'w')
+        fileh.write(self.render())
+        fileh.close()
+        # Add the entire crontab back to the user crontab
+        os.system(self._write_execute(path))
+        os.unlink(path)
+
+    def render(self):
+        """Render this crontab as it would be in the crontab."""
+        crons = []
+        for cron in self.lines:
+            if type(cron) == CronItem and not cron.is_valid():
+                crons.append("# " + unicode(cron))
+                sys.stderr.write(
+                    "Ignoring invalid crontab line `%s`\n" % str(cron))
+                continue
+            crons.append(unicode(cron))
+        result = '\n'.join(crons)
+
+        if len(result): # This may be an empty crontab as if all cronjobs were deleted
+            if result[-1] not in [ '\n', '\r' ]:
+                result += '\n'
+        return result
+
+    def new(self, command='', comment=''):
+        """
+        Create a new cron with a command and comment.
+
+        Returns the new CronItem object.
+        """
+        item = CronItem(command=command, meta=comment)
+        self.crons.append(item)
+        self.lines.append(item)
+        return item
+
+    def find_command(self, command):
+        """Return a list of crons using a command."""
+        result = []
+        for cron in self.crons:
+            if cron.command.match(command):
+                result.append(cron)
+        return result
+
+    def remove_all(self, command):
+        """Removes all crons using the stated command."""
+        l_value = self.find_command(command)
+        for c_value in l_value:
+            self.remove(c_value)
+
+    def remove(self, item):
+        """Remove a selected cron from the crontab."""
+        self.crons.remove(item)
+        self.lines.remove(item)
+
+    def _read_execute(self):
+        """Returns the command line for reading a crontab"""
+        return "%s -l%s" % (CRONCMD, self._user_execute())
+
+    def _write_execute(self, path):
+        """Return the command line for writing a crontab"""
+        return "%s %s%s" % (CRONCMD, path, self._user_execute())
+
+    def _user_execute(self):
+        """User command switches to append to the read and write commands."""
+        if self.user:
+            return ' -u %s' % str(self.user)
+        return ''
+
+    def __iter__(self):
+        return self.crons.__iter__()
+
+    def __unicode__(self):
+        return self.render()
+
+
+class CronItem(object):
+    """
+    An item which objectifies a single line of a crontab and
+    May be considered to be a cron job object.
+    """
+    def __init__(self, line=None, command='', meta=''):
+        self.command = CronCommand(unicode(command))
+        self._meta   = meta
+        self.valid   = False
+        self.slices  = []
+        self.special = False
+        self.set_slices()
+        if line:
+            self.parse(line)
+
+    def parse(self, line):
+        """Parse a cron line string and save the info as the objects."""
+        result = ITEMREX.findall(line)
+        if result:
+            o_value = result[0]
+            self.command = CronCommand(o_value[5])
+            self._meta   = o_value[7]
+            self.set_slices( o_value )
+            self.valid = True
+        elif line.find('@') < line.find('#') or line.find('#')==-1:
+            result = SPECREX.findall(line)
+            if result and SPECIALS.has_key(result[0][0]):
+                o_value = result[0]
+                self.command = CronCommand(o_value[1])
+                self._meta   = o_value[3]
+                value = SPECIALS[o_value[0]]
+                if value.find('@') != -1:
+                    self.special = value
+                else:
+                    self.set_slices( value.split(' ') )
+                self.valid = True
+
+    def set_slices(self, o_value=None):
+        """Set the values of this slice set"""
+        self.slices = []
+        for i_value in range(0, 5):
+            if not o_value:
+                o_value = [None, None, None, None, None]
+            self.slices.append(
+                CronSlice(value=o_value[i_value], **S_INFO[i_value]))
+
+    def is_valid(self):
+        """Return true if this slice set is valid"""
+        return self.valid
+
+    def render(self):
+        """Render this set slice to a string"""
+        time = ''
+        if not self.special:
+            slices = []
+            for i in range(0, 5):
+                slices.append(unicode(self.slices[i]))
+            time = ' '.join(slices)
+        if self.special or time in SPECIALS.values():
+            if self.special:
+                time = self.special
+            else:
+                time = "@%s" % SPECIALS.keys()[SPECIALS.values().index(time)]
+
+        result = "%s %s" % (time, unicode(self.command))
+        if self.meta():
+            result += " # " + self.meta()
+        return result
+
+
+    def meta(self, value=None):
+        """Return or set the meta value to replace the set values"""
+        if value:
+            self._meta = value
+        return self._meta
+
+    def every_reboot(self):
+        """Set to every reboot instead of a time pattern"""
+        self.special = '@reboot'
+
+    def clear(self):
+        """Clear the special and set values"""
+        self.special = None
+        for slice_v in self.slices:
+            slice_v.clear()
+
+    def minute(self):
+        """Return the minute slice"""
+        return self.slices[0]
+
+    def hour(self):
+        """Return the hour slice"""
+        return self.slices[1]
+
+    def dom(self):
+        """Return the day-of-the month slice"""
+        return self.slices[2]
+
+    def month(self):
+        """Return the month slice"""
+        return self.slices[3]
+
+    def dow(self):
+        """Return the day of the week slice"""
+        return self.slices[4]
+
+    def __str__(self):
+        return self.__unicode__()
+
+    def __unicode__(self):
+        return self.render()
+
+
+class CronSlice(object):
+    """Cron slice object which shows a time pattern"""
+    def __init__(self, name, min_v, max_v, enum=None, value=None):
+        self.name  = name
+        self.min   = min_v
+        self.max   = max_v
+        self.enum  = enum
+        self.parts = []
+        self.value(value)
+
+    def value(self, value=None):
+        """Return the value of the entire slice."""
+        if value:
+            self.parts = []
+            for part in value.split(','):
+                if part.find("/") > 0 or part.find("-") > 0 or part == '*':
+                    self.parts.append( self.get_range( part ) )
+                else:
+                    if self.enum and part.lower() in self.enum:
+                        part = self.enum.index(part.lower())
+                    try:
+                        self.parts.append( int(part) )
+                    except:
+                        raise ValueError(
+                            'Unknown cron time part for %s: %s' % (
+                            self.name, part))
+        return self.render()
+
+    def render(self):
+        """Return the slice rendered as a crontab"""
+        result = []
+        for part in self.parts:
+            result.append(unicode(part))
+        if not result:
+            return '*'
+        return ','.join(result)
+
+    def __str__(self):
+        return self.__unicode__()
+
+    def __unicode__(self):
+        return self.render()
+
+    def every(self, n_value):
+        """Set the every X units value"""
+        self.parts = [ self.get_range( '*/%d' % int(n_value) ) ]
+
+    def on(self, *n_value):
+        """Set the on the time value."""
+        self.parts += n_value
+
+    def during(self, value_from, value_to):
+        """Set the During value, which sets a range"""
+        range_value = self.get_range(
+            "%s-%s" % (str(value_from), str(value_to)))
+        self.parts.append( range_value )
+        return range_value
+
+    def clear(self):
+        """clear the slice ready for new vaues"""
+        self.parts = []
+
+    def get_range(self, range_value):
+        """Return a cron range for this slice"""
+        return CronRange( self, range_value )
+
+
+class CronRange(object):
+    """A range between one value and another for a time range."""
+    def __init__(self, slice_value, range_value=None):
+        self.value_from = None
+        self.value_to = None
+        self.slice = slice_value
+        self.seq   = 1
+        if not range_value:
+            range_value = '*'
+        self.parse(range_value)
+
+    def parse(self, value):
+        """Parse a ranged value in a cronjob"""
+        if value.find('/') > 0:
+            value, self.seq = value.split('/')
+        if value.find('-') > 0:
+            from_val, to_val = value.split('-')
+            self.value_from = self.clean_value(from_val)
+            self.value_to  = self.clean_value(to_val)
+        elif value == '*':
+            self.value_from = self.slice.min
+            self.value_to  = self.slice.max
+        else:
+            raise ValueError, 'Unknown cron range value %s' % value
+
+    def render(self):
+        """Render the ranged value for a cronjob"""
+        value = '*'
+        if self.value_from > self.slice.min or self.value_to < self.slice.max:
+            value = "%d-%d" % (int(self.value_from), int(self.value_to))
+        if int(self.seq) != 1:
+            value += "/%d" % (int(self.seq))
+        return value
+
+    def clean_value(self, value):
+        """Return a cleaned value of the ranged value"""
+        if self.slice.enum and str(value).lower() in self.slice.enum:
+            value = self.slice.enum.index(str(value).lower())
+        try:
+            value = int(value)
+            if value >= self.slice.min and value <= self.slice.max:
+                return value
+        except ValueError:
+            raise ValueError('Invalid range value %s' % str(value))
+
+    def every(self, value):
+        """Set the sequence value for this range."""
+        self.seq = int(value)
+
+    def __str__(self):
+        return self.__unicode__()
+
+    def __unicode__(self):
+        return self.render()
+
+
+class CronCommand(object):
+    """Reprisent a cron command as an object."""
+    def __init__(self, line):
+        self._command = line
+
+    def match(self, command):
+        """Match the command given"""
+        if command in self._command:
+            return True
+        return False
+
+    def command(self):
+        """Return the command line"""
+        return self._command
+
+    def __str__(self):
+        """Return a string as a value"""
+        return self.__unicode__()
+
+    def __unicode__(self):
+        """Return unicode command line value"""
+        return self.command()
+# end of crontab functions

=== added directory 'debian/mcc-mirobridge/ui'
=== added file 'debian/mcc-mirobridge/ui/tab_mirobridge.ui'
--- debian/mcc-mirobridge/ui/tab_mirobridge.ui	1970-01-01 00:00:00 +0000
+++ debian/mcc-mirobridge/ui/tab_mirobridge.ui	2011-05-12 02:35:46 +0000
@@ -0,0 +1,509 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkVBox" id="tab_mirobridge">
+    <property name="visible">True</property>
+    <property name="border_width">6</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkAlignment" id="headings_alignment">
+        <property name="visible">True</property>
+        <property name="xalign">0</property>
+        <property name="yalign">0</property>
+        <property name="xscale">0</property>
+        <child>
+          <object class="GtkVBox" id="headings_vbox">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkLabel" id="heading_label">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;MiroBridge Installation/Configuration&lt;/b&gt;&lt;/big&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="headings_hseparator">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="desc_label">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Enjoy the best videos the Internet has to offer with
+MiroBridge providing an automated interface
+between Miro's videos and MythTV's
+Watch Recordings screen and MythVideo.</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLinkButton" id="wiki_linkbutton">
+                <property name="label" translatable="yes">MiroBridge Wiki</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="has_tooltip">True</property>
+                <property name="relief">none</property>
+                <property name="xalign">0</property>
+                <property name="uri">http://www.mythtv.org/wiki/MiroBridge</property>
+              </object>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLinkButton" id="miro_linkbutton">
+                <property name="label" translatable="yes">Miro</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="has_tooltip">True</property>
+                <property name="relief">none</property>
+                <property name="xalign">0</property>
+                <property name="uri">http://www.getmiro.com/</property>
+              </object>
+              <packing>
+                <property name="position">4</property>
+              </packing>
+            </child>
+          </object>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkHSeparator" id="under_window_title_hseparator">
+        <property name="visible">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">False</property>
+        <property name="padding">6</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkVBox" id="all_fields">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">10</property>
+        <child>
+          <object class="GtkAlignment" id="install_alignment">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="xscale">0</property>
+            <property name="left_padding">25</property>
+            <child>
+              <object class="GtkCheckButton" id="install_checkbutton">
+                <property name="label" translatable="yes">Step #1: Install Miro and/or dependancies</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Check this box then click the "Apply" button to install the dependencies and automatically configure MiroBridge. Until the install is complete the other options on this tab are hidden.
+
+This option will appear even after the initial install if individual components have been removed or delete. In effect you can repair a broken install.</property>
+                <property name="draw_indicator">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="under_install_hseparator">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="padding">6</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="cronjobs_alignment">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="xscale">0</property>
+            <child>
+              <object class="GtkVBox" id="cronjobs_vbox">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkAlignment" id="enable_disable_alignment">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="enable_disable_hbox">
+                        <property name="visible">True</property>
+                        <property name="tooltip_text" translatable="yes">This selection stops or restarts MiroBridge processing. Suspend the MiroBridge cronjob by selecting "Disable".</property>
+                        <child>
+                          <object class="GtkAlignment" id="enable_disable_label_alignment">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xscale">0</property>
+                            <child>
+                              <object class="GtkLabel" id="enable_disable_label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">MiroBridge cronjob:</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="enable_disable_combobox_alignment">
+                            <property name="visible">True</property>
+                            <property name="left_padding">10</property>
+                            <child>
+                              <object class="GtkComboBox" id="enable_disable_combobox">
+                                <property name="visible">True</property>
+                                <property name="model">enable_disable_liststore</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="enable_disable_cellrenderertext"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="cronjob_freq_alignment">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="cronjob_freq_hbox">
+                        <property name="visible">True</property>
+                        <property name="tooltip_text" translatable="yes">Select one of three options for how frequent the MiroBridge processing is run:
+1) Hourly starts: 45th minute of each hour (Default)
+2) Daily  starts: 2:00AM everyday
+3) Weekly starts: Sunday Midnight each week</property>
+                        <child>
+                          <object class="GtkAlignment" id="cronjob_freq_label_alignment">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkLabel" id="cronjob_freq_label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">MiroBridge conjob frequency:</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkAlignment" id="cronjob_freq_combobox_alignment">
+                            <property name="visible">True</property>
+                            <property name="left_padding">10</property>
+                            <child>
+                              <object class="GtkComboBox" id="cronjob_freq_combobox">
+                                <property name="visible">True</property>
+                                <property name="model">cronjob_freq_liststore</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="cronjob_freq_cellrenderertext"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="behavior_alignment">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="xscale">0</property>
+            <child>
+              <object class="GtkVBox" id="behaviour_vbox1">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkHSeparator" id="under_cronobs_hseparator">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="padding">6</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="behaviour_label_alignment">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xscale">0</property>
+                    <child>
+                      <object class="GtkLabel" id="behaviour_label">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Behaviour Options&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="behaviour_combobox_alignment">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkComboBox" id="behaviour_combobox">
+                        <property name="visible">True</property>
+                        <property name="tooltip_text" translatable="yes">Default: Emulate Miro video processing:
+All newly downloaded videos are added to the Watch Recordings screen, after they have been watched they are moved to MythVideo and eventually are removed by Miro according to Miro's own expiry settings (X number of days).
+
+Watched Recordings screen only:
+Force all Miro videos to never be added to MythVideo. This is a watch-and-forget option. The Videos will be removed by Miro according to Miro's own expiry settings (X number of days)
+
+Copy all Miro videos directly to MythVideo:
+Force all Miro Channel videos to be copied directly to MythVideo and never displayed in the MythTV's "Watch Recordings" screen. These copied videos are removed from Miro entirely. Miro never expires/removes a copied video which act like any other MythVideo video file.
+
+Watch Miro videos then copy to MythVideo:
+Force all Miro videos to be copied directly to MythVideo AFTER they have been watched in the MythTV "Watch Recordings" screen. This option is a good balance between having new videos highlighted through the MythTV's "Watch Recordings" screen and automatically saving the video in MythVideo once it has been watched. This option is most frequently used for Movie trailers. Miro never expires/removes a copied video which act like any other MythVideo video file.</property>
+                        <property name="model">behaviour_liststore</property>
+                        <child>
+                          <object class="GtkCellRendererText" id="behaviour_cellrenderertext"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHSeparator" id="under_behaviourhseparator">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="padding">6</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkAlignment" id="last_elems_alignment">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="xscale">0</property>
+            <child>
+              <object class="GtkVBox" id="last_elems_vbox">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkLabel" id="config_miro_channels_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Configure Miro Video Channels&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="launch_miro_alignment">
+                    <property name="visible">True</property>
+                    <property name="xscale">0.60000002384185791</property>
+                    <child>
+                      <object class="GtkButton" id="launch_miro_button">
+                        <property name="label" translatable="yes">Launch Miro (Channel Add/Change/Delete)</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="tooltip_text" translatable="yes">Launch the Miro GUI application so that you can:
+1) Set the location where Miro will download videos
+2) Add or change Miro video channels
+3) Modify the channel names
+4) Set the auto expiry days
+5) Ensure that auto download is enabled</property>
+                        <signal name="clicked" handler="callBacks"/>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="import_opml_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Import an OPML file (*.opml)&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="import_opml_alignment">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xscale">0.60000002384185791</property>
+                    <child>
+                      <object class="GtkFileChooserButton" id="import_opml_filechooserbutton">
+                        <property name="visible">True</property>
+                        <property name="tooltip_text" translatable="yes">*** The file browser window stays displayed while the OPML file is being imported ***
+
+Import an OPML file that has been exported from a separate Miro configuration. The import file must have an extension of ".opml". This is an excellent way of copying your Miro Channel configuration from a previous Miro install or for using a separate PC with a keyboard to choose and rename your Miro Channels.</property>
+                        <property name="create_folders">False</property>
+                        <signal name="selection_changed" handler="callBacks" after="yes"/>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHSeparator" id="over_uninstall_hseparator">
+                    <property name="visible">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="padding">12</property>
+                    <property name="position">4</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="uninstall_alignment">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xscale">0</property>
+                    <property name="left_padding">25</property>
+                    <child>
+                      <object class="GtkCheckButton" id="uninstall_checkbutton">
+                        <property name="label" translatable="yes">Uninstall MiroBridge</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="tooltip_text" translatable="yes">Uninstall the Miro package and remove MiroBridge related files including images, configuration file and the cronjob.
+Uninstall does not remove any existing Watch Recordings or MythVideo records or video files. Those must be removed by the through either the Watch Recordings screen delete 'd' and/or MythVideo delete 'd' options.</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">5</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="padding">6</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+  <object class="GtkListStore" id="enable_disable_liststore">
+    <columns>
+      <!-- column-name enable_disable_array -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes"></col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="behaviour_liststore">
+    <columns>
+      <!-- column-name behaviour_array -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes"></col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkListStore" id="cronjob_freq_liststore">
+    <columns>
+      <!-- column-name cronjob_freq_array -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes"></col>
+      </row>
+    </data>
+  </object>
+</interface>

=== added file 'debian/mysql.txt.dist'
--- debian/mysql.txt.dist	1970-01-01 00:00:00 +0000
+++ debian/mysql.txt.dist	2011-05-12 02:35:46 +0000
@@ -0,0 +1,4 @@
+DBHostName=localhost
+DBUserName=mythtv
+DBName=mythconverg
+DBPassword=

=== added file 'debian/mytharchive.dirs'
--- debian/mytharchive.dirs	1970-01-01 00:00:00 +0000
+++ debian/mytharchive.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+var/lib/mytharchive/temp
+usr/share/mythtv

=== added file 'debian/mytharchive.docs'
--- debian/mytharchive.docs	1970-01-01 00:00:00 +0000
+++ debian/mytharchive.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,3 @@
+mythplugins/mytharchive/TODO
+mythplugins/mytharchive/README
+mythplugins/mytharchive/AUTHORS

=== added file 'debian/mytharchive.postinst'
--- debian/mytharchive.postinst	1970-01-01 00:00:00 +0000
+++ debian/mytharchive.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+
+case "$1" in
+    configure)
+        for dir in /var/lib/mytharchive/temp; do
+            if ! dpkg-statoverride --list $dir >/dev/null; then
+                chown mythtv:mythtv $dir || true
+                chmod 2775 $dir || true
+            fi
+        done
+
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+

=== added file 'debian/mythbuntu-crashdb.conf'
--- debian/mythbuntu-crashdb.conf	1970-01-01 00:00:00 +0000
+++ debian/mythbuntu-crashdb.conf	2011-05-12 02:35:46 +0000
@@ -0,0 +1,5 @@
+mythbuntu = {
+	'impl' : 'launchpad',
+	'project' : 'mythbuntu',
+        'bug_pattern_base': None,
+}

=== added file 'debian/mythfrontend.sh'
--- debian/mythfrontend.sh	1970-01-01 00:00:00 +0000
+++ debian/mythfrontend.sh	2011-05-12 02:35:46 +0000
@@ -0,0 +1,99 @@
+#!/bin/sh
+# Mario Limonciello, March 2007
+# partially merged with startmythtv.sh by Michael Haas, October 2007
+
+pidof mythfrontend.real 2>&1 >/dev/null && wmctrl -a "MythTV Frontend" 2>/dev/null && exit 0
+
+#source our dialog functions
+. /usr/share/mythtv/dialog_functions.sh
+
+#find the session, dialog, and su manager we will be using for display
+find_session
+find_dialog
+find_su
+
+#check that we are in the mythtv group
+check_groups
+
+#create a symbolic link for mysql.txt so it can't be overwritten
+symlink
+
+if [ "$1" = "--service" ]; then
+    #source frontend session settings
+    if [ -f /etc/mythtv/session-settings ]; then
+        . /etc/mythtv/session-settings
+    fi
+    echo "Please note: additional command line arguments will not be passed"
+    echo "  to mythfrontend when using --service"
+    echo "Please set them in /etc/mythtv/session-settings instead"
+
+    # set log files
+    MYTHFELOG="/var/log/mythtv/mythfrontend.log"
+    MYTHWELCOMELOG="/var/log/mythtv/mythwelcome.log"
+
+    # make sure that our log files exist
+    # it's ok if we fail, we'll fall back to a different logfile location later on
+    if [ ! -f "${MYTHFELOG}" ]; then
+        touch "${MYTHFELOG}" || true
+    fi
+    if [ ! -f "${MYTHWELCOMELOG}" ]; then
+        touch "${MYTHWELCOMELOG}" || true
+    fi
+    # make sure log files are writeable by members of the "mythtv" group
+    # again, it's ok if we fail so we redirect STDERR to /dev/null
+    chgrp mythtv "${MYTHFELOG}" 2>/dev/null && \
+    chmod g+rw "${MYTHFELOG}" 2>/dev/null || true
+    chgrp mythtv "${MYTHWELCOMELOG}" 2>/dev/null && \
+    chmod g+rw "${MYTHWELCOMELOG}" 2>/dev/null || true
+
+    # Are the log files writeable as well? If not, warn the user and
+    # fall back to tempory log location
+    if [ ! -w "${MYTHFELOG}" ]; then
+        echo "Sorry, "${MYTHFELOG}" is not writeable. Please make sure it's writeable"
+        echo "  for the \"mythtv\" group."
+        echo "Logging to /tmp/mythfrontend.${$}.log instead"
+        MYTHFELOG="/tmp/mythfrontend.${$}.log"
+    fi
+
+    if [ ! -w "${MYTHWELCOMELOG}" ]; then
+        echo "Sorry, "${MYTHWELCOMELOG}" is not writeable. Please make sure it's writeable"
+        echo "  for the \"mythtv\" group."
+        echo "Logging to /tmp/mythwelcome.${$}.log instead"
+        MYTHWELCOMELOG="/tmp/mythwelcome.${$}.log"
+    fi
+
+
+    #if group membership is okay, go ahead and launch
+    if [ "$IGNORE_NOT" = "0" ]; then
+        # start mythtv frontend software
+        if [ "$MYTHWELCOME" = "true" ]; then
+            if [ ! -z $MYTHFRONTEND_OPTS ]; then
+                echo "Note: It looks like you set MYTHFRONTEND_OPTS in /etc/mythtv/session-settings" | tee -a "${MYTHWELCOMELOG}"
+                echo "However, mythwelcome won't recognize these." | tee -a "${MYTHWELCOMELOG}"
+                echo "You have to set to set your startup options in the mythwelcome settings screens" | tee -a "${MYTHWELCOMELOG}"
+                echo "Starting mythwelcome.." | tee -a "${MYTHWELCOMELOG}"
+            fi
+            # Note: if mythwelcome would support -O to override database settings,
+            # we could tell it to start the frontend with $MYTHFRONTEND_OPTS
+            # This is not possible yet, but maybe it'll happen in the future
+            exec mythwelcome | tee -a "${MYTHWELCOMELOG}"
+        else
+            echo "Starting mythfrontend.real.." >> "${MYTHFELOG}"
+
+            until /usr/bin/mythfrontend.real --logfile "${MYTHFELOG}" ${MYTHFRONTEND_OPTS}
+                  RET=$?
+                  [ "$RET" = "0" -o "$RET" = "1" -o "$RET" = "254" ]
+            do
+                  echo "Restarting mythfrontend.real..." >> "${MYTHFELOG}"
+                  notify-send -i info 'Restarting Frontend' "The front-end crashed unexpectedly (exit code $RET) and is restarting. Please wait..." 2>> "${MYTHFELOG}"
+            done
+        fi
+    fi
+# if we're not in --service mode, just behave normally
+elif [ "$1" != "--service" ]; then
+    # if group membership is okay, go ahead and launch
+    if [ "$IGNORE_NOT" = "0" ]; then
+        exec /usr/bin/mythfrontend.real "$@"
+    fi
+fi
+ 

=== added file 'debian/mythgallery.dirs'
--- debian/mythgallery.dirs	1970-01-01 00:00:00 +0000
+++ debian/mythgallery.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+var/lib/mythtv/pictures

=== added file 'debian/mythgallery.docs'
--- debian/mythgallery.docs	1970-01-01 00:00:00 +0000
+++ debian/mythgallery.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+mythplugins/mythgallery/README
+mythplugins/mythgallery/AUTHORS

=== added file 'debian/mythgallery.postinst'
--- debian/mythgallery.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythgallery.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+
+case "$1" in
+    configure)
+        if ! dpkg-statoverride --list /var/lib/mythtv/pictures; then
+            chown mythtv:mythtv /var/lib/mythtv/pictures || true
+            chmod 775 /var/lib/mythtv/pictures || true
+        fi
+
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+

=== added file 'debian/mythmusic.dirs'
--- debian/mythmusic.dirs	1970-01-01 00:00:00 +0000
+++ debian/mythmusic.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,3 @@
+var/lib/mythtv/music
+etc/mythtv
+usr/share/mythtv/sql

=== added file 'debian/mythmusic.docs'
--- debian/mythmusic.docs	1970-01-01 00:00:00 +0000
+++ debian/mythmusic.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+mythplugins/mythmusic/README
+mythplugins/mythmusic/AUTHORS

=== added file 'debian/mythmusic.postinst'
--- debian/mythmusic.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythmusic.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+
+MYTHSQL=/usr/share/mythtv/mythsql
+
+case "$1" in
+    configure)
+        if test -n "$2" && dpkg --compare-versions "$2" lt 0.8-1; then
+            $MYTHSQL < /usr/share/mythtv/sql/mythmusic-0-7-to-0-8.sql
+        fi
+
+        if test -n "$2" && dpkg --compare-versions "$2" lt 0.9-1; then
+            $MYTHSQL /usr/share/mythtv/sql/mythmusic-0-8-to-0-9.sql
+        fi
+
+	if [ -f /etc/mythtv/mythmusic-settings.txt ]; then
+		mv /etc/mythtv/mythmusic-settings.txt \
+			/etc/mythtv/mythmusic-settings.dpkg-old
+	fi
+
+        for dir in /var/lib/mythtv/music; do
+            if ! dpkg-statoverride --list $dir >/dev/null; then
+                chown mythtv:mythtv $dir || true
+                chmod 2775 $dir || true
+            fi
+        done
+
+             
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+

=== added file 'debian/mythnetvision.docs'
--- debian/mythnetvision.docs	1970-01-01 00:00:00 +0000
+++ debian/mythnetvision.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+mythplugins/mythnetvision/README
+mythplugins/mythnetvision/AUTHORS

=== added file 'debian/mythnews.docs'
--- debian/mythnews.docs	1970-01-01 00:00:00 +0000
+++ debian/mythnews.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+mythplugins/mythnews/README
+mythplugins/mythnews/AUTHORS

=== added file 'debian/mythtv-backend.configfiles'
--- debian/mythtv-backend.configfiles	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.configfiles	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+/etc/logrotate.d/mythtv-backend
+/etc/cron.daily/mythtv-backend

=== added file 'debian/mythtv-backend.cron.daily'
--- debian/mythtv-backend.cron.daily	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.cron.daily	2011-05-12 02:35:46 +0000
@@ -0,0 +1,7 @@
+#!/bin/sh
+#Daily maintenance mode for Jamu
+DIRECTORY=$(getent passwd mythtv | cut -d':' -f6)
+if [ -f "$DIRECTORY/.mythtv/config.xml" ] && [ -x /usr/bin/mythbackend ]; then
+    su mythtv -c "/usr/bin/python /usr/share/mythtv/mythvideo/scripts/jamu.py -M >> '/var/log/mythtv/jamu.log' 2>&1"
+fi
+

=== added file 'debian/mythtv-backend.cron.hourly'
--- debian/mythtv-backend.cron.hourly	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.cron.hourly	2011-05-12 02:35:46 +0000
@@ -0,0 +1,7 @@
+#!/bin/sh
+#Hourly massive update to ensure users see graphics coming in for upcoming recordings and current recordings
+DIRECTORY=$(getent passwd mythtv | cut -d':' -f6)
+if [ -f "$DIRECTORY/.mythtv/config.xml" ] && [ -x /usr/bin/mythbackend ]; then
+    su mythtv -c "/usr/bin/python /usr/share/mythtv/mythvideo/scripts/jamu.py -MW >> '/var/log/mythtv/jamu.log' 2>&1"
+fi
+

=== added file 'debian/mythtv-backend.cron.weekly'
--- debian/mythtv-backend.cron.weekly	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.cron.weekly	2011-05-12 02:35:46 +0000
@@ -0,0 +1,6 @@
+#!/bin/sh
+#Janitor mode to clean up stale stuff
+DIRECTORY=$(getent passwd mythtv | cut -d':' -f6)
+if [ -f "$DIRECTORY/.mythtv/config.xml" ] && [ -x /usr/bin/mythbackend ]; then
+    su mythtv -c "/usr/bin/python /usr/share/mythtv/mythvideo/scripts/jamu.py -MJ >> '/var/log/mythtv/jamu.log' 2>&1"
+fi

=== added file 'debian/mythtv-backend.dirs'
--- debian/mythtv-backend.dirs	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,11 @@
+usr/share/doc/mythtv-backend
+var/cache/mythtv
+var/lib/mythtv/recordings 
+var/lib/mythtv/videos
+var/lib/mythtv/fanart
+var/lib/mythtv/screenshots
+var/lib/mythtv/banners
+var/lib/mythtv/coverart
+var/lib/mythtv/db_backups
+var/lib/mythtv/livetv
+var/lib/mythtv/trailers

=== added file 'debian/mythtv-backend.docs'
--- debian/mythtv-backend.docs	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+mythtv/contrib

=== added file 'debian/mythtv-backend.if-up.d'
--- debian/mythtv-backend.if-up.d	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.if-up.d	2011-05-12 02:35:46 +0000
@@ -0,0 +1,22 @@
+#! /bin/sh
+set -e
+
+# Don't bother to restart mytbackend when lo is configured.
+if [ "$IFACE" = lo ]; then
+	exit 0
+fi
+
+# Only run from ifup.
+if [ "$MODE" != "start" ]; then
+	exit 0
+fi
+
+# Is /usr mounted?
+if [ ! -e /usr/bin/mythbackend ]; then
+	exit 0
+fi
+
+stop mythtv-backend || true
+start mythtv-backend || true
+
+exit 0

=== added file 'debian/mythtv-backend.install'
--- debian/mythtv-backend.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,20 @@
+#Come from make install
+usr/bin/mythbackend
+usr/bin/mythcommflag
+usr/bin/mythfilldatabase
+usr/bin/mythjobqueue
+usr/bin/mythtv-setup.real
+usr/bin/mythpreviewgen
+
+#Copied in from debian/
+debian/mythtv-setup.desktop 			usr/share/applications
+debian/41-mythtv-permissions.rules		lib/udev/rules.d
+debian/mythtv-backend.if-up.d 			etc/network/if-up.d
+debian/mythtv-setup.sh				usr/share/mythtv
+
+## Mythbuntu control centre
+# plugin for mcc-mirobridge
+#Disable jamu/mirobridge since they're not set up  
+#to work with 0.24 bindings yet.
+#debian/mcc-mirobridge/python  usr/share/mythbuntu/plugins
+#debian/mcc-mirobridge/ui      usr/share/mythbuntu/plugins

=== added file 'debian/mythtv-backend.links'
--- debian/mythtv-backend.links	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.links	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+usr/share/mythtv/mythtv-setup.sh usr/bin/mythtv-setup

=== added file 'debian/mythtv-backend.logrotate'
--- debian/mythtv-backend.logrotate	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.logrotate	2011-05-12 02:35:46 +0000
@@ -0,0 +1,25 @@
+/var/log/mythtv/mythbackend.log {
+        daily
+	size=10M
+        rotate 7
+        notifempty
+        copytruncate
+}
+
+/var/log/mythtv/mirobridge.log {
+        daily
+        size=10M
+        rotate 7
+        notifempty
+        copytruncate
+        missingok
+}
+
+/var/log/mythtv/jamu.log {
+        daily
+	size=10M
+        rotate 7
+        notifempty
+        copytruncate
+        missingok
+}

=== added file 'debian/mythtv-backend.postinst'
--- debian/mythtv-backend.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,47 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+case "$1" in
+    configure)
+
+        for dir in /var/log/mythtv \
+                   /var/lib/mythtv/recordings \
+                   /var/cache/mythtv \
+                   /var/lib/mythtv/banners \
+                   /var/lib/mythtv/screenshots \
+                   /var/lib/mythtv/fanart \
+                   /var/lib/mythtv/coverart \
+                   /var/lib/mythtv/db_backups \
+                   /var/lib/mythtv/livetv \
+                   /var/lib/mythtv/trailers \
+                   /var/lib/mythtv/videos; do
+	    if [ -d "$dir" ] && ! dpkg-statoverride --list "$dir" >/dev/null; then
+                chown mythtv:mythtv "$dir" || true
+                chmod 2775 "$dir" || true
+            fi
+        done
+
+        if [ -z "$2" ]; then
+            # Migrate from old mythtv -> mythtv-backend
+            [ -f /etc/logrotate.d/mythtv ] && \
+                mv /etc/logrotate.d/mythtv /etc/logrotate.d/mythtv-backend
+
+            # Errors now sent via cron
+            rm -f /var/log/mythtv/mythfilldatabase.log*
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0

=== added file 'debian/mythtv-backend.postrm'
--- debian/mythtv-backend.postrm	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.postrm	2011-05-12 02:35:46 +0000
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+
+case "$1" in
+    purge)
+
+        rm -f /var/log/mythtv/mythbackend.log*
+        if test -d /var/log/mythtv; then
+          rmdir --ignore-fail-on-non-empty /var/log/mythtv
+        fi
+
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+#DEBHELPER#
+
+exit 0

=== added file 'debian/mythtv-backend.preinst'
--- debian/mythtv-backend.preinst	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.preinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+set -e
+
+# Remove a no-longer used conffile
+rm_conffile() {
+    PKGNAME="$1"
+    CONFFILE="$2"
+    if [ -e "$CONFFILE" ]; then
+        md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
+        old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE '{s/ obsolete$//;s/.* //p}\"`"
+        if [ "$md5sum" != "$old_md5sum" ]; then
+            echo "Obsolete conffile $CONFFILE has been modified by you."
+            echo "Saving as $CONFFILE.dpkg-bak ..."
+            mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
+        else
+            echo "Removing obsolete conffile $CONFFILE ..."
+            rm -f "$CONFFILE"
+        fi
+    fi
+}
+
+
+if [ "$1" = install ] || [ "$1" = upgrade ]; then
+	if [ -e "/etc/udev.rules.d/41-mythtv-permissions.rules" ]; then
+		rm_conffile "mythtv-backend" "/etc/udev.rules.d/41-mythtv-permissions.rules"
+        fi
+	if dpkg --compare-versions "$2" le "0.23.0~trunk23567-0ubuntu2"; then
+		rm_conffile "mythtv-backend" "/etc/default/mythtv-backend"
+	fi
+fi
+
+#DEBHELPER#

=== added file 'debian/mythtv-backend.upstart'
--- debian/mythtv-backend.upstart	1970-01-01 00:00:00 +0000
+++ debian/mythtv-backend.upstart	2011-05-12 02:35:46 +0000
@@ -0,0 +1,24 @@
+# MythTV Backend service
+
+description     "MythTV Backend"
+author          "Mario Limonciello <superm1@xxxxxxxxxx>"
+
+start on (local-filesystems and net-device-up IFACE=lo and started udev-finish)
+stop on runlevel [016]
+
+#expect fork
+respawn
+respawn limit 2 3600
+
+pre-start script 
+    [ -x /usr/sbin/mysqld ] || exit 0
+    for i in `seq 1 30` ; do
+       /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping && exit 0
+       sleep .5
+    done
+end script
+
+script
+	test -f /etc/default/locale && . /etc/default/locale || true
+	LANG=$LANG /usr/bin/mythbackend --logfile /var/log/mythtv/mythbackend.log --user mythtv
+end script

=== added file 'debian/mythtv-common.config'
--- debian/mythtv-common.config	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.config	2011-05-12 02:35:46 +0000
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+CONFIG=/etc/mythtv/mysql.txt
+if [ -e $CONFIG ]; then
+    db_set mythtv/mysql_mythtv_dbname "`sed -n -e 's/^\(str  *\)\?DBName=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_mythtv_user "`sed -n -e 's/^\(str  *\)\?DBUserName=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_mythtv_password "`sed -n -e 's/^\(str  *\)\?DBPassword=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_host "`sed -n -e 's/^\(str  *\)\?DBHostName=\(.*\)$/\2/gp;' $CONFIG`"
+fi
+
+db_input low mythtv/mysql_mythtv_dbname   || true
+db_input low mythtv/mysql_mythtv_user     || true
+db_input low mythtv/mysql_mythtv_password || true
+db_input medium mythtv/mysql_host         || true
+db_go || true
+
+db_get mythtv/mysql_mythtv_password
+if [ -z "$RET" ]; then
+    mythtv_password="$(pwgen -s 8)"
+    db_set mythtv/mysql_mythtv_password "$mythtv_password"
+fi

=== added file 'debian/mythtv-common.dirs'
--- debian/mythtv-common.dirs	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+etc/mythtv
+var/log/mythtv

=== added file 'debian/mythtv-common.install'
--- debian/mythtv-common.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,19 @@
+#these came from make install
+usr/share/mythtv/themes
+usr/bin/mythshutdown
+usr/bin/mythff*
+usr/share/mythtv/*.xml
+usr/share/mythtv/*.pl
+usr/share/mythtv/locales
+usr/share/mythtv/fonts/Tiresias*.ttf
+usr/share/mythtv/internetcontent
+usr/share/mythtv/metadata
+
+#Other bits that we are gonna copy in that aren't part of make install
+mythtv/contrib/config_files/config.xml usr/share/mythtv
+
+#These are added in from debian/
+debian/dialog_functions.sh usr/share/mythtv
+debian/mysql.txt.dist usr/share/mythtv
+debian/mythbuntu-crashdb.conf etc/apport/crashdb.conf.d
+debian/source_mythtv.py usr/share/apport/package-hooks

=== added file 'debian/mythtv-common.links'
--- debian/mythtv-common.links	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.links	2011-05-12 02:35:46 +0000
@@ -0,0 +1,9 @@
+usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf usr/share/mythtv/themes/BlackCurves-OSD/DejaVuSans.ttf
+usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf usr/share/mythtv/themes/BlackCurves-OSD/DejaVuSans-Oblique.ttf
+usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf usr/share/mythtv/themes/Gray-OSD/DejaVuSans-Bold.ttf
+usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf usr/share/mythtv/themes/Gray-OSD/DejaVuSans.ttf
+usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf usr/share/mythtv/themes/Gray-OSD/DejaVuSans-Oblique.ttf
+usr/share/fonts/truetype/freefont/FreeSans.ttf usr/share/mythtv/fonts/FreeSans.ttf
+usr/share/fonts/truetype/freefont/FreeMono.ttf usr/share/mythtv/fonts/FreeMono.ttf
+usr/share/apport/package-hooks/source_mythtv.py usr/share/apport/package-hooks/source_mythplugins.py
+usr/share/apport/package-hooks/source_mythtv.py usr/share/apport/package-hooks/source_myththemes.py

=== added file 'debian/mythtv-common.postinst'
--- debian/mythtv-common.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,119 @@
+#!/bin/sh -e
+. /usr/share/debconf/confmodule
+
+case "$1" in
+    configure)
+
+    #only create a user if they don't already exist
+    if ! getent passwd mythtv 1>/dev/null; then
+        adduser --quiet --system --group --disabled-password --system \
+            --shell /bin/sh mythtv
+    fi
+    HOMEDIR=$(getent passwd mythtv | awk -F: '{ print $6 }')
+
+    adduser --quiet mythtv video
+    adduser --quiet mythtv audio
+    adduser --quiet mythtv cdrom
+    adduser --quiet mythtv dialout
+
+    db_get mythtv/mysql_host
+    hostname="$RET"
+    export hostname
+
+    db_get mythtv/mysql_mythtv_dbname
+    database="$RET"
+    export database
+
+    db_get mythtv/mysql_mythtv_user
+    mythtv_username="$RET"
+    export mythtv_username
+
+    db_get mythtv/mysql_mythtv_password
+    if [ -z "$RET" ]; then
+        mythtv_password="$(pwgen -s 8)"
+        db_set mythtv/mysql_mythtv_password "$mythtv_password"
+        db_subst mythtv/display_password password "$mythtv_password"
+        db_input high mythtv/display_password || true
+        db_go || true
+    else
+        mythtv_password="$RET"
+    fi
+    export mythtv_password
+
+    NEW=$(mktemp -t mysql.txt-XXXXXX)
+    if [ -s /etc/mythtv/mysql.txt ]; then
+        INPUT=/etc/mythtv/mysql.txt
+        chown --reference="$INPUT" "$NEW"
+        chmod --reference="$INPUT" "$NEW"
+    else
+        INPUT=/usr/share/mythtv/mysql.txt.dist
+        chown mythtv:mythtv "$NEW"
+        chmod 660 "$NEW"
+    fi
+
+    cat $INPUT | grep -v 'DBPassword=' | sed -e "
+s/^\(\(str  *\)\?DBHostName\)=.*$/\1=$hostname/g;
+s/^\(\(str  *\)\?DBUserName\)=.*$/\1=$mythtv_username/g;
+s/^\(\(str  *\)\?DBName\)=.*$/\1=$database/g;" > $NEW
+        cat <<EOF >> $NEW
+DBPassword=$mythtv_password
+EOF
+
+    mv $NEW /etc/mythtv/mysql.txt
+
+    NEW=$(mktemp -t config.xml-XXXXXX)
+    if [ -s /etc/mythtv/config.xml ]; then
+        INPUT=/etc/mythtv/config.xml
+        chown --reference="$INPUT" "$NEW"
+        chmod --reference="$INPUT" "$NEW"
+    else
+        INPUT=/usr/share/mythtv/config.xml
+        chown mythtv:mythtv "$NEW"
+        chmod 660 "$NEW"
+    fi
+
+    cat $INPUT > $NEW 
+
+    perl -pi -e 's/(<DBHostName>).*?(<\/DBHostName>)/$1$ENV{'hostname'}$2/;' $NEW
+    perl -pi -e 's/(<DBUserName>).*?(<\/DBUserName>)/$1$ENV{'mythtv_username'}$2/;' $NEW
+    perl -pi -e 's/(<DBPassword>).*?(<\/DBPassword>)/$1$ENV{'mythtv_password'}$2/;' $NEW
+    perl -pi -e 's/(<DBName>).*?(<\/DBName>)/$1$ENV{'database'}$2/;' $NEW
+    perl -pi -e 's/^\s+<LocalHostName>.*?<\/LocalHostName>\n//m;' $NEW
+
+    mv $NEW /etc/mythtv/config.xml
+
+    mkdir -p /root/.mythtv || true
+    mkdir -p $HOMEDIR/.mythtv || true
+    chown mythtv:mythtv $HOMEDIR/.mythtv || true
+
+    if [ ! -e /root/.mythtv/config.xml ]; then
+        ln -s /etc/mythtv/config.xml /root/.mythtv/config.xml || true
+    fi
+
+    if [ ! -e $HOMEDIR/.mythtv/config.xml ]; then
+        ln -s /etc/mythtv/config.xml $HOMEDIR/.mythtv/config.xml || true
+    fi
+
+    if [ ! -e $HOMEDIR/.mythtv/mysql.txt ]; then
+        ln -s /etc/mythtv/mysql.txt $HOMEDIR/.mythtv/mysql.txt || true
+    fi
+
+
+
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+    echo "postinst called with unknown argument \`$1'" >&2
+    db_set mythtv/mysql_mythtv_password ""
+    exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+db_set mythtv/mysql_mythtv_password ""
+exit 0

=== added file 'debian/mythtv-common.postrm'
--- debian/mythtv-common.postrm	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.postrm	2011-05-12 02:35:46 +0000
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+if [ $1 = purge ]; then  
+    deluser --quiet --system mythtv
+fi 
+
+#DEBHELPER#
+
+exit 0

=== added file 'debian/mythtv-common.templates'
--- debian/mythtv-common.templates	1970-01-01 00:00:00 +0000
+++ debian/mythtv-common.templates	2011-05-12 02:35:46 +0000
@@ -0,0 +1,22 @@
+Template: mythtv/mysql_mythtv_dbname
+Type: string
+Default: mythconverg
+_Description: Database to be used to hold MythTV data:
+ If a database with this name already exists, it will be used.
+
+Template: mythtv/mysql_mythtv_user
+Type: string
+Default: mythtv
+_Description: Username used by MythTV to access its database:
+ This user will automatically be granted appropriate permissions to the
+ database.
+
+Template: mythtv/mysql_mythtv_password
+Type: password
+_Description: Password used by MythTV to access its database:
+ If you give an empty password, a random one will be generated.
+
+Template: mythtv/mysql_host
+Type: string
+Default: localhost
+_Description: Host MySQL server resides in:

=== added file 'debian/mythtv-database.config'
--- debian/mythtv-database.config	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.config	2011-05-12 02:35:46 +0000
@@ -0,0 +1,75 @@
+#!/bin/sh -e
+#Try and connect to a sane default before
+#actually looking for input
+. /usr/share/debconf/confmodule
+
+CONFIG=/etc/mythtv/mysql.txt
+if [ -e $CONFIG ]; then
+    db_set mythtv/mysql_mythtv_dbname "`sed -n -e 's/^\(str  *\)\?DBName=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_mythtv_user "`sed -n -e 's/^\(str  *\)\?DBUserName=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_mythtv_password "`sed -n -e 's/^\(str  *\)\?DBPassword=\(.*\)$/\2/gp;' $CONFIG`"
+    db_set mythtv/mysql_host "`sed -n -e 's/^\(str  *\)\?DBHostName=\(.*\)$/\2/gp;' $CONFIG`"
+fi
+
+if which mysql >/dev/null; then
+    if echo "show databases;" | mysql --defaults-file=/etc/mysql/debian.cnf >/dev/null 2>&1; then
+        db_set mythtv/mysql_admin_user "debian-sys-maint"
+        db_set mythtv/mysql_admin_password ""
+    else
+        db_input low  mythtv/mysql_host || true
+        db_get mythtv/mysql_host
+        HOST="$RET"
+
+        if test -z "$HOST"; then
+            HOST=localhost
+            db_set mythtv/mysql_host "$HOST"
+        fi
+
+        db_input low mythtv/mysql_admin_user || true
+        db_get mythtv/mysql_admin_user
+        USER="$RET"
+        db_subst mythtv/mysql_admin_password user "$USER"
+
+        #Try to get it from mysql config
+        #rather than ask twice.
+        db_get mysql-server/root_password || RET="" && true
+        PASSWORD="$RET"
+        if ! test -z "$PASSWORD"; then
+            db_set mythtv/mysql_admin_password $PASSWORD
+
+        ##We couldn't get it from mysql's debconf, so we'll use our own##
+
+        #if localhost and no running mysql process, our later check
+        #would be failing
+        elif [ "$HOST" = "localhost" ] && ! pgrep mysqld\$ >/dev/null; then
+            db_set mythtv/mysql_admin_user "debian-sys-maint"
+            db_set mythtv/mysql_admin_password ""
+        #mysql should be running and installed, try 5 times to do it
+        else
+            i=1
+            while ! echo "show databases;" | mysql --host="$HOST" --user="$USER" --password="$PASSWORD" >/dev/null 2>&1; do
+                if [ $i -ge 5 ]; then
+                    echo "Failed to connect to database (incorrect admin password)" >&2
+                    break
+                fi
+                db_input high mythtv/mysql_admin_password || true
+                db_go || true
+                db_get mythtv/mysql_admin_password
+                PASSWORD="$RET"
+                i=$(($i+1))
+            done
+        fi
+    fi
+#mysql binary isn't installed yet, but that shouldn't cause the config
+#to be failing because this might be called during the preinst
+else
+        db_set mythtv/mysql_admin_user "debian-sys-maint"
+        db_set mythtv/mysql_admin_password ""
+fi
+
+
+#Ask the user about expandability
+db_input high mythtv/public_bind || true
+db_go || true
+
+exit 0

=== added file 'debian/mythtv-database.configfiles'
--- debian/mythtv-database.configfiles	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.configfiles	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+/etc/cron.weekly/mythtv-database

=== added file 'debian/mythtv-database.cron.weekly'
--- debian/mythtv-database.cron.weekly	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.cron.weekly	2011-05-12 02:35:46 +0000
@@ -0,0 +1,17 @@
+#!/bin/sh
+# /etc/cron.weekly/mythtv-database script - check and backup mythconverg tables
+# Copyright 2005/12/02 2006/10/08 Paul Andreassen 
+#                      2010 Mario Limonciello
+
+set -e -u
+
+DBNAME="mythconverg"
+DEBIAN="--defaults-extra-file=/etc/mysql/debian.cnf"
+
+/usr/bin/mysqlcheck $DEBIAN -s $DBNAME
+
+/usr/share/mythtv/mythconverg_backup.pl
+
+/usr/bin/logger -p daemon.info -i -t${0##*/} "$DBNAME checked and backedup."
+
+# End of file.

=== added file 'debian/mythtv-database.dirs'
--- debian/mythtv-database.dirs	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.dirs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+usr/share/mythtv/sql
+

=== added file 'debian/mythtv-database.install'
--- debian/mythtv-database.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,6 @@
+#are added in (not part of make install)
+mythtv/database/*.sql usr/share/mythtv/sql
+
+#Come from debian/
+debian/mythtv.cnf etc/mysql/conf.d
+debian/*.sql usr/share/mythtv/sql

=== added file 'debian/mythtv-database.postinst'
--- debian/mythtv-database.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,162 @@
+#!/bin/sh -e
+MYSQL="/usr/share/mythtv/sql/mythtv*.sql"
+MYSQLCONFIG="/etc/mysql/conf.d/mythtv.cnf"
+FSTAB="/etc/fstab"
+NEWIP="127.0.0.1"
+LOCALHOSTNAME=`cat /etc/hostname`
+
+prepare_database() {
+
+    #Preload tables and default values
+    cat $MYSQL | sed -e "s/Terra/Mythbuntu/g; s/OLDHOSTNAME/$LOCALHOSTNAME/g; s/127.0.0.1/$NEWIP/g; s/blueosd/BlackCurves-OSD/g" |\
+        mysql $SECURITY_INFO $database
+
+    #Set up local IP and hostname
+    if ! echo "UPDATE settings SET data = '$NEWIP' WHERE settings.value = 'BackendServerIP' AND settings.hostname = '$LOCALHOSTNAME';" | \
+        mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        fail_database
+    fi
+
+    #Set up master IP and hostname
+    if ! echo "UPDATE settings SET data = '$NEWIP' WHERE settings.value = 'MasterServerIP';" | \
+        mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        fail_database
+    fi
+}
+
+#Used to fail at some point but not abort postinst
+fail_database() {
+    echo "Failed to create or modify database (incorrect admin username/password?)" >&2
+    echo "Try:" >&2
+    echo "sudo dpkg-reconfigure mythtv-database" >&2
+
+    db_set mythtv/mysql_admin_password ""
+    exit 0
+}
+
+#ask the root password a few times if it's still not working
+ask_root_pw() {
+    db_input high mythtv/mysql_host || true
+    db_input high mythtv/mysql_admin_user || true
+    db_input high mythtv/mysql_admin_password || true
+    db_go || true
+    db_get mythtv/mysql_host
+    hostname="$RET"
+    db_get mythtv/mysql_admin_user
+    admin_username="$RET"
+    db_get mythtv/mysql_admin_password
+    admin_password="$RET"
+    if [ "$admin_password" != "" ]; then
+        admin_password="-p$admin_password"
+    fi
+    SECURITY_INFO="--host=\"$hostname\" --user=\"$admin_username\" $admin_password"
+}
+
+update_database() {
+    #Set up privs for mythtv@localhost
+    if ! echo "GRANT ALL PRIVILEGES ON $database.* TO $mythtv_username@localhost IDENTIFIED BY '$mythtv_password';" | \
+        mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        fail_database
+    fi
+
+    #Set up privs for mythtv@network
+    if ! echo "GRANT ALL PRIVILEGES ON $database.* TO $mythtv_username@'%' IDENTIFIED BY '$mythtv_password';" | \
+        mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        fail_database
+    fi
+}
+
+case "$1" in
+    configure)
+    . /usr/share/debconf/confmodule
+
+    db_get mythtv/mysql_mythtv_dbname
+    database="$RET"
+
+    db_get mythtv/mysql_mythtv_user
+    mythtv_username="$RET"
+
+    db_get mythtv/mysql_mythtv_password
+    mythtv_password="$RET"
+
+    db_get mythtv/mysql_admin_user
+    admin_username="$RET"
+
+    if [ "$admin_username" = "debian-sys-maint" ]; then
+        SECURITY_INFO="--defaults-file=/etc/mysql/debian.cnf"
+    else
+        db_get mythtv/mysql_host
+        hostname="$RET"
+
+        db_get mythtv/mysql_admin_password
+        admin_password="$RET"
+
+        if [ "$admin_password" != "" ]; then
+            admin_password="-p$admin_password"
+        fi
+        SECURITY_INFO="--host=\"$hostname\" --user=\"$admin_username\" $admin_password"
+    fi
+    
+    #If we are running locally, make sure to start mysql first
+    #It's okay if it fails, we'll fall back cleanly later
+    if [ "$hostname" = "localhost" ]; then
+        #redirection of 3 is because of debconf internally using it.
+        if [ -x /usr/sbin/invoke-rc.d ]; then
+            invoke-rc.d mysql start 3> /dev/null || true
+        else
+            /etc/init.d/mysql start 3> /dev/null || true
+        fi
+    fi
+
+    #For database fillings
+    #and mysql binding checks
+    if [ -f "${MYSQLCONFIG}" ]; then
+        db_get mythtv/public_bind
+        if [ $RET = true ]; then
+            NEWIP=`ifconfig | grep "inet addr:" | grep --invert-match 127.0.0.1 | sed ' s/inet addr://g; s/^[ \t]*//;s/[ \t]*$//; q;' | awk '{print $1}'`
+            sed -i -e 's/^#bind/bind/' ${MYSQLCONFIG}
+        else
+            sed -i -e 's/^bind/#bind/' ${MYSQLCONFIG}
+        fi
+    fi
+
+    #Check for existing database
+    if ! echo "SELECT NULL;" | mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        #No existing database, create a database
+        i=1
+        while ! echo "CREATE DATABASE $database;" | mysql $SECURITY_INFO ; do
+#>/dev/null 2>&1; do
+            if [ $i -ge 5 ]; then
+                fail_database
+            fi
+            ask_root_pw
+            i=$(($i+1))
+        done
+    fi
+
+    #Preload tables
+    if ! echo "SELECT value FROM settings LIMIT 1, 1;" | mysql $SECURITY_INFO "$database" >/dev/null 2>&1; then
+        prepare_database
+    fi
+
+    #Update Permissions
+    update_database
+
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+    echo "postinst called with unknown argument \`$1'" >&2
+    db_set mythtv/mysql_admin_password ""
+    db_set mythtv/mysql_mythtv_password ""
+    exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+db_set mythtv/mysql_admin_password ""
+db_set mythtv/mysql_mythtv_password ""
+exit 0

=== added file 'debian/mythtv-database.templates'
--- debian/mythtv-database.templates	1970-01-01 00:00:00 +0000
+++ debian/mythtv-database.templates	2011-05-12 02:35:46 +0000
@@ -0,0 +1,30 @@
+Template: mythtv/mysql_admin_user
+Type: string
+Default: root
+_Description: MySQL administrator account:
+ This information will be used to create a database and user for MythTV.
+ .
+ Unless you have explicitly changed this on the MySQL server, and
+ understand MySQL's privilege system, use the default of 'root'.
+
+Template: mythtv/mysql_admin_password
+Type: password
+_Description: Password for the MySQL administrator account '${user}':
+ This information will be used to create a database and user for MythTV.
+ .
+ Unless you have explicitly changed the password on the MySQL server, leave
+ this blank.
+
+Template: mythtv/public_bind
+Type: boolean
+Default: false
+_Description: Will other computers run MythTV?
+ If any other computers (that includes other Front End machines) with MythTV
+ will be used, this computer needs to be configured to allow remote connections.
+ .
+ Note that this is a security risk, as both the MythTV and MySQL services
+ will be exposed. Be sure to place this machine behind a firewall.
+ .
+ If multiple interfaces are used, the first one listed in 'ifconfig' will be
+ used.
+

=== added file 'debian/mythtv-doc.docs'
--- debian/mythtv-doc.docs	1970-01-01 00:00:00 +0000
+++ debian/mythtv-doc.docs	2011-05-12 02:35:46 +0000
@@ -0,0 +1,6 @@
+mythtv/README
+mythtv/AUTHORS
+mythtv/FAQ
+mythtv/UPGRADING
+mythtv/keys.txt
+mythtv/docs/mythtv-HOWTO*

=== added file 'debian/mythtv-doc.examples'
--- debian/mythtv-doc.examples	1970-01-01 00:00:00 +0000
+++ debian/mythtv-doc.examples	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+contrib/config_files/*

=== added file 'debian/mythtv-frontend.config'
--- debian/mythtv-frontend.config	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.config	2011-05-12 02:35:46 +0000
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+# Do nothing, but keep this script here to avoid no-debconf-config lintian
+# errors
+
+exit 0

=== added file 'debian/mythtv-frontend.install'
--- debian/mythtv-frontend.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,14 @@
+#Come from make install
+usr/bin/mythfrontend.real
+usr/bin/mythlcdserver
+usr/bin/mythreplex
+usr/bin/mythavtest
+usr/bin/mythtvosd
+usr/bin/mythwelcome
+usr/lib/mythtv/filters
+usr/share/mythtv/i18n/mythfrontend_*
+
+#Stuff we add from debian/
+debian/mythtv.desktop usr/share/applications
+debian/mythfrontend.sh usr/share/mythtv
+debian/session-settings etc/mythtv

=== added file 'debian/mythtv-frontend.links'
--- debian/mythtv-frontend.links	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.links	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+usr/share/mythtv/mythfrontend.sh usr/bin/mythfrontend

=== added file 'debian/mythtv-frontend.logrotate'
--- debian/mythtv-frontend.logrotate	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.logrotate	2011-05-12 02:35:46 +0000
@@ -0,0 +1,18 @@
+/var/log/mythtv/mythfrontend.log {
+        daily
+	size=10M
+        rotate 7
+        notifempty
+        copytruncate
+	missingok
+}
+
+/var/log/mythtv/mythwelcome.log {
+        daily
+	size=10M
+        rotate 7
+        notifempty
+        copytruncate
+        missingok
+}
+

=== added file 'debian/mythtv-frontend.menu'
--- debian/mythtv-frontend.menu	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.menu	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+?package(mythtv-frontend):needs="X11" section="Applications/Graphics" \
+  title="MythTV" command="/usr/bin/mythfrontend"

=== added file 'debian/mythtv-frontend.postinst'
--- debian/mythtv-frontend.postinst	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.postinst	2011-05-12 02:35:46 +0000
@@ -0,0 +1,30 @@
+#!/bin/sh -e
+
+case "$1" in
+    configure)
+        . /usr/share/debconf/confmodule
+
+        # Unregister questions we used to ask
+        db_unregister mythtv/server_host || true
+        db_unregister mythtv/server_port || true
+
+        if ! dpkg-statoverride --list /var/log/mythtv >/dev/null; then
+            chown mythtv:mythtv /var/log/mythtv
+            chmod 2775 "/var/log/mythtv"
+        fi
+
+        ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0

=== added file 'debian/mythtv-frontend.templates'
--- debian/mythtv-frontend.templates	1970-01-01 00:00:00 +0000
+++ debian/mythtv-frontend.templates	2011-05-12 02:35:46 +0000
@@ -0,0 +1,9 @@
+Template: mythtv/server_host
+Type: string
+Default: localhost
+_Description: Hostname of the system where the MythTV backend is installed:
+
+Template: mythtv/server_port
+Type: string
+Default: 6543
+_Description: Port number the MythTV server is listening on:

=== added file 'debian/mythtv-setup.desktop'
--- debian/mythtv-setup.desktop	1970-01-01 00:00:00 +0000
+++ debian/mythtv-setup.desktop	2011-05-12 02:35:46 +0000
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=MythTV Backend Setup
+Comment=Used to configure a backend
+GenericName=mythtv-setup
+Exec=mythtv-setup
+Type=Application
+Encoding=UTF-8
+Icon=/usr/share/mythtv/themes/MythCenter-wide/ui/mythtv_logo.png
+Categories=GTK;System;Settings
+X-AppInstall-Package=mythtv

=== added file 'debian/mythtv-setup.sh'
--- debian/mythtv-setup.sh	1970-01-01 00:00:00 +0000
+++ debian/mythtv-setup.sh	2011-05-12 02:35:46 +0000
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Mario Limonciello, March 2007
+
+#source our dialog functions
+. /usr/share/mythtv/dialog_functions.sh
+
+#find the session, dialog and su manager we will be using for display
+find_session
+find_dialog
+find_su
+
+#check that we are in the mythtv group
+check_groups
+
+#create a symbolic link for mysql.txt so it can't be overwritten
+symlink
+
+#if group membership is okay, go ahead and continue
+if [ "$IGNORE_NOT" = "0" ]; then
+
+	dialog_question "MythTV Setup Preparation" "Mythbackend must be closed before continuing.\nIs it OK to close any currently running mythbackend processes?"
+	CLOSE_NOT=$?
+	if [ "$CLOSE_NOT" = "0" ]; then
+		if [ "$DE" = "kde" ]; then
+			$SU_TYPE stop mythtv-backend
+		else
+			$SU_TYPE stop mythtv-backend --message "Please enter your current login password to stop mythtv-backend."
+		fi
+		xterm -title "MythTV Setup Terminal" -e taskset -c 0 /usr/bin/mythtv-setup.real "$@"
+		if [ "$DE" = "kde" ]; then
+			$SU_TYPE start mythtv-backend
+		else
+			$SU_TYPE start mythtv-backend --message "Please enter your current login password to start mythtv-backend."
+		fi
+		dialog_question "Fill Database?" "Would you like to run mythfilldatabase?"
+		DATABASE_NOT=$?
+		if [ "$DATABASE_NOT" = "0" ]; then
+			xterm -title "Running mythfilldatabase" -e "unset DISPLAY && unset SESSION_MANAGER && mythfilldatabase; sleep 3"
+		fi
+	fi
+fi

=== added file 'debian/mythtv-theme-arclight.install'
--- debian/mythtv-theme-arclight.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-theme-arclight.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+myththemes/Arclight usr/share/mythtv/themes

=== added file 'debian/mythtv-theme-childish.install'
--- debian/mythtv-theme-childish.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-theme-childish.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+myththemes/Childish usr/share/mythtv/themes

=== added file 'debian/mythtv-theme-graphite.install'
--- debian/mythtv-theme-graphite.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-theme-graphite.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+myththemes/Graphite usr/share/mythtv/themes

=== added file 'debian/mythtv-theme-metallurgy.install'
--- debian/mythtv-theme-metallurgy.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-theme-metallurgy.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+myththemes/metallurgy usr/share/mythtv/themes

=== added file 'debian/mythtv-theme-mythbuntu.install'
--- debian/mythtv-theme-mythbuntu.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-theme-mythbuntu.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+myththemes/Mythbuntu usr/share/mythtv/themes

=== added file 'debian/mythtv-transcode-utils.install'
--- debian/mythtv-transcode-utils.install	1970-01-01 00:00:00 +0000
+++ debian/mythtv-transcode-utils.install	2011-05-12 02:35:46 +0000
@@ -0,0 +1,1 @@
+usr/bin/mythtranscode

=== added file 'debian/mythtv.cnf'
--- debian/mythtv.cnf	1970-01-01 00:00:00 +0000
+++ debian/mythtv.cnf	2011-05-12 02:35:46 +0000
@@ -0,0 +1,2 @@
+[mysqld]
+#bind-address=0.0.0.0

=== added file 'debian/mythtv.desktop'
--- debian/mythtv.desktop	1970-01-01 00:00:00 +0000
+++ debian/mythtv.desktop	2011-05-12 02:35:46 +0000
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=MythTV Frontend
+Comment=A frontend for all content on a mythtv-backend
+GenericName=MythTV Viewer
+Exec=mythfrontend --service
+Type=Application
+Encoding=UTF-8
+Icon=/usr/share/mythtv/themes/MythCenter-wide/ui/mythtv_logo.png
+Categories=GNOME;Application;AudioVideo;Audio;Video
+X-AppInstall-Package=mythtv

=== added file 'debian/mythtv.make'
--- debian/mythtv.make	1970-01-01 00:00:00 +0000
+++ debian/mythtv.make	2011-05-12 02:35:46 +0000
@@ -0,0 +1,174 @@
+#Custom debian/rules snippet used for building MythTV packages that come from MythTV's github location
+
+#Figure out what we're working with by parsing the project and debian changelog
+#To make sense of these sed rules that are used:
+#  Sample version string: 
+#                  Version: 1:0.25.0+master.20101129.a8acde8-0ubuntu1
+#  /Version/!d  -> only version line from dpkg-parsechangelog
+#  s/.*1:0.//   -> kill the epoch and Version bit and 0. leading the version
+#  s/-.*//      -> kill everything after and including the -
+#  s/+.*//      -> kill everything after and including the +
+#  s/.*+//      -> kill everything before and including the +
+
+GIT_MAJOR_RELEASE:=$(shell dpkg-parsechangelog | dpkg-parsechangelog | sed '/Version/!d; s/.*[0-9]:0.//; s/~.*//; s/+.*//' | awk -F. '{print $$1 }')
+GIT_MINOR_RELEASE:=$(shell dpkg-parsechangelog | dpkg-parsechangelog | sed '/Version/!d; s/.*[0-9]:0.//; s/~.*//; s/+.*//' | awk -F. '{print $$2 }')
+GIT_TYPE:=$(shell dpkg-parsechangelog | sed '/Version/!d; s/.*~//; s/.*+//; s/-.*//;' | awk -F. '{print $$1}')
+DATE:=$(shell dpkg-parsechangelog | sed '/Version/!d; s/.*~//; s/.*+//; s/-.*//;' | awk -F. '{print $$2}')
+GIT_HASH:=$(shell dpkg-parsechangelog | sed '/Version/!d; s/.*~//; s/.*+//; s/-.*//;' | awk -F. '{print $$3}')
+LAST_GIT_HASH:=$(shell dpkg-parsechangelog --offset 1 --count 1 | sed '/Version/!d; s/.*~//; s/.*+//; s/-.*//;' | awk -F. '{print $$3}')
+DEBIAN_SUFFIX:=$(shell dpkg-parsechangelog | sed '/Version/!d; s/.*-//;')
+THEMES=$(shell ls myththemes --full-time -l | grep '^d' | awk '{ print $$9 }' )
+AUTOBUILD=$(shell dpkg-parsechangelog | sed '/Version/!d' | grep mythbuntu)
+EPOCH:=$(shell dpkg-parsechangelog | sed '/Version/!d; s/.* //; s/:.*//;')
+
+TODAY=$(shell date +%Y%m%d)
+
+MAIN_GIT_URL=git://github.com/MythTV/mythtv.git
+MYTHWEB_GIT_URL=git://github.com/MythTV/mythweb.git
+MYTHTHEMES_GIT_URL=git://github.com/MythTV/myththemes.git
+
+ifeq "$(GIT_TYPE)" "master"
+        GIT_BRANCH:=master
+	GIT_BRANCH_FALLBACK=master
+	DELIMITTER="~"
+else
+        GIT_BRANCH:=fixes/0.$(GIT_MAJOR_RELEASE)
+	GIT_BRANCH_FALLBACK=fixes/0.$(GIT_MAJOR_RELEASE)
+	DELIMITTER="+"
+endif
+
+GIT_RELEASE=0.$(GIT_MAJOR_RELEASE).$(GIT_MINOR_RELEASE)
+SUFFIX+=$(GIT_TYPE).$(DATE).$(GIT_HASH)
+
+ABI:=$(shell awk  -F= '/^LIBVERSION/ { gsub(/[ \t]+/, ""); print $$2}' mythtv/settings.pro 2>/dev/null || echo 0.$(GIT_MAJOR_RELEASE))
+
+build-tarball:
+	#build the tarball
+	tar czf $(CURDIR)/../mythtv_$(GIT_RELEASE)$(DELIMITTER)$(SUFFIX).orig.tar.gz * --exclude .git --exclude .pc --exclude .bzr --exclude debian
+
+get-git-source:
+	#checkout mythtv/mythplugins
+	if [ -d .git ]; then \
+		git fetch ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+		git pull --rebase; \
+	else \
+		git clone $(MAIN_GIT_URL) tmp ;\
+		mv tmp/.git* tmp/* . ;\
+		rm -rf tmp ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+	fi
+
+	#checkout mythweb
+	if [ -d mythplugins/mythweb/.git ]; then \
+		cd mythplugins/mythweb; \
+		git fetch ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+		git pull --rebase ;\
+	else \
+		mkdir -p mythplugins/mythweb ;\
+		git clone $(MYTHWEB_GIT_URL) tmp ;\
+		mv tmp/.git* tmp/* mythplugins/mythweb ;\
+		rm -rf tmp ;\
+		cd mythplugins/mythweb ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+	fi
+
+	#checkout myththemes
+	if [ -d myththemes/.git ]; then \
+		cd myththemes; \
+		git fetch ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+		git pull --rebase ;\
+	else \
+		mkdir -p myththemes ;\
+		git clone $(MYTHTHEMES_GIT_URL) tmp ;\
+		mv tmp/.git* tmp/* myththemes ;\
+		rm -rf tmp ;\
+		cd myththemes ;\
+		git checkout $(GIT_BRANCH) || git checkout $(GIT_BRANCH_FALLBACK);\
+	fi
+
+	#fixup --version
+	DESCRIBE=`git describe` ;\
+	echo "BRANCH=\"$(GIT_BRANCH)\"" > debian/DESCRIBE ;\
+	echo "SOURCE_VERSION=\"$$DESCRIBE\"" >> debian/DESCRIBE ;\
+
+	#fixup changelog
+	#1) Check if the hash in the changelog (GIT_HASH) matches what the tree has
+	#   ->If not, then set the new HASH we are diffing to as the one from the tree
+	#     and the old HASH we are diffing from as the one from the changelog
+	#   ->If so , then set the current HASH to the one from the tree
+	#2) Check for autobuild.
+	#   ->If not, do nothing
+	#   ->If so,  then query the PPA for a revision number
+	#3) Check for an empty last git hash, and fill if empty
+
+	CURRENT_GIT_HASH=`git log -1 --oneline | awk '{ print $$1 }'` ;\
+	echo "Current hash: $$CURRENT_GIT_HASH" ;\
+	if [ "$(GIT_HASH)" != "$$CURRENT_GIT_HASH" ]; then \
+		GIT_HASH=$$CURRENT_GIT_HASH ;\
+		LAST_GIT_HASH=$(GIT_HASH) ;\
+		if [ -n "$(AUTOBUILD)" ]; then \
+			LAST_GIT_HASH=`python debian/PPA-published-git-checker.py 0.$(GIT_MAJOR_RELEASE)` ;\
+			AUTOBUILD="Automated Build: " ;\
+		fi ;\
+		dch -b -v $(EPOCH):$(GIT_RELEASE)$(DELIMITTER)$(GIT_TYPE).$(TODAY).$$GIT_HASH-$(DEBIAN_SUFFIX) "$${AUTOBUILD}New upstream checkout ($$GIT_HASH)";\
+	else \
+		GIT_HASH=$(GIT_HASH) ;\
+	fi ;\
+	[ -n "$$LAST_GIT_HASH" ] || LAST_GIT_HASH=$(LAST_GIT_HASH) ;\
+	if [ -n "$$LAST_GIT_HASH" ] && [ "$$GIT_HASH" != "$$LAST_GIT_HASH" ]; then \
+		echo "Appending upstream changes between $$LAST_GIT_HASH and $$GIT_HASH" ;\
+		dch -a ">>Upstream changes since last upload ($$LAST_GIT_HASH):" ;\
+		if [ -d .git ]; then \
+			git log --oneline $$LAST_GIT_HASH..$$GIT_HASH | sed 's,^,[,; s, ,] ,;' > .gitout ;\
+			while read line; do \
+				dch -a "$$line"; \
+			done < .gitout ;\
+			rm -f .gitout ;\
+		fi \
+	fi
+
+get-orig-source:
+	python debian/LP-get-orig-source.py $(GIT_RELEASE)$(DELIMITTER)$(SUFFIX) $(CURDIR)/../$(TARFILE)
+
+info:
+	echo    "--Upstream Project--\n" \
+		"ABI: $(ABI)\n" \
+		"--From CURRENT changelog entry in debian--\n" \
+		"Epoch: $(EPOCH)\n" \
+		"Type: $(GIT_TYPE)\n" \
+		"Major Release: $(GIT_MAJOR_RELEASE)\n" \
+		"Minor Release: $(GIT_MINOR_RELEASE)\n" \
+		"Total Release: $(GIT_RELEASE)\n" \
+		"Hash: $(GIT_HASH)\n" \
+                "Date: $(DATE)\n" \
+		"--Calculated Data--\n" \
+		"Branch: $(GIT_BRANCH)\n" \
+		"Suffix: $(SUFFIX)\n" \
+		"Tarfile: $(TARFILE)\n" \
+		"--Other info--\n" \
+                "OLD Hash: $(LAST_GIT_HASH)\n" \
+                "Current branch hash: $(CURRENT_GIT_HASH)\n" \
+                "Current date: $(TODAY)\n" \
+
+update-control-files:
+	rm -f debian/control debian/mythtv-theme*.install
+	if [ -n "$(THEMES)" ]; then \
+		sed s/#THEMES#/$(shell echo $(THEMES) | tr '[A-Z]' '[a-z]' | sed s/^/mythtv-theme-/ | sed s/\ /,\\\\\ mythtv-theme-/g)/ \
+		   debian/control.in > debian/control ;\
+	else \
+		sed 's/#THEMES#,//' debian/control.in > debian/control ;\
+	fi
+	sed -i s/#TYPE#/$(GIT_TYPE)/ debian/control
+	sed -i s/#ABI#/$(ABI)/ debian/control
+	cp debian/libmyth.install.in debian/libmyth-$(ABI)-0.install
+	$(foreach theme,$(THEMES),\
+	   echo "myththemes/$(theme) usr/share/mythtv/themes" > debian/mythtv-theme-$(shell echo $(theme) | tr '[A-Z]' '[a-z]').install; \
+	   cat debian/theme.stub | sed s/#THEME#/$(shell echo $(theme) | tr '[A-Z]' '[a-z]')/ >> debian/control; \
+ 	 )
+	if [ "$(GIT_TYPE)" = "master" ]; then \
+		sed -i debian/control -e 's/Recommends:\ mythtv-themes.*/Recommends:\ mythtv-themes, mythtv-dbg/' ;\
+	fi
+

=== added file 'debian/mythtv_0.24.0.sql'
--- debian/mythtv_0.24.0.sql	1970-01-01 00:00:00 +0000
+++ debian/mythtv_0.24.0.sql	2011-05-12 02:35:46 +0000
@@ -0,0 +1,3225 @@
+-- MySQL dump 10.13  Distrib 5.1.54, for debian-linux-gnu (i686)
+--
+-- Host: localhost    Database: mythconverg
+-- ------------------------------------------------------
+-- Server version	5.1.54-1ubuntu4
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `archiveitems`
+--
+
+DROP TABLE IF EXISTS `archiveitems`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `archiveitems` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `type` set('Recording','Video','File') CHARACTER SET latin1 DEFAULT NULL,
+  `title` varchar(128) DEFAULT NULL,
+  `subtitle` varchar(128) DEFAULT NULL,
+  `description` text,
+  `startdate` varchar(30) DEFAULT NULL,
+  `starttime` varchar(30) DEFAULT NULL,
+  `size` bigint(20) unsigned NOT NULL,
+  `filename` text NOT NULL,
+  `hascutlist` tinyint(1) NOT NULL DEFAULT '0',
+  `cutlist` text,
+  `duration` int(10) unsigned NOT NULL DEFAULT '0',
+  `cutduration` int(10) unsigned NOT NULL DEFAULT '0',
+  `videowidth` int(10) unsigned NOT NULL DEFAULT '0',
+  `videoheight` int(10) unsigned NOT NULL DEFAULT '0',
+  `filecodec` varchar(50) NOT NULL DEFAULT '',
+  `videocodec` varchar(50) NOT NULL DEFAULT '',
+  `encoderprofile` varchar(50) NOT NULL DEFAULT 'NONE',
+  PRIMARY KEY (`intid`),
+  KEY `title` (`title`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `archiveitems`
+--
+
+LOCK TABLES `archiveitems` WRITE;
+/*!40000 ALTER TABLE `archiveitems` DISABLE KEYS */;
+/*!40000 ALTER TABLE `archiveitems` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `callsignnetworkmap`
+--
+
+DROP TABLE IF EXISTS `callsignnetworkmap`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `callsignnetworkmap` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `network` varchar(20) NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `callsign` (`callsign`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `callsignnetworkmap`
+--
+
+LOCK TABLES `callsignnetworkmap` WRITE;
+/*!40000 ALTER TABLE `callsignnetworkmap` DISABLE KEYS */;
+/*!40000 ALTER TABLE `callsignnetworkmap` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `capturecard`
+--
+
+DROP TABLE IF EXISTS `capturecard`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `capturecard` (
+  `cardid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `videodevice` varchar(128) DEFAULT NULL,
+  `audiodevice` varchar(128) DEFAULT NULL,
+  `vbidevice` varchar(128) DEFAULT NULL,
+  `cardtype` varchar(32) DEFAULT 'V4L',
+  `defaultinput` varchar(32) DEFAULT 'Television',
+  `audioratelimit` int(11) DEFAULT NULL,
+  `hostname` varchar(64) DEFAULT NULL,
+  `dvb_swfilter` int(11) DEFAULT '0',
+  `dvb_sat_type` int(11) NOT NULL DEFAULT '0',
+  `dvb_wait_for_seqstart` int(11) NOT NULL DEFAULT '1',
+  `skipbtaudio` tinyint(1) DEFAULT '0',
+  `dvb_on_demand` tinyint(4) NOT NULL DEFAULT '0',
+  `dvb_diseqc_type` smallint(6) DEFAULT NULL,
+  `firewire_speed` int(10) unsigned NOT NULL DEFAULT '0',
+  `firewire_model` varchar(32) DEFAULT NULL,
+  `firewire_connection` int(10) unsigned NOT NULL DEFAULT '0',
+  `signal_timeout` int(11) NOT NULL DEFAULT '1000',
+  `channel_timeout` int(11) NOT NULL DEFAULT '3000',
+  `dvb_tuning_delay` int(10) unsigned NOT NULL DEFAULT '0',
+  `contrast` int(11) NOT NULL DEFAULT '0',
+  `brightness` int(11) NOT NULL DEFAULT '0',
+  `colour` int(11) NOT NULL DEFAULT '0',
+  `hue` int(11) NOT NULL DEFAULT '0',
+  `diseqcid` int(10) unsigned DEFAULT NULL,
+  `dvb_eitscan` tinyint(1) NOT NULL DEFAULT '1',
+  PRIMARY KEY (`cardid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `capturecard`
+--
+
+LOCK TABLES `capturecard` WRITE;
+/*!40000 ALTER TABLE `capturecard` DISABLE KEYS */;
+/*!40000 ALTER TABLE `capturecard` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `cardinput`
+--
+
+DROP TABLE IF EXISTS `cardinput`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `cardinput` (
+  `cardinputid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `cardid` int(10) unsigned NOT NULL DEFAULT '0',
+  `sourceid` int(10) unsigned NOT NULL DEFAULT '0',
+  `inputname` varchar(32) NOT NULL DEFAULT '',
+  `externalcommand` varchar(128) DEFAULT NULL,
+  `tunechan` varchar(10) DEFAULT NULL,
+  `startchan` varchar(10) DEFAULT NULL,
+  `displayname` varchar(64) NOT NULL DEFAULT '',
+  `dishnet_eit` tinyint(1) NOT NULL DEFAULT '0',
+  `recpriority` int(11) NOT NULL DEFAULT '0',
+  `quicktune` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`cardinputid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `cardinput`
+--
+
+LOCK TABLES `cardinput` WRITE;
+/*!40000 ALTER TABLE `cardinput` DISABLE KEYS */;
+/*!40000 ALTER TABLE `cardinput` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channel`
+--
+
+DROP TABLE IF EXISTS `channel`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channel` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `channum` varchar(10) NOT NULL DEFAULT '',
+  `freqid` varchar(10) DEFAULT NULL,
+  `sourceid` int(10) unsigned DEFAULT NULL,
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `name` varchar(64) NOT NULL DEFAULT '',
+  `icon` varchar(255) NOT NULL DEFAULT 'none',
+  `finetune` int(11) DEFAULT NULL,
+  `videofilters` varchar(255) NOT NULL DEFAULT '',
+  `xmltvid` varchar(64) NOT NULL DEFAULT '',
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `contrast` int(11) DEFAULT '32768',
+  `brightness` int(11) DEFAULT '32768',
+  `colour` int(11) DEFAULT '32768',
+  `hue` int(11) DEFAULT '32768',
+  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
+  `visible` tinyint(1) NOT NULL DEFAULT '1',
+  `outputfilters` varchar(255) NOT NULL DEFAULT '',
+  `useonairguide` tinyint(1) DEFAULT '0',
+  `mplexid` smallint(6) DEFAULT NULL,
+  `serviceid` mediumint(8) unsigned DEFAULT NULL,
+  `tmoffset` int(11) NOT NULL DEFAULT '0',
+  `atsc_major_chan` int(10) unsigned NOT NULL DEFAULT '0',
+  `atsc_minor_chan` int(10) unsigned NOT NULL DEFAULT '0',
+  `last_record` datetime NOT NULL,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  `commmethod` int(11) NOT NULL DEFAULT '-1',
+  PRIMARY KEY (`chanid`),
+  KEY `channel_src` (`channum`,`sourceid`),
+  KEY `sourceid` (`sourceid`,`xmltvid`,`chanid`),
+  KEY `visible` (`visible`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channel`
+--
+
+LOCK TABLES `channel` WRITE;
+/*!40000 ALTER TABLE `channel` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channel` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelgroup`
+--
+
+DROP TABLE IF EXISTS `channelgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelgroup` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `chanid` int(11) unsigned NOT NULL DEFAULT '0',
+  `grpid` int(11) NOT NULL DEFAULT '1',
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelgroup`
+--
+
+LOCK TABLES `channelgroup` WRITE;
+/*!40000 ALTER TABLE `channelgroup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelgroupnames`
+--
+
+DROP TABLE IF EXISTS `channelgroupnames`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelgroupnames` (
+  `grpid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(64) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`grpid`)
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelgroupnames`
+--
+
+LOCK TABLES `channelgroupnames` WRITE;
+/*!40000 ALTER TABLE `channelgroupnames` DISABLE KEYS */;
+INSERT INTO `channelgroupnames` VALUES (1,'Favorites');
+/*!40000 ALTER TABLE `channelgroupnames` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan`
+--
+
+DROP TABLE IF EXISTS `channelscan`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan` (
+  `scanid` int(3) unsigned NOT NULL AUTO_INCREMENT,
+  `cardid` int(3) unsigned NOT NULL,
+  `sourceid` int(3) unsigned NOT NULL,
+  `processed` tinyint(1) unsigned NOT NULL,
+  `scandate` datetime NOT NULL,
+  PRIMARY KEY (`scanid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan`
+--
+
+LOCK TABLES `channelscan` WRITE;
+/*!40000 ALTER TABLE `channelscan` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan_channel`
+--
+
+DROP TABLE IF EXISTS `channelscan_channel`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan_channel` (
+  `transportid` int(6) unsigned NOT NULL,
+  `scanid` int(3) unsigned NOT NULL,
+  `mplex_id` smallint(6) NOT NULL,
+  `source_id` int(3) unsigned NOT NULL,
+  `channel_id` int(3) unsigned NOT NULL DEFAULT '0',
+  `callsign` varchar(20) NOT NULL DEFAULT '',
+  `service_name` varchar(64) NOT NULL DEFAULT '',
+  `chan_num` varchar(10) NOT NULL DEFAULT '',
+  `service_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `atsc_major_channel` int(4) unsigned NOT NULL DEFAULT '0',
+  `atsc_minor_channel` int(4) unsigned NOT NULL DEFAULT '0',
+  `use_on_air_guide` tinyint(1) NOT NULL DEFAULT '0',
+  `hidden` tinyint(1) NOT NULL DEFAULT '0',
+  `hidden_in_guide` tinyint(1) NOT NULL DEFAULT '0',
+  `freqid` varchar(10) NOT NULL DEFAULT '',
+  `icon` varchar(255) NOT NULL DEFAULT '',
+  `tvformat` varchar(10) NOT NULL DEFAULT 'Default',
+  `xmltvid` varchar(64) NOT NULL DEFAULT '',
+  `pat_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `vct_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `vct_chan_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `sdt_tsid` int(5) unsigned NOT NULL DEFAULT '0',
+  `orig_netid` int(5) unsigned NOT NULL DEFAULT '0',
+  `netid` int(5) unsigned NOT NULL DEFAULT '0',
+  `si_standard` varchar(10) NOT NULL,
+  `in_channels_conf` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_pat` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_pmt` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_vct` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_nit` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `in_sdt` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_encrypted` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_data_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_audio_service` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `is_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `could_be_opencable` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `decryption_status` smallint(2) unsigned NOT NULL DEFAULT '0',
+  `default_authority` varchar(32) NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan_channel`
+--
+
+LOCK TABLES `channelscan_channel` WRITE;
+/*!40000 ALTER TABLE `channelscan_channel` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan_channel` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `channelscan_dtv_multiplex`
+--
+
+DROP TABLE IF EXISTS `channelscan_dtv_multiplex`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `channelscan_dtv_multiplex` (
+  `transportid` int(6) unsigned NOT NULL AUTO_INCREMENT,
+  `scanid` int(3) unsigned NOT NULL,
+  `mplexid` smallint(6) unsigned NOT NULL,
+  `frequency` bigint(12) unsigned NOT NULL,
+  `inversion` char(1) NOT NULL DEFAULT 'a',
+  `symbolrate` bigint(12) unsigned NOT NULL DEFAULT '0',
+  `fec` varchar(10) NOT NULL DEFAULT 'auto',
+  `polarity` char(1) NOT NULL DEFAULT '',
+  `hp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
+  `mod_sys` varchar(10) DEFAULT NULL,
+  `rolloff` varchar(4) DEFAULT NULL,
+  `lp_code_rate` varchar(10) NOT NULL DEFAULT 'auto',
+  `modulation` varchar(10) NOT NULL DEFAULT 'auto',
+  `transmission_mode` char(1) NOT NULL DEFAULT 'a',
+  `guard_interval` varchar(10) NOT NULL DEFAULT 'auto',
+  `hierarchy` varchar(10) NOT NULL DEFAULT 'auto',
+  `bandwidth` char(1) NOT NULL DEFAULT 'a',
+  `sistandard` varchar(10) NOT NULL,
+  `tuner_type` smallint(2) unsigned NOT NULL,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  PRIMARY KEY (`transportid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `channelscan_dtv_multiplex`
+--
+
+LOCK TABLES `channelscan_dtv_multiplex` WRITE;
+/*!40000 ALTER TABLE `channelscan_dtv_multiplex` DISABLE KEYS */;
+/*!40000 ALTER TABLE `channelscan_dtv_multiplex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `codecparams`
+--
+
+DROP TABLE IF EXISTS `codecparams`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `codecparams` (
+  `profile` int(10) unsigned NOT NULL DEFAULT '0',
+  `name` varchar(128) NOT NULL DEFAULT '',
+  `value` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`profile`,`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `codecparams`
+--
+
+LOCK TABLES `codecparams` WRITE;
+/*!40000 ALTER TABLE `codecparams` DISABLE KEYS */;
+/*!40000 ALTER TABLE `codecparams` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `credits`
+--
+
+DROP TABLE IF EXISTS `credits`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `credits` (
+  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') CHARACTER SET latin1 NOT NULL DEFAULT '',
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
+  KEY `person` (`person`,`role`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `credits`
+--
+
+LOCK TABLES `credits` WRITE;
+/*!40000 ALTER TABLE `credits` DISABLE KEYS */;
+/*!40000 ALTER TABLE `credits` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `customexample`
+--
+
+DROP TABLE IF EXISTS `customexample`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `customexample` (
+  `rulename` varchar(64) NOT NULL,
+  `fromclause` varchar(10000) NOT NULL DEFAULT '',
+  `whereclause` varchar(10000) NOT NULL DEFAULT '',
+  `search` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`rulename`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `customexample`
+--
+
+LOCK TABLES `customexample` WRITE;
+/*!40000 ALTER TABLE `customexample` DISABLE KEYS */;
+INSERT INTO `customexample` VALUES ('New Flix','','program.category_type = \'movie\' AND program.airdate >= \n     YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) \nAND program.stars > 0.5 ',1);
+/*!40000 ALTER TABLE `customexample` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `diseqc_config`
+--
+
+DROP TABLE IF EXISTS `diseqc_config`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `diseqc_config` (
+  `cardinputid` int(10) unsigned NOT NULL,
+  `diseqcid` int(10) unsigned NOT NULL,
+  `value` varchar(16) NOT NULL DEFAULT '',
+  KEY `id` (`cardinputid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `diseqc_config`
+--
+
+LOCK TABLES `diseqc_config` WRITE;
+/*!40000 ALTER TABLE `diseqc_config` DISABLE KEYS */;
+/*!40000 ALTER TABLE `diseqc_config` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `diseqc_tree`
+--
+
+DROP TABLE IF EXISTS `diseqc_tree`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `diseqc_tree` (
+  `diseqcid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `parentid` int(10) unsigned DEFAULT NULL,
+  `ordinal` tinyint(3) unsigned NOT NULL,
+  `type` varchar(16) NOT NULL DEFAULT '',
+  `subtype` varchar(16) NOT NULL DEFAULT '',
+  `description` varchar(32) NOT NULL DEFAULT '',
+  `switch_ports` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `rotor_hi_speed` float NOT NULL DEFAULT '0',
+  `rotor_lo_speed` float NOT NULL DEFAULT '0',
+  `rotor_positions` varchar(255) NOT NULL DEFAULT '',
+  `lnb_lof_switch` int(10) NOT NULL DEFAULT '0',
+  `lnb_lof_hi` int(10) NOT NULL DEFAULT '0',
+  `lnb_lof_lo` int(10) NOT NULL DEFAULT '0',
+  `cmd_repeat` int(11) NOT NULL DEFAULT '1',
+  `lnb_pol_inv` tinyint(4) NOT NULL DEFAULT '0',
+  `address` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`diseqcid`),
+  KEY `parentid` (`parentid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `diseqc_tree`
+--
+
+LOCK TABLES `diseqc_tree` WRITE;
+/*!40000 ALTER TABLE `diseqc_tree` DISABLE KEYS */;
+/*!40000 ALTER TABLE `diseqc_tree` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `displayprofilegroups`
+--
+
+DROP TABLE IF EXISTS `displayprofilegroups`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `displayprofilegroups` (
+  `name` varchar(128) NOT NULL,
+  `hostname` varchar(64) NOT NULL,
+  `profilegroupid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`name`,`hostname`),
+  UNIQUE KEY `profilegroupid` (`profilegroupid`)
+) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `displayprofilegroups`
+--
+
+LOCK TABLES `displayprofilegroups` WRITE;
+/*!40000 ALTER TABLE `displayprofilegroups` DISABLE KEYS */;
+INSERT INTO `displayprofilegroups` VALUES ('CPU++','OLDHOSTNAME',1),('CPU+','OLDHOSTNAME',2),('CPU--','OLDHOSTNAME',3),('High Quality','OLDHOSTNAME',4),('Normal','OLDHOSTNAME',5),('Slim','OLDHOSTNAME',6),('VDPAU High Quality','OLDHOSTNAME',7),('VDPAU Normal','OLDHOSTNAME',8),('VDPAU Slim','OLDHOSTNAME',9);
+/*!40000 ALTER TABLE `displayprofilegroups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `displayprofiles`
+--
+
+DROP TABLE IF EXISTS `displayprofiles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `displayprofiles` (
+  `profilegroupid` int(10) unsigned NOT NULL,
+  `profileid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `value` varchar(128) NOT NULL,
+  `data` varchar(255) NOT NULL DEFAULT '',
+  KEY `profilegroupid` (`profilegroupid`),
+  KEY `profileid` (`profileid`,`value`),
+  KEY `profileid_2` (`profileid`)
+) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `displayprofiles`
+--
+
+LOCK TABLES `displayprofiles` WRITE;
+/*!40000 ALTER TABLE `displayprofiles` DISABLE KEYS */;
+INSERT INTO `displayprofiles` VALUES (1,1,'pref_priority','1'),(1,1,'pref_cmp0','> 0 0'),(1,1,'pref_decoder','ffmpeg'),(1,1,'pref_max_cpus','1'),(1,1,'pref_videorenderer','xv-blit'),(1,1,'pref_osdrenderer','softblend'),(1,1,'pref_osdfade','1'),(1,1,'pref_deint0','bobdeint'),(1,1,'pref_deint1','linearblend'),(1,1,'pref_filters',''),(1,2,'pref_priority','2'),(1,2,'pref_cmp0','> 0 0'),(1,2,'pref_decoder','ffmpeg'),(1,2,'pref_max_cpus','1'),(1,2,'pref_videorenderer','quartz-blit'),(1,2,'pref_osdrenderer','softblend'),(1,2,'pref_osdfade','1'),(1,2,'pref_deint0','linearblend'),(1,2,'pref_deint1','linearblend'),(1,2,'pref_filters',''),(2,3,'pref_priority','1'),(2,3,'pref_cmp0','<= 720 576'),(2,3,'pref_cmp1','> 0 0'),(2,3,'pref_decoder','ffmpeg'),(2,3,'pref_max_cpus','1'),(2,3,'pref_videorenderer','xv-blit'),(2,3,'pref_osdrenderer','softblend'),(2,3,'pref_osdfade','1'),(2,3,'pref_deint0','bobdeint'),(2,3,'pref_deint1','linearblend'),(2,3,'pref_filters',''),(2,4,'pref_priority','2'),(2,4,'pref_cmp0','<= 1280 720'),(2,4,'pref_cmp1','> 720 576'),(2,4,'pref_decoder','xvmc'),(2,4,'pref_max_cpus','1'),(2,4,'pref_videorenderer','xvmc-blit'),(2,4,'pref_osdrenderer','opengl'),(2,4,'pref_osdfade','1'),(2,4,'pref_deint0','bobdeint'),(2,4,'pref_deint1','onefield'),(2,4,'pref_filters',''),(2,5,'pref_priority','3'),(2,5,'pref_cmp0','<= 1280 720'),(2,5,'pref_cmp1','> 720 576'),(2,5,'pref_decoder','libmpeg2'),(2,5,'pref_max_cpus','1'),(2,5,'pref_videorenderer','xv-blit'),(2,5,'pref_osdrenderer','softblend'),(2,5,'pref_osdfade','1'),(2,5,'pref_deint0','bobdeint'),(2,5,'pref_deint1','onefield'),(2,5,'pref_filters',''),(2,6,'pref_priority','4'),(2,6,'pref_cmp0','> 0 0'),(2,6,'pref_decoder','xvmc'),(2,6,'pref_max_cpus','1'),(2,6,'pref_videorenderer','xvmc-blit'),(2,6,'pref_osdrenderer','ia44blend'),(2,6,'pref_osdfade','0'),(2,6,'pref_deint0','bobdeint'),(2,6,'pref_deint1','onefield'),(2,6,'pref_filters',''),(2,7,'pref_priority','5'),(2,7,'pref_cmp0','> 0 0'),(2,7,'pref_decoder','libmpeg2'),(2,7,'pref_max_cpus','1'),(2,7,'pref_videorenderer','xv-blit'),(2,7,'pref_osdrenderer','chromakey'),(2,7,'pref_osdfade','0'),(2,7,'pref_deint0','bobdeint'),(2,7,'pref_deint1','onefield'),(2,7,'pref_filters',''),(3,8,'pref_priority','1'),(3,8,'pref_cmp0','<= 720 576'),(3,8,'pref_cmp1','> 0 0'),(3,8,'pref_decoder','ivtv'),(3,8,'pref_max_cpus','1'),(3,8,'pref_videorenderer','ivtv'),(3,8,'pref_osdrenderer','ivtv'),(3,8,'pref_osdfade','1'),(3,8,'pref_deint0','none'),(3,8,'pref_deint1','none'),(3,8,'pref_filters',''),(3,9,'pref_priority','2'),(3,9,'pref_cmp0','<= 720 576'),(3,9,'pref_cmp1','> 0 0'),(3,9,'pref_decoder','xvmc'),(3,9,'pref_max_cpus','1'),(3,9,'pref_videorenderer','xvmc-blit'),(3,9,'pref_osdrenderer','ia44blend'),(3,9,'pref_osdfade','0'),(3,9,'pref_deint0','bobdeint'),(3,9,'pref_deint1','onefield'),(3,9,'pref_filters',''),(3,10,'pref_priority','3'),(3,10,'pref_cmp0','<= 1280 720'),(3,10,'pref_cmp1','> 720 576'),(3,10,'pref_decoder','xvmc'),(3,10,'pref_max_cpus','1'),(3,10,'pref_videorenderer','xvmc-blit'),(3,10,'pref_osdrenderer','ia44blend'),(3,10,'pref_osdfade','0'),(3,10,'pref_deint0','bobdeint'),(3,10,'pref_deint1','onefield'),(3,10,'pref_filters',''),(3,11,'pref_priority','4'),(3,11,'pref_cmp0','> 0 0'),(3,11,'pref_decoder','xvmc'),(3,11,'pref_max_cpus','1'),(3,11,'pref_videorenderer','xvmc-blit'),(3,11,'pref_osdrenderer','ia44blend'),(3,11,'pref_osdfade','0'),(3,11,'pref_deint0','bobdeint'),(3,11,'pref_deint1','onefield'),(3,11,'pref_filters',''),(3,12,'pref_priority','5'),(3,12,'pref_cmp0','> 0 0'),(3,12,'pref_decoder','libmpeg2'),(3,12,'pref_max_cpus','1'),(3,12,'pref_videorenderer','xv-blit'),(3,12,'pref_osdrenderer','chromakey'),(3,12,'pref_osdfade','0'),(3,12,'pref_deint0','none'),(3,12,'pref_deint1','none'),(3,12,'pref_filters',''),(4,13,'pref_priority','1'),(4,13,'pref_cmp0','>= 1920 1080'),(4,13,'pref_decoder','ffmpeg'),(4,13,'pref_max_cpus','2'),(4,13,'pref_videorenderer','xv-blit'),(4,13,'pref_osdrenderer','softblend'),(4,13,'pref_osdfade','1'),(4,13,'pref_deint0','linearblend'),(4,13,'pref_deint1','linearblend'),(4,13,'pref_filters',''),(4,14,'pref_priority','2'),(4,14,'pref_cmp0','> 0 0'),(4,14,'pref_decoder','ffmpeg'),(4,14,'pref_max_cpus','1'),(4,14,'pref_videorenderer','xv-blit'),(4,14,'pref_osdrenderer','softblend'),(4,14,'pref_osdfade','1'),(4,14,'pref_deint0','yadifdoubleprocessdeint'),(4,14,'pref_deint1','yadifdeint'),(4,14,'pref_filters',''),(4,15,'pref_priority','3'),(4,15,'pref_cmp0','>= 1920 1080'),(4,15,'pref_decoder','ffmpeg'),(4,15,'pref_max_cpus','2'),(4,15,'pref_videorenderer','quartz-blit'),(4,15,'pref_osdrenderer','softblend'),(4,15,'pref_osdfade','1'),(4,15,'pref_deint0','linearblend'),(4,15,'pref_deint1','linearblend'),(4,15,'pref_filters',''),(4,16,'pref_priority','4'),(4,16,'pref_cmp0','> 0 0'),(4,16,'pref_decoder','ffmpeg'),(4,16,'pref_max_cpus','1'),(4,16,'pref_videorenderer','quartz-blit'),(4,16,'pref_osdrenderer','softblend'),(4,16,'pref_osdfade','1'),(4,16,'pref_deint0','yadifdoubleprocessdeint'),(4,16,'pref_deint1','yadifdeint'),(4,16,'pref_filters',''),(5,17,'pref_priority','1'),(5,17,'pref_cmp0','>= 1280 720'),(5,17,'pref_decoder','ffmpeg'),(5,17,'pref_max_cpus','1'),(5,17,'pref_videorenderer','xv-blit'),(5,17,'pref_osdrenderer','softblend'),(5,17,'pref_osdfade','0'),(5,17,'pref_deint0','linearblend'),(5,17,'pref_deint1','linearblend'),(5,17,'pref_filters',''),(5,18,'pref_priority','2'),(5,18,'pref_cmp0','> 0 0'),(5,18,'pref_decoder','ffmpeg'),(5,18,'pref_max_cpus','1'),(5,18,'pref_videorenderer','xv-blit'),(5,18,'pref_osdrenderer','softblend'),(5,18,'pref_osdfade','1'),(5,18,'pref_deint0','greedyhdoubleprocessdeint'),(5,18,'pref_deint1','kerneldeint'),(5,18,'pref_filters',''),(5,19,'pref_priority','3'),(5,19,'pref_cmp0','>= 1280 720'),(5,19,'pref_decoder','ffmpeg'),(5,19,'pref_max_cpus','1'),(5,19,'pref_videorenderer','quartz-blit'),(5,19,'pref_osdrenderer','softblend'),(5,19,'pref_osdfade','0'),(5,19,'pref_deint0','linearblend'),(5,19,'pref_deint1','linearblend'),(5,19,'pref_filters',''),(5,20,'pref_priority','4'),(5,20,'pref_cmp0','> 0 0'),(5,20,'pref_decoder','ffmpeg'),(5,20,'pref_max_cpus','1'),(5,20,'pref_videorenderer','quartz-blit'),(5,20,'pref_osdrenderer','softblend'),(5,20,'pref_osdfade','1'),(5,20,'pref_deint0','greedyhdoubleprocessdeint'),(5,20,'pref_deint1','kerneldeint'),(5,20,'pref_filters',''),(6,21,'pref_priority','1'),(6,21,'pref_cmp0','>= 1280 720'),(6,21,'pref_decoder','ffmpeg'),(6,21,'pref_max_cpus','1'),(6,21,'pref_videorenderer','xv-blit'),(6,21,'pref_osdrenderer','softblend'),(6,21,'pref_osdfade','0'),(6,21,'pref_deint0','onefield'),(6,21,'pref_deint1','onefield'),(6,21,'pref_filters',''),(6,22,'pref_priority','2'),(6,22,'pref_cmp0','> 0 0'),(6,22,'pref_decoder','ffmpeg'),(6,22,'pref_max_cpus','1'),(6,22,'pref_videorenderer','xv-blit'),(6,22,'pref_osdrenderer','softblend'),(6,22,'pref_osdfade','1'),(6,22,'pref_deint0','linearblend'),(6,22,'pref_deint1','linearblend'),(6,22,'pref_filters',''),(6,23,'pref_priority','3'),(6,23,'pref_cmp0','>= 1280 720'),(6,23,'pref_decoder','ffmpeg'),(6,23,'pref_max_cpus','1'),(6,23,'pref_videorenderer','quartz-blit'),(6,23,'pref_osdrenderer','softblend'),(6,23,'pref_osdfade','0'),(6,23,'pref_deint0','onefield'),(6,23,'pref_deint1','onefield'),(6,23,'pref_filters',''),(6,24,'pref_priority','4'),(6,24,'pref_cmp0','> 0 0'),(6,24,'pref_decoder','ffmpeg'),(6,24,'pref_max_cpus','1'),(6,24,'pref_videorenderer','quartz-blit'),(6,24,'pref_osdrenderer','softblend'),(6,24,'pref_osdfade','1'),(6,24,'pref_deint0','linearblend'),(6,24,'pref_deint1','linearblend'),(6,24,'pref_filters',''),(7,25,'pref_priority','1'),(7,25,'pref_cmp0','> 0 0'),(7,25,'pref_decoder','vdpau'),(7,25,'pref_max_cpus','1'),(7,25,'pref_videorenderer','vdpau'),(7,25,'pref_osdrenderer','vdpau'),(7,25,'pref_osdfade','1'),(7,25,'pref_deint0','vdpauadvanceddoublerate'),(7,25,'pref_deint1','vdpauadvanced'),(7,25,'pref_filters',''),(8,26,'pref_priority','1'),(8,26,'pref_cmp0','>= 0 720'),(8,26,'pref_decoder','vdpau'),(8,26,'pref_max_cpus','1'),(8,26,'pref_videorenderer','vdpau'),(8,26,'pref_osdrenderer','vdpau'),(8,26,'pref_osdfade','1'),(8,26,'pref_deint0','vdpaubasicdoublerate'),(8,26,'pref_deint1','vdpaubasic'),(8,26,'pref_filters',''),(8,27,'pref_priority','2'),(8,27,'pref_cmp0','> 0 0'),(8,27,'pref_decoder','vdpau'),(8,27,'pref_max_cpus','1'),(8,27,'pref_videorenderer','vdpau'),(8,27,'pref_osdrenderer','vdpau'),(8,27,'pref_osdfade','1'),(8,27,'pref_deint0','vdpauadvanceddoublerate'),(8,27,'pref_deint1','vdpauadvanced'),(8,27,'pref_filters',''),(9,28,'pref_priority','1'),(9,28,'pref_cmp0','> 0 0'),(9,28,'pref_decoder','vdpau'),(9,28,'pref_max_cpus','1'),(9,28,'pref_videorenderer','vdpau'),(9,28,'pref_osdrenderer','vdpau'),(9,28,'pref_osdfade','0'),(9,28,'pref_deint0','vdpaubobdeint'),(9,28,'pref_deint1','vdpauonefield'),(9,28,'pref_filters','vdpauskipchroma');
+/*!40000 ALTER TABLE `displayprofiles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dtv_multiplex`
+--
+
+DROP TABLE IF EXISTS `dtv_multiplex`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dtv_multiplex` (
+  `mplexid` smallint(6) NOT NULL AUTO_INCREMENT,
+  `sourceid` smallint(6) DEFAULT NULL,
+  `transportid` int(11) DEFAULT NULL,
+  `networkid` int(11) DEFAULT NULL,
+  `frequency` int(11) DEFAULT NULL,
+  `inversion` char(1) DEFAULT 'a',
+  `symbolrate` int(11) DEFAULT NULL,
+  `fec` varchar(10) DEFAULT 'auto',
+  `polarity` char(1) DEFAULT NULL,
+  `modulation` varchar(10) DEFAULT 'auto',
+  `bandwidth` char(1) DEFAULT 'a',
+  `lp_code_rate` varchar(10) DEFAULT 'auto',
+  `transmission_mode` char(1) DEFAULT 'a',
+  `guard_interval` varchar(10) DEFAULT 'auto',
+  `visible` smallint(1) NOT NULL DEFAULT '0',
+  `constellation` varchar(10) DEFAULT 'auto',
+  `hierarchy` varchar(10) DEFAULT 'auto',
+  `hp_code_rate` varchar(10) DEFAULT 'auto',
+  `mod_sys` varchar(10) DEFAULT NULL,
+  `rolloff` varchar(4) DEFAULT NULL,
+  `sistandard` varchar(10) DEFAULT 'dvb',
+  `serviceversion` smallint(6) DEFAULT '33',
+  `updatetimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `default_authority` varchar(32) NOT NULL DEFAULT '',
+  PRIMARY KEY (`mplexid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dtv_multiplex`
+--
+
+LOCK TABLES `dtv_multiplex` WRITE;
+/*!40000 ALTER TABLE `dtv_multiplex` DISABLE KEYS */;
+/*!40000 ALTER TABLE `dtv_multiplex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dtv_privatetypes`
+--
+
+DROP TABLE IF EXISTS `dtv_privatetypes`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dtv_privatetypes` (
+  `sitype` varchar(4) NOT NULL DEFAULT '',
+  `networkid` int(11) NOT NULL DEFAULT '0',
+  `private_type` varchar(20) NOT NULL DEFAULT '',
+  `private_value` varchar(100) NOT NULL DEFAULT ''
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dtv_privatetypes`
+--
+
+LOCK TABLES `dtv_privatetypes` WRITE;
+/*!40000 ALTER TABLE `dtv_privatetypes` DISABLE KEYS */;
+INSERT INTO `dtv_privatetypes` VALUES ('dvb',9018,'channel_numbers','131'),('dvb',9018,'guide_fixup','2'),('dvb',256,'guide_fixup','1'),('dvb',257,'guide_fixup','1'),('dvb',256,'tv_types','1,150,134,133'),('dvb',257,'tv_types','1,150,134,133'),('dvb',4100,'sdt_mapping','1'),('dvb',4101,'sdt_mapping','1'),('dvb',4102,'sdt_mapping','1'),('dvb',4103,'sdt_mapping','1'),('dvb',4104,'sdt_mapping','1'),('dvb',4105,'sdt_mapping','1'),('dvb',4106,'sdt_mapping','1'),('dvb',4107,'sdt_mapping','1'),('dvb',4097,'sdt_mapping','1'),('dvb',4098,'sdt_mapping','1'),('dvb',4100,'tv_types','1,145,154'),('dvb',4101,'tv_types','1,145,154'),('dvb',4102,'tv_types','1,145,154'),('dvb',4103,'tv_types','1,145,154'),('dvb',4104,'tv_types','1,145,154'),('dvb',4105,'tv_types','1,145,154'),('dvb',4106,'tv_types','1,145,154'),('dvb',4107,'tv_types','1,145,154'),('dvb',4097,'tv_types','1,145,154'),('dvb',4098,'tv_types','1,145,154'),('dvb',4100,'guide_fixup','1'),('dvb',4101,'guide_fixup','1'),('dvb',4102,'guide_fixup','1'),('dvb',4103,'guide_fixup','1'),('dvb',4104,'guide_fixup','1'),('dvb',4105,'guide_fixup','1'),('dvb',4106,'guide_fixup','1'),('dvb',4107,'guide_fixup','1'),('dvb',4096,'guide_fixup','5'),('dvb',4097,'guide_fixup','1'),('dvb',4098,'guide_fixup','1'),('dvb',94,'tv_types','1,128'),('atsc',1793,'guide_fixup','3'),('dvb',40999,'guide_fixup','4'),('dvb',70,'force_guide_present','yes'),('dvb',70,'guide_ranges','80,80,96,96'),('dvb',4112,'channel_numbers','131'),('dvb',4115,'channel_numbers','131'),('dvb',4116,'channel_numbers','131'),('dvb',12802,'channel_numbers','131'),('dvb',12803,'channel_numbers','131'),('dvb',12829,'channel_numbers','131'),('dvb',40999,'parse_subtitle_list','1070,1308,1041,1306,1307,1030,1016,1131,1068,1069'),('dvb',4096,'guide_fixup','5');
+/*!40000 ALTER TABLE `dtv_privatetypes` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdbookmark`
+--
+
+DROP TABLE IF EXISTS `dvdbookmark`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdbookmark` (
+  `serialid` varchar(16) NOT NULL DEFAULT '',
+  `name` varchar(32) DEFAULT NULL,
+  `title` smallint(6) NOT NULL DEFAULT '0',
+  `audionum` tinyint(4) NOT NULL DEFAULT '-1',
+  `subtitlenum` tinyint(4) NOT NULL DEFAULT '-1',
+  `framenum` bigint(20) NOT NULL DEFAULT '0',
+  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`serialid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdbookmark`
+--
+
+LOCK TABLES `dvdbookmark` WRITE;
+/*!40000 ALTER TABLE `dvdbookmark` DISABLE KEYS */;
+/*!40000 ALTER TABLE `dvdbookmark` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdinput`
+--
+
+DROP TABLE IF EXISTS `dvdinput`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdinput` (
+  `intid` int(10) unsigned NOT NULL,
+  `hsize` int(10) unsigned DEFAULT NULL,
+  `vsize` int(10) unsigned DEFAULT NULL,
+  `ar_num` int(10) unsigned DEFAULT NULL,
+  `ar_denom` int(10) unsigned DEFAULT NULL,
+  `fr_code` int(10) unsigned DEFAULT NULL,
+  `letterbox` tinyint(1) DEFAULT NULL,
+  `v_format` varchar(16) DEFAULT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdinput`
+--
+
+LOCK TABLES `dvdinput` WRITE;
+/*!40000 ALTER TABLE `dvdinput` DISABLE KEYS */;
+INSERT INTO `dvdinput` VALUES (1,720,480,16,9,1,1,'ntsc'),(2,720,480,16,9,1,0,'ntsc'),(3,720,480,4,3,1,1,'ntsc'),(4,720,480,4,3,1,0,'ntsc'),(5,720,576,16,9,3,1,'pal'),(6,720,576,16,9,3,0,'pal'),(7,720,576,4,3,3,1,'pal'),(8,720,576,4,3,3,0,'pal');
+/*!40000 ALTER TABLE `dvdinput` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `dvdtranscode`
+--
+
+DROP TABLE IF EXISTS `dvdtranscode`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `dvdtranscode` (
+  `intid` int(11) NOT NULL AUTO_INCREMENT,
+  `input` int(10) unsigned DEFAULT NULL,
+  `name` varchar(128) NOT NULL,
+  `sync_mode` int(10) unsigned DEFAULT NULL,
+  `use_yv12` tinyint(1) DEFAULT NULL,
+  `cliptop` int(11) DEFAULT NULL,
+  `clipbottom` int(11) DEFAULT NULL,
+  `clipleft` int(11) DEFAULT NULL,
+  `clipright` int(11) DEFAULT NULL,
+  `f_resize_h` int(11) DEFAULT NULL,
+  `f_resize_w` int(11) DEFAULT NULL,
+  `hq_resize_h` int(11) DEFAULT NULL,
+  `hq_resize_w` int(11) DEFAULT NULL,
+  `grow_h` int(11) DEFAULT NULL,
+  `grow_w` int(11) DEFAULT NULL,
+  `clip2top` int(11) DEFAULT NULL,
+  `clip2bottom` int(11) DEFAULT NULL,
+  `clip2left` int(11) DEFAULT NULL,
+  `clip2right` int(11) DEFAULT NULL,
+  `codec` varchar(128) NOT NULL,
+  `codec_param` varchar(128) DEFAULT NULL,
+  `bitrate` int(11) DEFAULT NULL,
+  `a_sample_r` int(11) DEFAULT NULL,
+  `a_bitrate` int(11) DEFAULT NULL,
+  `two_pass` tinyint(1) DEFAULT NULL,
+  `tc_param` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `dvdtranscode`
+--
+
+LOCK TABLES `dvdtranscode` WRITE;
+/*!40000 ALTER TABLE `dvdtranscode` DISABLE KEYS */;
+INSERT INTO `dvdtranscode` VALUES (1,1,'Good',2,1,16,16,0,0,2,0,0,0,0,0,32,32,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(2,2,'Excellent',2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(3,2,'Good',2,1,0,0,8,8,0,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(4,2,'Medium',2,1,0,0,8,8,5,5,0,0,0,0,0,0,0,0,'divx5',NULL,1200,NULL,NULL,0,NULL),(5,3,'Good',2,1,0,0,0,0,0,0,0,0,2,0,80,80,8,8,'divx5',NULL,0,NULL,NULL,0,NULL),(6,4,'Excellent',2,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,'divx5',NULL,0,NULL,NULL,1,NULL),(7,4,'Good',2,1,0,0,8,8,0,2,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(8,5,'Good',1,1,16,16,0,0,5,0,0,0,0,0,40,40,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(9,6,'Good',1,1,0,0,16,16,5,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL),(10,7,'Good',1,1,0,0,0,0,1,0,0,0,0,0,76,76,8,8,'divx5',NULL,1618,NULL,NULL,0,NULL),(11,8,'Good',1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,'divx5',NULL,1618,NULL,NULL,0,NULL);
+/*!40000 ALTER TABLE `dvdtranscode` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `eit_cache`
+--
+
+DROP TABLE IF EXISTS `eit_cache`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `eit_cache` (
+  `chanid` int(10) NOT NULL,
+  `eventid` int(10) unsigned NOT NULL DEFAULT '0',
+  `tableid` tinyint(3) unsigned NOT NULL,
+  `version` tinyint(3) unsigned NOT NULL,
+  `endtime` int(10) unsigned NOT NULL,
+  `status` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`chanid`,`eventid`,`status`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `eit_cache`
+--
+
+LOCK TABLES `eit_cache` WRITE;
+/*!40000 ALTER TABLE `eit_cache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `eit_cache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `filemarkup`
+--
+
+DROP TABLE IF EXISTS `filemarkup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `filemarkup` (
+  `filename` text NOT NULL,
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `offset` bigint(20) unsigned DEFAULT NULL,
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  KEY `filename` (`filename`(255))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `filemarkup`
+--
+
+LOCK TABLES `filemarkup` WRITE;
+/*!40000 ALTER TABLE `filemarkup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `filemarkup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `gallerymetadata`
+--
+
+DROP TABLE IF EXISTS `gallerymetadata`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `gallerymetadata` (
+  `image` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `angle` int(11) NOT NULL,
+  PRIMARY KEY (`image`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `gallerymetadata`
+--
+
+LOCK TABLES `gallerymetadata` WRITE;
+/*!40000 ALTER TABLE `gallerymetadata` DISABLE KEYS */;
+/*!40000 ALTER TABLE `gallerymetadata` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `gamemetadata`
+--
+
+DROP TABLE IF EXISTS `gamemetadata`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `gamemetadata` (
+  `system` varchar(128) NOT NULL DEFAULT '',
+  `romname` varchar(128) NOT NULL DEFAULT '',
+  `gamename` varchar(128) NOT NULL DEFAULT '',
+  `genre` varchar(128) NOT NULL DEFAULT '',
+  `year` varchar(10) NOT NULL DEFAULT '',
+  `publisher` varchar(128) NOT NULL DEFAULT '',
+  `favorite` tinyint(1) DEFAULT NULL,
+  `rompath` varchar(255) NOT NULL DEFAULT '',
+  `screenshot` varchar(255) NOT NULL,
+  `fanart` varchar(255) NOT NULL,
+  `plot` text NOT NULL,
+  `boxart` varchar(255) NOT NULL,
+  `gametype` varchar(64) NOT NULL DEFAULT '',
+  `diskcount` tinyint(1) NOT NULL DEFAULT '1',
+  `country` varchar(128) NOT NULL DEFAULT '',
+  `crc_value` varchar(64) NOT NULL DEFAULT '',
+  `display` tinyint(1) NOT NULL DEFAULT '1',
+  `version` varchar(64) NOT NULL DEFAULT '',
+  KEY `system` (`system`),
+  KEY `year` (`year`),
+  KEY `romname` (`romname`),
+  KEY `gamename` (`gamename`),
+  KEY `genre` (`genre`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `gamemetadata`
+--
+
+LOCK TABLES `gamemetadata` WRITE;
+/*!40000 ALTER TABLE `gamemetadata` DISABLE KEYS */;
+/*!40000 ALTER TABLE `gamemetadata` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `gameplayers`
+--
+
+DROP TABLE IF EXISTS `gameplayers`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `gameplayers` (
+  `gameplayerid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `playername` varchar(64) NOT NULL DEFAULT '',
+  `workingpath` varchar(255) NOT NULL DEFAULT '',
+  `rompath` varchar(255) NOT NULL DEFAULT '',
+  `screenshots` varchar(255) NOT NULL DEFAULT '',
+  `commandline` text NOT NULL,
+  `gametype` varchar(64) NOT NULL DEFAULT '',
+  `extensions` varchar(128) NOT NULL DEFAULT '',
+  `spandisks` tinyint(1) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`gameplayerid`),
+  UNIQUE KEY `playername` (`playername`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `gameplayers`
+--
+
+LOCK TABLES `gameplayers` WRITE;
+/*!40000 ALTER TABLE `gameplayers` DISABLE KEYS */;
+/*!40000 ALTER TABLE `gameplayers` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `housekeeping`
+--
+
+DROP TABLE IF EXISTS `housekeeping`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `housekeeping` (
+  `tag` varchar(64) NOT NULL DEFAULT '',
+  `lastrun` datetime DEFAULT NULL,
+  PRIMARY KEY (`tag`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `housekeeping`
+--
+
+LOCK TABLES `housekeeping` WRITE;
+/*!40000 ALTER TABLE `housekeeping` DISABLE KEYS */;
+INSERT INTO `housekeeping` VALUES ('DailyCleanup','2010-02-17 23:45:39'),('JobQueueRecover-OLDHOSTNAME','2010-02-17 23:45:39'),('BackupDB','2011-03-01 22:57:01'),('DBCleanup','2009-09-20 01:56:39');
+/*!40000 ALTER TABLE `housekeeping` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `inputgroup`
+--
+
+DROP TABLE IF EXISTS `inputgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `inputgroup` (
+  `cardinputid` int(10) unsigned NOT NULL,
+  `inputgroupid` int(10) unsigned NOT NULL,
+  `inputgroupname` varchar(32) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `inputgroup`
+--
+
+LOCK TABLES `inputgroup` WRITE;
+/*!40000 ALTER TABLE `inputgroup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `inputgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `internetcontent`
+--
+
+DROP TABLE IF EXISTS `internetcontent`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `internetcontent` (
+  `name` varchar(255) NOT NULL,
+  `thumbnail` varchar(255) DEFAULT NULL,
+  `type` smallint(3) NOT NULL,
+  `author` varchar(128) NOT NULL,
+  `description` text NOT NULL,
+  `commandline` text NOT NULL,
+  `version` double NOT NULL,
+  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `search` tinyint(1) NOT NULL,
+  `tree` tinyint(1) NOT NULL,
+  `podcast` tinyint(1) NOT NULL,
+  `download` tinyint(1) NOT NULL,
+  `host` varchar(128) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `internetcontent`
+--
+
+LOCK TABLES `internetcontent` WRITE;
+/*!40000 ALTER TABLE `internetcontent` DISABLE KEYS */;
+/*!40000 ALTER TABLE `internetcontent` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `internetcontentarticles`
+--
+
+DROP TABLE IF EXISTS `internetcontentarticles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `internetcontentarticles` (
+  `feedtitle` varchar(255) NOT NULL,
+  `path` text NOT NULL,
+  `paththumb` text NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `subtitle` varchar(255) NOT NULL,
+  `season` smallint(5) NOT NULL DEFAULT '0',
+  `episode` smallint(5) NOT NULL DEFAULT '0',
+  `description` text NOT NULL,
+  `url` text NOT NULL,
+  `type` smallint(3) NOT NULL,
+  `thumbnail` text NOT NULL,
+  `mediaURL` text NOT NULL,
+  `author` varchar(255) NOT NULL,
+  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `time` int(11) NOT NULL,
+  `rating` varchar(255) NOT NULL,
+  `filesize` bigint(20) NOT NULL,
+  `player` varchar(255) NOT NULL,
+  `playerargs` text NOT NULL,
+  `download` varchar(255) NOT NULL,
+  `downloadargs` text NOT NULL,
+  `width` smallint(6) NOT NULL,
+  `height` smallint(6) NOT NULL,
+  `language` varchar(128) NOT NULL,
+  `podcast` tinyint(1) NOT NULL,
+  `downloadable` tinyint(1) NOT NULL,
+  `customhtml` tinyint(1) NOT NULL,
+  `countries` varchar(255) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `internetcontentarticles`
+--
+
+LOCK TABLES `internetcontentarticles` WRITE;
+/*!40000 ALTER TABLE `internetcontentarticles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `internetcontentarticles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `inuseprograms`
+--
+
+DROP TABLE IF EXISTS `inuseprograms`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `inuseprograms` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `recusage` varchar(128) NOT NULL DEFAULT '',
+  `lastupdatetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `rechost` varchar(64) NOT NULL,
+  `recdir` varchar(255) NOT NULL DEFAULT '',
+  KEY `chanid` (`chanid`,`starttime`),
+  KEY `recusage` (`recusage`,`lastupdatetime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `inuseprograms`
+--
+
+LOCK TABLES `inuseprograms` WRITE;
+/*!40000 ALTER TABLE `inuseprograms` DISABLE KEYS */;
+/*!40000 ALTER TABLE `inuseprograms` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `jobqueue`
+--
+
+DROP TABLE IF EXISTS `jobqueue`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `jobqueue` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `chanid` int(10) NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `inserttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `type` int(11) NOT NULL DEFAULT '0',
+  `cmds` int(11) NOT NULL DEFAULT '0',
+  `flags` int(11) NOT NULL DEFAULT '0',
+  `status` int(11) NOT NULL DEFAULT '0',
+  `statustime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `args` blob NOT NULL,
+  `comment` varchar(128) NOT NULL DEFAULT '',
+  `schedruntime` datetime NOT NULL DEFAULT '2007-01-01 00:00:00',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`type`,`inserttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `jobqueue`
+--
+
+LOCK TABLES `jobqueue` WRITE;
+/*!40000 ALTER TABLE `jobqueue` DISABLE KEYS */;
+/*!40000 ALTER TABLE `jobqueue` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `jumppoints`
+--
+
+DROP TABLE IF EXISTS `jumppoints`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `jumppoints` (
+  `destination` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(255) DEFAULT NULL,
+  `keylist` varchar(128) DEFAULT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  PRIMARY KEY (`destination`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `jumppoints`
+--
+
+LOCK TABLES `jumppoints` WRITE;
+/*!40000 ALTER TABLE `jumppoints` DISABLE KEYS */;
+INSERT INTO `jumppoints` VALUES ('Reload Theme',NULL,'','OLDHOSTNAME'),('Main Menu',NULL,'','OLDHOSTNAME'),('Program Guide',NULL,'','OLDHOSTNAME'),('Program Finder',NULL,'','OLDHOSTNAME'),('Manage Recordings / Fix Conflicts',NULL,'','OLDHOSTNAME'),('Program Recording Priorities',NULL,'','OLDHOSTNAME'),('Channel Recording Priorities',NULL,'','OLDHOSTNAME'),('TV Recording Playback',NULL,'','OLDHOSTNAME'),('TV Recording Deletion',NULL,'','OLDHOSTNAME'),('Live TV',NULL,'','OLDHOSTNAME'),('Live TV In Guide',NULL,'','OLDHOSTNAME'),('Manual Record Scheduling',NULL,'','OLDHOSTNAME'),('Status Screen',NULL,'','OLDHOSTNAME'),('Previously Recorded',NULL,'','OLDHOSTNAME'),('Play DVD',NULL,'','OLDHOSTNAME'),('Play VCD',NULL,'','OLDHOSTNAME'),('Rip DVD',NULL,'','OLDHOSTNAME'),('Netflix Browser',NULL,'','OLDHOSTNAME'),('Netflix Queue',NULL,'','OLDHOSTNAME'),('Netflix History',NULL,'','OLDHOSTNAME'),('MythGallery',NULL,'','OLDHOSTNAME'),('MythGame',NULL,'','OLDHOSTNAME'),('Play music',NULL,'','OLDHOSTNAME'),('Select music playlists',NULL,'','OLDHOSTNAME'),('Rip CD',NULL,'','OLDHOSTNAME'),('Scan music',NULL,'','OLDHOSTNAME'),('MythNews',NULL,'','OLDHOSTNAME'),('MythVideo',NULL,'','OLDHOSTNAME'),('Video Manager',NULL,'','OLDHOSTNAME'),('Video Browser',NULL,'','OLDHOSTNAME'),('Video Listings',NULL,'','OLDHOSTNAME'),('Video Gallery',NULL,'','OLDHOSTNAME'),('MythWeather',NULL,'','OLDHOSTNAME'),('Manage Recording Rules','','','OLDHOSTNAME'),('ScreenShot','','','OLDHOSTNAME'),('Create DVD','','','OLDHOSTNAME'),('Create Archive','','','OLDHOSTNAME'),('Import Archive','','','OLDHOSTNAME'),('View Archive Log','','','OLDHOSTNAME'),('Play Created DVD','','','OLDHOSTNAME'),('Burn DVD','','','OLDHOSTNAME'),('Show Music Miniplayer','','','OLDHOSTNAME'),('MythNetSearch','Internet Television Client - Search','','OLDHOSTNAME'),('MythNetTree','Internet Television Client - Site/Tree View','','OLDHOSTNAME');
+/*!40000 ALTER TABLE `jumppoints` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `keybindings`
+--
+
+DROP TABLE IF EXISTS `keybindings`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `keybindings` (
+  `context` varchar(32) NOT NULL DEFAULT '',
+  `action` varchar(32) NOT NULL DEFAULT '',
+  `description` varchar(255) DEFAULT NULL,
+  `keylist` varchar(128) DEFAULT NULL,
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  PRIMARY KEY (`context`,`action`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `keybindings`
+--
+
+LOCK TABLES `keybindings` WRITE;
+/*!40000 ALTER TABLE `keybindings` DISABLE KEYS */;
+INSERT INTO `keybindings` VALUES ('Global','UP','Up Arrow','Up','OLDHOSTNAME'),('Global','DOWN','Down Arrow','Down','OLDHOSTNAME'),('Global','LEFT','Left Arrow','Left','OLDHOSTNAME'),('Global','RIGHT','Right Arrow','Right','OLDHOSTNAME'),('Global','SELECT','Select','Return,Enter,Space','OLDHOSTNAME'),('Global','ESCAPE','Escape','Esc','OLDHOSTNAME'),('Global','MENU','Pop-up menu','M','OLDHOSTNAME'),('Global','INFO','More information','I','OLDHOSTNAME'),('Global','PAGEUP','Page Up','PgUp','OLDHOSTNAME'),('Global','PAGEDOWN','Page Down','PgDown','OLDHOSTNAME'),('Global','PREVVIEW','Previous View','Home','OLDHOSTNAME'),('Global','NEXTVIEW','Next View','End','OLDHOSTNAME'),('Global','HELP','Help','F1','OLDHOSTNAME'),('Global','EJECT','Eject Removable Media','','OLDHOSTNAME'),('Global','0','0','0','OLDHOSTNAME'),('Global','1','1','1','OLDHOSTNAME'),('Global','2','2','2','OLDHOSTNAME'),('Global','3','3','3','OLDHOSTNAME'),('Global','4','4','4','OLDHOSTNAME'),('Global','5','5','5','OLDHOSTNAME'),('Global','6','6','6','OLDHOSTNAME'),('Global','7','7','7','OLDHOSTNAME'),('Global','8','8','8','OLDHOSTNAME'),('Global','9','9','9','OLDHOSTNAME'),('TV Frontend','GUIDE','Show the Program Guide','S','OLDHOSTNAME'),('TV Frontend','CYCLEAUDIOCHAN','Cycle audio channels','','test-virtualbox'),('TV Frontend','FINDER','Show the Program Finder','#','OLDHOSTNAME'),('TV Frontend','PLAYBACK','Play Program','P','OLDHOSTNAME'),('TV Frontend','TOGGLERECORD','Toggle recording status of current program','R','OLDHOSTNAME'),('TV Frontend','DAYLEFT','Page the program guide back one day','Home,7','OLDHOSTNAME'),('TV Frontend','DAYRIGHT','Page the program guide forward one day','End,1','OLDHOSTNAME'),('TV Frontend','PAGELEFT','Page the program guide left',',,<','OLDHOSTNAME'),('TV Frontend','PAGERIGHT','Page the program guide right','>,.','OLDHOSTNAME'),('TV Frontend','TOGGLEFAV','Toggle the current channel as a favorite','?','OLDHOSTNAME'),('TV Frontend','NEXTFAV','Cycle through channel groups and all channels in the program guide.','/','OLDHOSTNAME'),('TV Frontend','CHANUPDATE','Switch channels without exiting guide in Live TV mode.','X','OLDHOSTNAME'),('TV Frontend','RANKINC','Increase program or channel rank','Right','OLDHOSTNAME'),('TV Frontend','RANKDEC','Decrease program or channel rank','Left','OLDHOSTNAME'),('TV Frontend','UPCOMING','List upcoming episodes','O','OLDHOSTNAME'),('TV Frontend','DETAILS','Show program details','U','OLDHOSTNAME'),('TV Frontend','VIEWCARD','Switch Capture Card view','Y','OLDHOSTNAME'),('Global','CUT','Cut text from textedit','Ctrl+X','OLDHOSTNAME'),('TV Playback','CLEAROSD','Clear OSD','Backspace','OLDHOSTNAME'),('TV Playback','PAUSE','Pause','P','OLDHOSTNAME'),('TV Playback','SEEKFFWD','Fast Forward','Right','OLDHOSTNAME'),('TV Playback','SEEKRWND','Rewind','Left','OLDHOSTNAME'),('TV Playback','ARBSEEK','Arbitrary Seek','*','OLDHOSTNAME'),('TV Playback','CHANNELUP','Channel up','Up','OLDHOSTNAME'),('TV Playback','CHANNELDOWN','Channel down','Down','OLDHOSTNAME'),('TV Playback','NEXTFAV','Switch to the next favorite channel','/','OLDHOSTNAME'),('TV Playback','PREVCHAN','Switch to the previous channel','H','OLDHOSTNAME'),('TV Playback','JUMPFFWD','Jump ahead','PgDown','OLDHOSTNAME'),('TV Playback','JUMPRWND','Jump back','PgUp','OLDHOSTNAME'),('TV Playback','JUMPBKMRK','Jump to bookmark','K','OLDHOSTNAME'),('TV Playback','FFWDSTICKY','Fast Forward (Sticky) or Forward one frame while paused','>,.','OLDHOSTNAME'),('TV Playback','RWNDSTICKY','Rewind (Sticky) or Rewind one frame while paused',',,<','OLDHOSTNAME'),('TV Playback','SKIPCOMMERCIAL','Skip Commercial','Z,End','OLDHOSTNAME'),('TV Playback','SKIPCOMMBACK','Skip Commercial (Reverse)','Q,Home','OLDHOSTNAME'),('TV Playback','JUMPSTART','Jump to the start of the recording.','Ctrl+B','OLDHOSTNAME'),('TV Playback','TOGGLEBROWSE','Toggle channel browse mode','O','OLDHOSTNAME'),('TV Playback','TOGGLERECORD','Toggle recording status of current program','R','OLDHOSTNAME'),('TV Playback','TOGGLEFAV','Toggle the current channel as a favorite','?','OLDHOSTNAME'),('TV Playback','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','OLDHOSTNAME'),('TV Playback','VOLUMEUP','Volume up','],},F11,Volume Up','OLDHOSTNAME'),('TV Playback','MUTE','Mute','|,\\,F9,Volume Mute','OLDHOSTNAME'),('TV Playback','TOGGLEPIPMODE','Toggle Picture-in-Picture view','V','OLDHOSTNAME'),('TV Playback','TOGGLEPIPWINDOW','Toggle active PiP window','B','OLDHOSTNAME'),('TV Playback','SWAPPIP','Swap PBP/PIP Windows','N','OLDHOSTNAME'),('TV Playback','TOGGLECC','Toggle any captions','T','OLDHOSTNAME'),('TV Playback','TOGGLETTC','Toggle Teletext Captions','','OLDHOSTNAME'),('TV Playback','TOGGLESUBTITLE','Toggle Subtitles','','OLDHOSTNAME'),('TV Playback','TOGGLECC608','Toggle VBI CC','','OLDHOSTNAME'),('TV Playback','TOGGLECC708','Toggle ATSC CC','','OLDHOSTNAME'),('TV Playback','TOGGLETTM','Toggle Teletext Menu','','OLDHOSTNAME'),('TV Playback','SELECTAUDIO_0','Play audio track 1','','OLDHOSTNAME'),('TV Playback','SELECTAUDIO_1','Play audio track 2','','OLDHOSTNAME'),('TV Playback','SELECTSUBTITLE_0','Display subtitle 1','','OLDHOSTNAME'),('TV Playback','SELECTSUBTITLE_1','Display subtitle 2','','OLDHOSTNAME'),('TV Playback','SELECTCC608_0','Display VBI CC1','','OLDHOSTNAME'),('TV Playback','SELECTCC608_1','Display VBI CC2','','OLDHOSTNAME'),('TV Playback','SELECTCC608_2','Display VBI CC3','','OLDHOSTNAME'),('TV Playback','SELECTCC608_3','Display VBI CC4','','OLDHOSTNAME'),('TV Playback','SELECTCC708_0','Display ATSC CC1','','OLDHOSTNAME'),('TV Playback','SELECTCC708_1','Display ATSC CC2','','OLDHOSTNAME'),('TV Playback','SELECTCC708_2','Display ATSC CC3','','OLDHOSTNAME'),('TV Playback','SELECTCC708_3','Display ATSC CC4','','OLDHOSTNAME'),('TV Playback','NEXTAUDIO','Next audio track','+','OLDHOSTNAME'),('TV Playback','PREVAUDIO','Previous audio track','-','OLDHOSTNAME'),('TV Playback','NEXTSUBTITLE','Next subtitle track','','OLDHOSTNAME'),('TV Playback','PREVSUBTITLE','Previous subtitle track','','OLDHOSTNAME'),('TV Playback','NEXTCC608','Next VBI CC track','','OLDHOSTNAME'),('TV Playback','PREVCC608','Previous VBI CC track','','OLDHOSTNAME'),('TV Playback','NEXTCC708','Next ATSC CC track','','OLDHOSTNAME'),('TV Playback','PREVCC708','Previous ATSC CC track','','OLDHOSTNAME'),('TV Playback','NEXTCC','Next of any captions','','OLDHOSTNAME'),('TV Playback','NEXTSCAN','Next video scan overidemode','','OLDHOSTNAME'),('TV Playback','QUEUETRANSCODE','Queue the current recording for transcoding','X','OLDHOSTNAME'),('TV Playback','SPEEDINC','Increase the playback speed','U','OLDHOSTNAME'),('TV Playback','SPEEDDEC','Decrease the playback speed','J','OLDHOSTNAME'),('TV Playback','ADJUSTSTRETCH','Turn on time stretch control','A','OLDHOSTNAME'),('TV Playback','STRETCHINC','Increase time stretch speed','','OLDHOSTNAME'),('TV Playback','STRETCHDEC','Decrease time stretch speed','','OLDHOSTNAME'),('TV Playback','TOGGLESTRETCH','Toggle time stretch speed','','OLDHOSTNAME'),('TV Playback','TOGGLEAUDIOSYNC','Turn on audio sync adjustment controls','','OLDHOSTNAME'),('TV Playback','TOGGLEPICCONTROLS','Playback picture adjustments','F','OLDHOSTNAME'),('TV Playback','TOGGLECHANCONTROLS','Recording picture adjustments for this channel','Ctrl+G','OLDHOSTNAME'),('TV Playback','TOGGLERECCONTROLS','Recording picture adjustments for this recorder','G','OLDHOSTNAME'),('TV Frontend','TOGGLEEPGORDER','Reverse the channel order in the program guide','0','OLDHOSTNAME'),('TV Playback','CYCLECOMMSKIPMODE','Cycle Commercial Skip mode','','OLDHOSTNAME'),('TV Playback','GUIDE','Show the Program Guide','S','OLDHOSTNAME'),('TV Playback','FINDER','Show the Program Finder','#','OLDHOSTNAME'),('TV Playback','TOGGLESLEEP','Toggle the Sleep Timer','F8','OLDHOSTNAME'),('TV Playback','PLAY','Play','Ctrl+P','OLDHOSTNAME'),('TV Playback','JUMPPREV','Jump to previously played recording','','OLDHOSTNAME'),('TV Playback','JUMPREC','Display menu of recorded programs to jump to','','OLDHOSTNAME'),('TV Playback','JUMPTODVDROOTMENU','Jump to the DVD Root Menu','','OLDHOSTNAME'),('TV Editing','CLEARMAP','Clear editing cut points','C,Q,Home','OLDHOSTNAME'),('TV Editing','INVERTMAP','Invert Begin/End cut points','I','OLDHOSTNAME'),('TV Editing','LOADCOMMSKIP','Load cut list from commercial skips','Z,End','OLDHOSTNAME'),('TV Editing','NEXTCUT','Jump to the next cut point','PgDown','OLDHOSTNAME'),('TV Editing','PREVCUT','Jump to the previous cut point','PgUp','OLDHOSTNAME'),('TV Editing','BIGJUMPREW','Jump back 10x the normal amount',',,<','OLDHOSTNAME'),('TV Editing','BIGJUMPFWD','Jump forward 10x the normal amount','>,.','OLDHOSTNAME'),('Teletext Menu','NEXTPAGE','Next Page','Down','OLDHOSTNAME'),('Teletext Menu','PREVPAGE','Previous Page','Up','OLDHOSTNAME'),('Teletext Menu','NEXTSUBPAGE','Next Subpage','Right','OLDHOSTNAME'),('Teletext Menu','PREVSUBPAGE','Previous Subpage','Left','OLDHOSTNAME'),('Teletext Menu','TOGGLETT','Toggle Teletext','T','OLDHOSTNAME'),('Teletext Menu','MENURED','Menu Red','F2','OLDHOSTNAME'),('Teletext Menu','MENUGREEN','Menu Green','F3','OLDHOSTNAME'),('Teletext Menu','MENUYELLOW','Menu Yellow','F4','OLDHOSTNAME'),('Teletext Menu','MENUBLUE','Menu Blue','F5','OLDHOSTNAME'),('Teletext Menu','MENUWHITE','Menu White','F6','OLDHOSTNAME'),('Teletext Menu','TOGGLEBACKGROUND','Toggle Background','F7','OLDHOSTNAME'),('Teletext Menu','REVEAL','Reveal hidden Text','F8','OLDHOSTNAME'),('TV Playback','MENURED','Menu Red','F2','OLDHOSTNAME'),('TV Playback','MENUGREEN','Menu Green','F3','OLDHOSTNAME'),('TV Playback','MENUYELLOW','Menu Yellow','F4','OLDHOSTNAME'),('TV Playback','MENUBLUE','Menu Blue','F5','OLDHOSTNAME'),('TV Playback','TEXTEXIT','Menu Exit','F6','OLDHOSTNAME'),('TV Playback','MENUTEXT','Menu Text','F7','OLDHOSTNAME'),('TV Playback','MENUEPG','Menu EPG','F12','OLDHOSTNAME'),('Archive','TOGGLECUT','Toggle use cut list state for selected program','C','OLDHOSTNAME'),('NetFlix','MOVETOTOP','Moves movie to top of queue','1','OLDHOSTNAME'),('NetFlix','REMOVE','Removes movie from queue','D','OLDHOSTNAME'),('Gallery','PLAY','Start/Stop Slideshow','P','OLDHOSTNAME'),('Gallery','HOME','Go to the first image in thumbnail view','Home','OLDHOSTNAME'),('Gallery','END','Go to the last image in thumbnail view','End','OLDHOSTNAME'),('Gallery','MENU','Toggle activating menu in thumbnail view','M','OLDHOSTNAME'),('Gallery','SLIDESHOW','Start Slideshow in thumbnail view','S','OLDHOSTNAME'),('Gallery','RANDOMSHOW','Start Random Slideshow in thumbnail view','R','OLDHOSTNAME'),('Gallery','ROTRIGHT','Rotate image right 90 degrees','],3','OLDHOSTNAME'),('Gallery','ROTLEFT','Rotate image left 90 degrees','[,1','OLDHOSTNAME'),('Gallery','ZOOMOUT','Zoom image out','7','OLDHOSTNAME'),('Gallery','ZOOMIN','Zoom image in','9','OLDHOSTNAME'),('Gallery','SCROLLUP','Scroll image up','2','OLDHOSTNAME'),('Gallery','SCROLLLEFT','Scroll image left','4','OLDHOSTNAME'),('Gallery','SCROLLRIGHT','Scroll image right','6','OLDHOSTNAME'),('Gallery','SCROLLDOWN','Scroll image down','8','OLDHOSTNAME'),('Gallery','RECENTER','Recenter image','5','OLDHOSTNAME'),('Gallery','FULLSIZE','Full-size (un-zoom) image','0','OLDHOSTNAME'),('Gallery','UPLEFT','Go to the upper-left corner of the image','PgUp','OLDHOSTNAME'),('Gallery','LOWRIGHT','Go to the lower-right corner of the image','PgDown','OLDHOSTNAME'),('Gallery','INFO','Toggle Showing Information about Image','I','OLDHOSTNAME'),('Gallery','FULLSCREEN','Toggle scale to fullscreen/scale to fit','W','OLDHOSTNAME'),('Gallery','MARK','Mark image','T','OLDHOSTNAME'),('Game','TOGGLEFAV','Toggle the current game as a favorite','?,/','OLDHOSTNAME'),('Game','INCSEARCH','Show incremental search dialog','Ctrl+S','OLDHOSTNAME'),('Game','INCSEARCHNEXT','Incremental search find next match','Ctrl+N','OLDHOSTNAME'),('Music','PLAY','Start playback','','OLDHOSTNAME'),('Music','NEXTTRACK','Move to the next track','>,.,Z,End','OLDHOSTNAME'),('Music','PREVTRACK','Move to the previous track',',,<,Q,Home','OLDHOSTNAME'),('Music','FFWD','Fast forward','PgDown','OLDHOSTNAME'),('Music','RWND','Rewind','PgUp','OLDHOSTNAME'),('Music','PAUSE','Pause/Start playback','P','OLDHOSTNAME'),('Music','STOP','Stop playback','O','OLDHOSTNAME'),('Music','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','OLDHOSTNAME'),('Music','VOLUMEUP','Volume up','],},F11,Volume Up','OLDHOSTNAME'),('Music','MUTE','Mute','|,\\,F9,Volume Mute','OLDHOSTNAME'),('Music','CYCLEVIS','Cycle visualizer mode','6','OLDHOSTNAME'),('Music','BLANKSCR','Blank screen','5','OLDHOSTNAME'),('Music','THMBUP','Increase rating','9','OLDHOSTNAME'),('Music','THMBDOWN','Decrease rating','7','OLDHOSTNAME'),('Music','REFRESH','Refresh music tree','8','OLDHOSTNAME'),('Music','FILTER','Filter All My Music','F','OLDHOSTNAME'),('Music','INCSEARCH','Show incremental search dialog','Ctrl+S','OLDHOSTNAME'),('Music','INCSEARCHNEXT','Incremental search find next match','Ctrl+N','OLDHOSTNAME'),('News','RETRIEVENEWS','Update news items','I','OLDHOSTNAME'),('News','FORCERETRIEVE','Force update news items','M','OLDHOSTNAME'),('News','CANCEL','Cancel news item updating','C','OLDHOSTNAME'),('Phone','0','0','0','OLDHOSTNAME'),('Phone','1','1','1','OLDHOSTNAME'),('Phone','2','2','2','OLDHOSTNAME'),('Phone','3','3','3','OLDHOSTNAME'),('Phone','4','4','4','OLDHOSTNAME'),('Phone','5','5','5','OLDHOSTNAME'),('Phone','6','6','6','OLDHOSTNAME'),('Phone','7','7','7','OLDHOSTNAME'),('Phone','8','8','8','OLDHOSTNAME'),('Phone','9','9','9','OLDHOSTNAME'),('Phone','HASH','HASH','#','OLDHOSTNAME'),('Phone','STAR','STAR','*','OLDHOSTNAME'),('Phone','Up','Up','Up','OLDHOSTNAME'),('Phone','Down','Down','Down','OLDHOSTNAME'),('Phone','Left','Left','Left','OLDHOSTNAME'),('Phone','Right','Right','Right','OLDHOSTNAME'),('Phone','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','OLDHOSTNAME'),('Phone','VOLUMEUP','Volume up','],},F11,Volume Up','OLDHOSTNAME'),('Phone','ZOOMIN','Zoom the video window in','>,.,Z,End','OLDHOSTNAME'),('Phone','ZOOMOUT','Zoom the video window out',',,<,Q,Home','OLDHOSTNAME'),('Phone','FULLSCRN','Show received video full-screen','P','OLDHOSTNAME'),('Phone','HANGUP','Hangup an active call','O','OLDHOSTNAME'),('Phone','MUTE','Mute','|,\\,F9,Volume Mute','OLDHOSTNAME'),('Phone','LOOPBACK','Loopback Video','L','OLDHOSTNAME'),('Video','FILTER','Open video filter dialog','F','OLDHOSTNAME'),('Global','PAGETOP','Page to top of list','','OLDHOSTNAME'),('Video','BROWSE','Change browsable in video manager','B','OLDHOSTNAME'),('Video','INCPARENT','Increase Parental Level','],},F11','OLDHOSTNAME'),('Video','DECPARENT','Decrease Parental Level','[,{,F10','OLDHOSTNAME'),('Video','HOME','Go to the first video','Home','OLDHOSTNAME'),('Video','END','Go to the last video','End','OLDHOSTNAME'),('Weather','PAUSE','Pause current page','P','OLDHOSTNAME'),('Global','NEXT','Move to next widget','Tab','OLDHOSTNAME'),('Global','PREVIOUS','Move to preview widget','Backtab','OLDHOSTNAME'),('Global','BACKSPACE','Backspace','Backspace','OLDHOSTNAME'),('Global','DELETE','Delete','D','OLDHOSTNAME'),('Global','EDIT','Edit','E','OLDHOSTNAME'),('Browser','ZOOMIN','Zoom in on browser window','.,>','OLDHOSTNAME'),('Browser','ZOOMOUT','Zoom out on browser window',',,<','OLDHOSTNAME'),('Browser','TOGGLEINPUT','Toggle where keyboard input goes to','F1','OLDHOSTNAME'),('Browser','MOUSEUP','Move mouse pointer up','2','OLDHOSTNAME'),('Browser','MOUSEDOWN','Move mouse pointer down','8','OLDHOSTNAME'),('Browser','MOUSELEFT','Move mouse pointer left','4','OLDHOSTNAME'),('Browser','MOUSERIGHT','Move mouse pointer right','6','OLDHOSTNAME'),('Browser','MOUSELEFTBUTTON','Mouse Left button click','5','OLDHOSTNAME'),('Browser','PAGEDOWN','Scroll down half a page','9','OLDHOSTNAME'),('Browser','PAGEUP','Scroll up half a page','3','OLDHOSTNAME'),('Browser','PAGELEFT','Scroll left half a page','7','OLDHOSTNAME'),('Browser','PAGERIGHT','Scroll right half a page','1','OLDHOSTNAME'),('Browser','NEXTLINK','Move selection to next link','Z','OLDHOSTNAME'),('Browser','PREVIOUSLINK','Move selection to previous link','Q','OLDHOSTNAME'),('Browser','FOLLOWLINK','Follow selected link','Return,Space,Enter','OLDHOSTNAME'),('Browser','HISTORYBACK','Go back to previous page','R,Backspace','OLDHOSTNAME'),('Browser','HISTORYFORWARD','Go forward to previous page','F','OLDHOSTNAME'),('Global','PAGEMIDDLE','Page to middle of list','','OLDHOSTNAME'),('Global','PAGEBOTTOM','Page to bottom of list','','OLDHOSTNAME'),('TV Frontend','VOLUMEDOWN','Volume down','[,{,F10,Volume Down','OLDHOSTNAME'),('TV Frontend','VOLUMEUP','Volume up','],},F11,Volume Up','OLDHOSTNAME'),('TV Frontend','MUTE','Mute','|,\\,F9,Volume Mute','OLDHOSTNAME'),('TV Frontend','VIEWINPUT','Switch Capture Card view','C','OLDHOSTNAME'),('TV Frontend','CHANGERECGROUP','Change Recording Group','','OLDHOSTNAME'),('TV Frontend','CHANGEGROUPVIEW','Change Group View','','OLDHOSTNAME'),('TV Playback','NEXTSOURCE','Next Video Source','Y','OLDHOSTNAME'),('TV Playback','PREVSOURCE','Previous Video Source','Ctrl+Y','OLDHOSTNAME'),('TV Playback','NEXTINPUT','Next Input','C','OLDHOSTNAME'),('TV Playback','NEXTCARD','Next Card','','OLDHOSTNAME'),('TV Playback','TOGGLEPBPMODE','Toggle Picture-by-Picture view','Ctrl+V','OLDHOSTNAME'),('TV Playback','CREATEPIPVIEW','Create Picture-in-Picture view','','OLDHOSTNAME'),('TV Playback','CREATEPBPVIEW','Create Picture-by-Picture view','','OLDHOSTNAME'),('TV Playback','NEXTPIPWINDOW','Toggle active PIP/PBP window','B','OLDHOSTNAME'),('TV Playback','TOGGLEPIPSTATE','Change PxP view','','OLDHOSTNAME'),('TV Playback','TOGGLEASPECT','Toggle the video aspect ratio','Ctrl+W','OLDHOSTNAME'),('TV Playback','TOGGLEFILL','Next Preconfigured Zoom mode','W','OLDHOSTNAME'),('TV Playback','VIEWSCHEDULED','Display scheduled recording list','','OLDHOSTNAME'),('TV Playback','SIGNALMON','Monitor Signal Quality','Alt+F7','OLDHOSTNAME'),('TV Playback','EXITSHOWNOPROMPTS','Exit Show without any prompts','','OLDHOSTNAME'),('TV Playback','SCREENSHOT','Save screenshot of current video frame','','OLDHOSTNAME'),('Music','SPEEDUP','Increase Play Speed','W','OLDHOSTNAME'),('Music','SPEEDDOWN','Decrease Play Speed','X','OLDHOSTNAME'),('Video','PLAYALT','Play selected item in alternate player','ALT+P','OLDHOSTNAME'),('Video','INCSEARCH','Show Incremental Search Dialog','Ctrl+S','OLDHOSTNAME'),('Video','DOWNLOADDATA','Download metadata for current item','W','OLDHOSTNAME'),('Video','ITEMDETAIL','Display Item Detail Popup','','OLDHOSTNAME'),('Weather','SEARCH','Search List','/','OLDHOSTNAME'),('Weather','NEXTSEARCH','Search List','n','OLDHOSTNAME'),('Weather','UPDATE','Search List','u','OLDHOSTNAME'),('Global','COPY','Copy text from textedit','Ctrl+C','OLDHOSTNAME'),('Global','PASTE','Paste text into textedit','Ctrl+V','OLDHOSTNAME'),('Global','SYSEVENT01','Trigger System Key Event #1','','OLDHOSTNAME'),('Global','SYSEVENT02','Trigger System Key Event #2','','OLDHOSTNAME'),('Global','SYSEVENT03','Trigger System Key Event #3','','OLDHOSTNAME'),('Global','SYSEVENT04','Trigger System Key Event #4','','OLDHOSTNAME'),('Global','SYSEVENT05','Trigger System Key Event #5','','OLDHOSTNAME'),('Global','SYSEVENT06','Trigger System Key Event #6','','OLDHOSTNAME'),('Global','SYSEVENT07','Trigger System Key Event #7','','OLDHOSTNAME'),('Global','SYSEVENT08','Trigger System Key Event #8','','OLDHOSTNAME'),('Global','SYSEVENT09','Trigger System Key Event #9','','OLDHOSTNAME'),('Global','SYSEVENT10','Trigger System Key Event #10','','OLDHOSTNAME'),('TV Frontend','CUSTOMEDIT','Edit Custom Record Rule','','OLDHOSTNAME'),('TV Playback','TOGGLEUPMIX','Toggle audio upmixer','Ctrl+U','OLDHOSTNAME'),('Browser','NEXTTAB','Move to next browser tab','P','OLDHOSTNAME'),('Browser','PREVTAB','Move to previous browser tab','','OLDHOSTNAME'),('Music','TOGGLEUPMIX','Toggle audio upmixer','Ctrl+U','OLDHOSTNAME'),('Main Menu','EXIT','System Exit','Esc','OLDHOSTNAME'),('TV Playback','BACK','Exit or return to DVD menu','','test-virtualbox'),('TV Playback','CYCLEAUDIOCHAN','Cycle audio channels','','test-virtualbox'),('TV Playback','TOGGLETEXT','Toggle External Subtitles','','test-virtualbox'),('TV Playback','TOGGLERAWTEXT','Toggle Text Subtitles','','test-virtualbox'),('TV Playback','SELECTRAWTEXT_0','Display Text Subtitle 1','','test-virtualbox'),('TV Playback','NEXTRAWTEXT','Next Text track','','test-virtualbox'),('TV Playback','PREVRAWTEXT','Previous Text track','','test-virtualbox'),('TV Editing','SAVEMAP','Save cut list','','test-virtualbox');
+/*!40000 ALTER TABLE `keybindings` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `keyword`
+--
+
+DROP TABLE IF EXISTS `keyword`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `keyword` (
+  `phrase` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `searchtype` int(10) unsigned NOT NULL DEFAULT '3',
+  UNIQUE KEY `phrase` (`phrase`,`searchtype`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `keyword`
+--
+
+LOCK TABLES `keyword` WRITE;
+/*!40000 ALTER TABLE `keyword` DISABLE KEYS */;
+/*!40000 ALTER TABLE `keyword` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `movies_movies`
+--
+
+DROP TABLE IF EXISTS `movies_movies`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `movies_movies` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `moviename` varchar(255) DEFAULT NULL,
+  `rating` varchar(10) DEFAULT NULL,
+  `runningtime` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `movies_movies`
+--
+
+LOCK TABLES `movies_movies` WRITE;
+/*!40000 ALTER TABLE `movies_movies` DISABLE KEYS */;
+/*!40000 ALTER TABLE `movies_movies` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `movies_showtimes`
+--
+
+DROP TABLE IF EXISTS `movies_showtimes`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `movies_showtimes` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `theaterid` int(11) NOT NULL,
+  `movieid` int(11) NOT NULL,
+  `showtimes` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `movies_showtimes`
+--
+
+LOCK TABLES `movies_showtimes` WRITE;
+/*!40000 ALTER TABLE `movies_showtimes` DISABLE KEYS */;
+/*!40000 ALTER TABLE `movies_showtimes` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `movies_theaters`
+--
+
+DROP TABLE IF EXISTS `movies_theaters`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `movies_theaters` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `theatername` varchar(100) DEFAULT NULL,
+  `theateraddress` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `movies_theaters`
+--
+
+LOCK TABLES `movies_theaters` WRITE;
+/*!40000 ALTER TABLE `movies_theaters` DISABLE KEYS */;
+/*!40000 ALTER TABLE `movies_theaters` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_albumart`
+--
+
+DROP TABLE IF EXISTS `music_albumart`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_albumart` (
+  `albumart_id` int(20) NOT NULL AUTO_INCREMENT,
+  `filename` varchar(255) NOT NULL DEFAULT '',
+  `directory_id` int(20) NOT NULL DEFAULT '0',
+  `imagetype` tinyint(3) NOT NULL DEFAULT '0',
+  `song_id` int(11) NOT NULL DEFAULT '0',
+  `embedded` tinyint(1) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`albumart_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_albumart`
+--
+
+LOCK TABLES `music_albumart` WRITE;
+/*!40000 ALTER TABLE `music_albumart` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_albumart` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_albums`
+--
+
+DROP TABLE IF EXISTS `music_albums`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_albums` (
+  `album_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `artist_id` int(11) unsigned NOT NULL DEFAULT '0',
+  `album_name` varchar(255) NOT NULL DEFAULT '',
+  `year` smallint(6) NOT NULL DEFAULT '0',
+  `compilation` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`album_id`),
+  KEY `idx_album_name` (`album_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_albums`
+--
+
+LOCK TABLES `music_albums` WRITE;
+/*!40000 ALTER TABLE `music_albums` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_albums` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_artists`
+--
+
+DROP TABLE IF EXISTS `music_artists`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_artists` (
+  `artist_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `artist_name` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`artist_id`),
+  KEY `idx_artist_name` (`artist_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_artists`
+--
+
+LOCK TABLES `music_artists` WRITE;
+/*!40000 ALTER TABLE `music_artists` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_artists` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_directories`
+--
+
+DROP TABLE IF EXISTS `music_directories`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_directories` (
+  `directory_id` int(20) NOT NULL AUTO_INCREMENT,
+  `path` text NOT NULL,
+  `parent_id` int(20) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`directory_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_directories`
+--
+
+LOCK TABLES `music_directories` WRITE;
+/*!40000 ALTER TABLE `music_directories` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_directories` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_genres`
+--
+
+DROP TABLE IF EXISTS `music_genres`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_genres` (
+  `genre_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `genre` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`genre_id`),
+  KEY `idx_genre` (`genre`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_genres`
+--
+
+LOCK TABLES `music_genres` WRITE;
+/*!40000 ALTER TABLE `music_genres` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_genres` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_playlists`
+--
+
+DROP TABLE IF EXISTS `music_playlists`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_playlists` (
+  `playlist_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `playlist_name` varchar(255) NOT NULL DEFAULT '',
+  `playlist_songs` text NOT NULL,
+  `last_accessed` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `length` int(11) unsigned NOT NULL DEFAULT '0',
+  `songcount` smallint(8) unsigned NOT NULL DEFAULT '0',
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  PRIMARY KEY (`playlist_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_playlists`
+--
+
+LOCK TABLES `music_playlists` WRITE;
+/*!40000 ALTER TABLE `music_playlists` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_playlists` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_smartplaylist_categories`
+--
+
+DROP TABLE IF EXISTS `music_smartplaylist_categories`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_smartplaylist_categories` (
+  `categoryid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) NOT NULL,
+  PRIMARY KEY (`categoryid`),
+  KEY `name` (`name`)
+) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_smartplaylist_categories`
+--
+
+LOCK TABLES `music_smartplaylist_categories` WRITE;
+/*!40000 ALTER TABLE `music_smartplaylist_categories` DISABLE KEYS */;
+INSERT INTO `music_smartplaylist_categories` VALUES (1,'Decades'),(2,'Favourite Tracks'),(3,'New Tracks');
+/*!40000 ALTER TABLE `music_smartplaylist_categories` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_smartplaylist_items`
+--
+
+DROP TABLE IF EXISTS `music_smartplaylist_items`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_smartplaylist_items` (
+  `smartplaylistitemid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `smartplaylistid` int(10) unsigned NOT NULL,
+  `field` varchar(50) NOT NULL,
+  `operator` varchar(20) NOT NULL,
+  `value1` varchar(255) NOT NULL,
+  `value2` varchar(255) NOT NULL,
+  PRIMARY KEY (`smartplaylistitemid`),
+  KEY `smartplaylistid` (`smartplaylistid`)
+) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_smartplaylist_items`
+--
+
+LOCK TABLES `music_smartplaylist_items` WRITE;
+/*!40000 ALTER TABLE `music_smartplaylist_items` DISABLE KEYS */;
+INSERT INTO `music_smartplaylist_items` VALUES (1,1,'Year','is between','1960','1969'),(2,2,'Year','is between','1970','1979'),(3,3,'Year','is between','1980','1989'),(4,4,'Year','is between','1990','1999'),(5,5,'Year','is between','2000','2009'),(6,6,'Rating','is greater than','7','0'),(7,7,'Play Count','is greater than','0','0'),(8,8,'Play Count','is equal to','0','0');
+/*!40000 ALTER TABLE `music_smartplaylist_items` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_smartplaylists`
+--
+
+DROP TABLE IF EXISTS `music_smartplaylists`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_smartplaylists` (
+  `smartplaylistid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) NOT NULL,
+  `categoryid` int(10) unsigned NOT NULL,
+  `matchtype` set('All','Any') CHARACTER SET latin1 NOT NULL DEFAULT 'All',
+  `orderby` varchar(128) NOT NULL DEFAULT '',
+  `limitto` int(10) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`smartplaylistid`),
+  KEY `name` (`name`),
+  KEY `categoryid` (`categoryid`)
+) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_smartplaylists`
+--
+
+LOCK TABLES `music_smartplaylists` WRITE;
+/*!40000 ALTER TABLE `music_smartplaylists` DISABLE KEYS */;
+INSERT INTO `music_smartplaylists` VALUES (1,'1960\'s',1,'All','Artist (A)',0),(2,'1970\'s',1,'All','Artist (A)',0),(3,'1980\'s',1,'All','Artist (A)',0),(4,'1990\'s',1,'All','Artist (A)',0),(5,'2000\'s',1,'All','Artist (A)',0),(6,'Favorite Tracks',2,'All','Artist (A), Album (A)',0),(7,'100 Most Played Tracks',2,'All','Play Count (D)',100),(8,'Never Played Tracks',3,'All','Artist (A), Album (A)',0);
+/*!40000 ALTER TABLE `music_smartplaylists` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_songs`
+--
+
+DROP TABLE IF EXISTS `music_songs`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_songs` (
+  `song_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `filename` text NOT NULL,
+  `name` varchar(255) NOT NULL DEFAULT '',
+  `track` smallint(6) unsigned NOT NULL DEFAULT '0',
+  `artist_id` int(11) unsigned NOT NULL DEFAULT '0',
+  `album_id` int(11) unsigned NOT NULL DEFAULT '0',
+  `genre_id` int(11) unsigned NOT NULL DEFAULT '0',
+  `year` smallint(6) NOT NULL DEFAULT '0',
+  `length` int(11) unsigned NOT NULL DEFAULT '0',
+  `numplays` int(11) unsigned NOT NULL DEFAULT '0',
+  `rating` tinyint(4) unsigned NOT NULL DEFAULT '0',
+  `lastplay` datetime DEFAULT NULL,
+  `date_entered` datetime DEFAULT NULL,
+  `date_modified` datetime DEFAULT NULL,
+  `format` varchar(4) NOT NULL DEFAULT '0',
+  `mythdigest` varchar(255) DEFAULT NULL,
+  `size` bigint(20) unsigned DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
+  `comment` varchar(255) DEFAULT NULL,
+  `disc_count` smallint(5) unsigned DEFAULT '0',
+  `disc_number` smallint(5) unsigned DEFAULT '0',
+  `track_count` smallint(5) unsigned DEFAULT '0',
+  `start_time` int(10) unsigned DEFAULT '0',
+  `stop_time` int(10) unsigned DEFAULT NULL,
+  `eq_preset` varchar(255) DEFAULT NULL,
+  `relative_volume` tinyint(4) DEFAULT '0',
+  `sample_rate` int(10) unsigned DEFAULT '0',
+  `bitrate` int(10) unsigned DEFAULT '0',
+  `bpm` smallint(5) unsigned DEFAULT NULL,
+  `directory_id` int(20) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`song_id`),
+  KEY `idx_name` (`name`),
+  KEY `idx_mythdigest` (`mythdigest`),
+  KEY `directory_id` (`directory_id`),
+  KEY `album_id` (`album_id`),
+  KEY `genre_id` (`genre_id`),
+  KEY `artist_id` (`artist_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_songs`
+--
+
+LOCK TABLES `music_songs` WRITE;
+/*!40000 ALTER TABLE `music_songs` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_songs` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `music_stats`
+--
+
+DROP TABLE IF EXISTS `music_stats`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `music_stats` (
+  `num_artists` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `num_albums` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `num_songs` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `num_genres` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `total_time` varchar(12) NOT NULL DEFAULT '0',
+  `total_size` varchar(10) NOT NULL DEFAULT '0'
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `music_stats`
+--
+
+LOCK TABLES `music_stats` WRITE;
+/*!40000 ALTER TABLE `music_stats` DISABLE KEYS */;
+/*!40000 ALTER TABLE `music_stats` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mythlog`
+--
+
+DROP TABLE IF EXISTS `mythlog`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mythlog` (
+  `logid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `module` varchar(32) NOT NULL DEFAULT '',
+  `priority` int(11) NOT NULL DEFAULT '0',
+  `acknowledged` tinyint(1) DEFAULT '0',
+  `logdate` datetime DEFAULT NULL,
+  `host` varchar(128) DEFAULT NULL,
+  `message` varchar(255) NOT NULL DEFAULT '',
+  `details` varchar(16000) NOT NULL DEFAULT '',
+  PRIMARY KEY (`logid`),
+  KEY `module` (`module`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mythlog`
+--
+
+LOCK TABLES `mythlog` WRITE;
+/*!40000 ALTER TABLE `mythlog` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mythlog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `netvisionrssitems`
+--
+
+DROP TABLE IF EXISTS `netvisionrssitems`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `netvisionrssitems` (
+  `feedtitle` varchar(255) NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `description` text NOT NULL,
+  `url` text NOT NULL,
+  `thumbnail` text NOT NULL,
+  `mediaURL` text NOT NULL,
+  `author` varchar(255) NOT NULL,
+  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `time` int(11) NOT NULL,
+  `rating` varchar(255) NOT NULL,
+  `filesize` bigint(20) NOT NULL,
+  `player` varchar(255) NOT NULL,
+  `playerargs` text NOT NULL,
+  `download` varchar(255) NOT NULL,
+  `downloadargs` text NOT NULL,
+  `width` smallint(6) NOT NULL,
+  `height` smallint(6) NOT NULL,
+  `language` varchar(128) DEFAULT NULL,
+  `downloadable` tinyint(1) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `netvisionrssitems`
+--
+
+LOCK TABLES `netvisionrssitems` WRITE;
+/*!40000 ALTER TABLE `netvisionrssitems` DISABLE KEYS */;
+/*!40000 ALTER TABLE `netvisionrssitems` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `netvisionsearchgrabbers`
+--
+
+DROP TABLE IF EXISTS `netvisionsearchgrabbers`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `netvisionsearchgrabbers` (
+  `name` varchar(255) NOT NULL,
+  `thumbnail` varchar(255) DEFAULT NULL,
+  `commandline` text NOT NULL,
+  `host` varchar(128) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `netvisionsearchgrabbers`
+--
+
+LOCK TABLES `netvisionsearchgrabbers` WRITE;
+/*!40000 ALTER TABLE `netvisionsearchgrabbers` DISABLE KEYS */;
+/*!40000 ALTER TABLE `netvisionsearchgrabbers` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `netvisionsites`
+--
+
+DROP TABLE IF EXISTS `netvisionsites`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `netvisionsites` (
+  `name` varchar(255) NOT NULL,
+  `thumbnail` varchar(255) DEFAULT NULL,
+  `description` text,
+  `url` text NOT NULL,
+  `author` varchar(255) DEFAULT NULL,
+  `download` tinyint(1) NOT NULL,
+  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `netvisionsites`
+--
+
+LOCK TABLES `netvisionsites` WRITE;
+/*!40000 ALTER TABLE `netvisionsites` DISABLE KEYS */;
+/*!40000 ALTER TABLE `netvisionsites` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `netvisiontreegrabbers`
+--
+
+DROP TABLE IF EXISTS `netvisiontreegrabbers`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `netvisiontreegrabbers` (
+  `name` varchar(255) NOT NULL,
+  `thumbnail` varchar(255) DEFAULT NULL,
+  `commandline` text NOT NULL,
+  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `host` varchar(128) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `netvisiontreegrabbers`
+--
+
+LOCK TABLES `netvisiontreegrabbers` WRITE;
+/*!40000 ALTER TABLE `netvisiontreegrabbers` DISABLE KEYS */;
+/*!40000 ALTER TABLE `netvisiontreegrabbers` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `netvisiontreeitems`
+--
+
+DROP TABLE IF EXISTS `netvisiontreeitems`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `netvisiontreeitems` (
+  `feedtitle` varchar(255) NOT NULL,
+  `path` text NOT NULL,
+  `paththumb` text NOT NULL,
+  `title` varchar(255) NOT NULL,
+  `description` text NOT NULL,
+  `url` text NOT NULL,
+  `thumbnail` text NOT NULL,
+  `mediaURL` text NOT NULL,
+  `author` varchar(255) NOT NULL,
+  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `time` int(11) NOT NULL,
+  `rating` varchar(255) NOT NULL,
+  `filesize` bigint(20) NOT NULL,
+  `player` varchar(255) NOT NULL,
+  `playerargs` text NOT NULL,
+  `download` varchar(255) NOT NULL,
+  `downloadargs` text NOT NULL,
+  `width` smallint(6) NOT NULL,
+  `height` smallint(6) NOT NULL,
+  `language` varchar(128) NOT NULL,
+  `downloadable` tinyint(1) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `netvisiontreeitems`
+--
+
+LOCK TABLES `netvisiontreeitems` WRITE;
+/*!40000 ALTER TABLE `netvisiontreeitems` DISABLE KEYS */;
+/*!40000 ALTER TABLE `netvisiontreeitems` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `networkiconmap`
+--
+
+DROP TABLE IF EXISTS `networkiconmap`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `networkiconmap` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `network` varchar(20) NOT NULL DEFAULT '',
+  `url` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `network` (`network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `networkiconmap`
+--
+
+LOCK TABLES `networkiconmap` WRITE;
+/*!40000 ALTER TABLE `networkiconmap` DISABLE KEYS */;
+/*!40000 ALTER TABLE `networkiconmap` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `newssites`
+--
+
+DROP TABLE IF EXISTS `newssites`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `newssites` (
+  `name` varchar(100) NOT NULL,
+  `category` varchar(255) NOT NULL,
+  `url` varchar(255) NOT NULL,
+  `ico` varchar(255) DEFAULT NULL,
+  `updated` int(10) unsigned DEFAULT NULL,
+  `podcast` tinyint(1) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `newssites`
+--
+
+LOCK TABLES `newssites` WRITE;
+/*!40000 ALTER TABLE `newssites` DISABLE KEYS */;
+/*!40000 ALTER TABLE `newssites` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldfind`
+--
+
+DROP TABLE IF EXISTS `oldfind`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldfind` (
+  `recordid` int(11) NOT NULL DEFAULT '0',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`recordid`,`findid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldfind`
+--
+
+LOCK TABLES `oldfind` WRITE;
+/*!40000 ALTER TABLE `oldfind` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldfind` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldprogram`
+--
+
+DROP TABLE IF EXISTS `oldprogram`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldprogram` (
+  `oldtitle` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `airdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  PRIMARY KEY (`oldtitle`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldprogram`
+--
+
+LOCK TABLES `oldprogram` WRITE;
+/*!40000 ALTER TABLE `oldprogram` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldprogram` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `oldrecorded`
+--
+
+DROP TABLE IF EXISTS `oldrecorded`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `oldrecorded` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `recordid` int(11) NOT NULL DEFAULT '0',
+  `station` varchar(20) NOT NULL DEFAULT '',
+  `rectype` int(10) unsigned NOT NULL DEFAULT '0',
+  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
+  `recstatus` int(11) NOT NULL DEFAULT '0',
+  `reactivate` smallint(6) NOT NULL DEFAULT '0',
+  `generic` tinyint(1) DEFAULT '0',
+  PRIMARY KEY (`station`,`starttime`,`title`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `recordid` (`recordid`),
+  KEY `recstatus` (`recstatus`,`programid`,`seriesid`),
+  KEY `recstatus_2` (`recstatus`,`title`,`subtitle`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `oldrecorded`
+--
+
+LOCK TABLES `oldrecorded` WRITE;
+/*!40000 ALTER TABLE `oldrecorded` DISABLE KEYS */;
+/*!40000 ALTER TABLE `oldrecorded` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `people`
+--
+
+DROP TABLE IF EXISTS `people`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `people` (
+  `person` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`person`),
+  UNIQUE KEY `name` (`name`(41))
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `people`
+--
+
+LOCK TABLES `people` WRITE;
+/*!40000 ALTER TABLE `people` DISABLE KEYS */;
+/*!40000 ALTER TABLE `people` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `phonecallhistory`
+--
+
+DROP TABLE IF EXISTS `phonecallhistory`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `phonecallhistory` (
+  `recid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `displayname` text NOT NULL,
+  `url` text NOT NULL,
+  `timestamp` text NOT NULL,
+  `duration` int(10) unsigned NOT NULL,
+  `directionin` int(10) unsigned NOT NULL,
+  `directoryref` int(10) unsigned DEFAULT NULL,
+  PRIMARY KEY (`recid`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `phonecallhistory`
+--
+
+LOCK TABLES `phonecallhistory` WRITE;
+/*!40000 ALTER TABLE `phonecallhistory` DISABLE KEYS */;
+/*!40000 ALTER TABLE `phonecallhistory` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `phonedirectory`
+--
+
+DROP TABLE IF EXISTS `phonedirectory`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `phonedirectory` (
+  `intid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `nickname` text NOT NULL,
+  `firstname` text,
+  `surname` text,
+  `url` text NOT NULL,
+  `directory` text NOT NULL,
+  `photofile` text,
+  `speeddial` int(10) unsigned NOT NULL,
+  `onhomelan` int(10) unsigned DEFAULT '0',
+  PRIMARY KEY (`intid`)
+) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `phonedirectory`
+--
+
+LOCK TABLES `phonedirectory` WRITE;
+/*!40000 ALTER TABLE `phonedirectory` DISABLE KEYS */;
+INSERT INTO `phonedirectory` VALUES (1,'Me(OLDHOSTNAME)','Local Myth Host','OLDHOSTNAME','','My MythTVs','',1,1);
+/*!40000 ALTER TABLE `phonedirectory` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `pidcache`
+--
+
+DROP TABLE IF EXISTS `pidcache`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `pidcache` (
+  `chanid` smallint(6) NOT NULL DEFAULT '0',
+  `pid` int(11) NOT NULL DEFAULT '-1',
+  `tableid` int(11) NOT NULL DEFAULT '-1',
+  KEY `chanid` (`chanid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `pidcache`
+--
+
+LOCK TABLES `pidcache` WRITE;
+/*!40000 ALTER TABLE `pidcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `pidcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `playgroup`
+--
+
+DROP TABLE IF EXISTS `playgroup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `playgroup` (
+  `name` varchar(32) NOT NULL DEFAULT '',
+  `titlematch` varchar(255) NOT NULL DEFAULT '',
+  `skipahead` int(11) NOT NULL DEFAULT '0',
+  `skipback` int(11) NOT NULL DEFAULT '0',
+  `timestretch` int(11) NOT NULL DEFAULT '0',
+  `jump` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `playgroup`
+--
+
+LOCK TABLES `playgroup` WRITE;
+/*!40000 ALTER TABLE `playgroup` DISABLE KEYS */;
+INSERT INTO `playgroup` VALUES ('Default','',30,5,100,0);
+/*!40000 ALTER TABLE `playgroup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `powerpriority`
+--
+
+DROP TABLE IF EXISTS `powerpriority`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `powerpriority` (
+  `priorityname` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `selectclause` varchar(16000) NOT NULL DEFAULT '',
+  PRIMARY KEY (`priorityname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `powerpriority`
+--
+
+LOCK TABLES `powerpriority` WRITE;
+/*!40000 ALTER TABLE `powerpriority` DISABLE KEYS */;
+/*!40000 ALTER TABLE `powerpriority` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `profilegroups`
+--
+
+DROP TABLE IF EXISTS `profilegroups`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `profilegroups` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) DEFAULT NULL,
+  `cardtype` varchar(32) NOT NULL DEFAULT 'V4L',
+  `is_default` int(1) DEFAULT '0',
+  `hostname` varchar(64) DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `name` (`name`,`hostname`),
+  KEY `cardtype` (`cardtype`)
+) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `profilegroups`
+--
+
+LOCK TABLES `profilegroups` WRITE;
+/*!40000 ALTER TABLE `profilegroups` DISABLE KEYS */;
+INSERT INTO `profilegroups` VALUES (1,'Software Encoders (v4l based)','V4L',1,NULL),(2,'MPEG-2 Encoders (PVR-x50, PVR-500)','MPEG',1,NULL),(3,'Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)','MJPEG',1,NULL),(4,'Hardware HDTV','HDTV',1,NULL),(5,'Hardware DVB Encoders','DVB',1,NULL),(6,'Transcoders','TRANSCODE',1,NULL),(7,'FireWire Input','FIREWIRE',1,NULL),(8,'USB Mpeg-4 Encoder (Plextor ConvertX, etc)','GO7007',1,NULL),(14,'Import Recorder','IMPORT',1,NULL),(10,'Freebox Input','Freebox',1,NULL),(11,'HDHomeRun Recorders','HDHOMERUN',1,NULL),(12,'CRC IP Recorders','CRC_IP',1,NULL),(13,'HD-PVR Recorders','HDPVR',1,NULL);
+/*!40000 ALTER TABLE `profilegroups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `program`
+--
+
+DROP TABLE IF EXISTS `program`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `program` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `category_type` varchar(64) NOT NULL DEFAULT '',
+  `airdate` year(4) NOT NULL DEFAULT '0000',
+  `stars` float NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
+  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
+  `stereo` tinyint(1) NOT NULL DEFAULT '0',
+  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
+  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
+  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
+  `partnumber` int(11) NOT NULL DEFAULT '0',
+  `parttotal` int(11) NOT NULL DEFAULT '0',
+  `seriesid` varchar(64) NOT NULL DEFAULT '',
+  `originalairdate` date DEFAULT NULL,
+  `showtype` varchar(30) NOT NULL DEFAULT '',
+  `colorcode` varchar(20) NOT NULL DEFAULT '',
+  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
+  `programid` varchar(64) NOT NULL DEFAULT '',
+  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
+  `generic` tinyint(1) DEFAULT '0',
+  `listingsource` int(11) NOT NULL DEFAULT '0',
+  `first` tinyint(1) NOT NULL DEFAULT '0',
+  `last` tinyint(1) NOT NULL DEFAULT '0',
+  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') CHARACTER SET latin1 NOT NULL,
+  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') CHARACTER SET latin1 NOT NULL,
+  `videoprop` set('HDTV','WIDESCREEN','AVC') CHARACTER SET latin1 NOT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `title_pronounce` (`title_pronounce`),
+  KEY `seriesid` (`seriesid`),
+  KEY `id_start_end` (`chanid`,`starttime`,`endtime`),
+  KEY `program_manualid` (`manualid`),
+  KEY `previouslyshown` (`previouslyshown`),
+  KEY `programid` (`programid`,`starttime`),
+  KEY `starttime` (`starttime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `program`
+--
+
+LOCK TABLES `program` WRITE;
+/*!40000 ALTER TABLE `program` DISABLE KEYS */;
+/*!40000 ALTER TABLE `program` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `programgenres`
+--
+
+DROP TABLE IF EXISTS `programgenres`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `programgenres` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `relevance` char(1) NOT NULL DEFAULT '',
+  `genre` varchar(30) DEFAULT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`relevance`),
+  KEY `genre` (`genre`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `programgenres`
+--
+
+LOCK TABLES `programgenres` WRITE;
+/*!40000 ALTER TABLE `programgenres` DISABLE KEYS */;
+/*!40000 ALTER TABLE `programgenres` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `programrating`
+--
+
+DROP TABLE IF EXISTS `programrating`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `programrating` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `system` varchar(8) DEFAULT NULL,
+  `rating` varchar(16) DEFAULT NULL,
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
+  KEY `starttime` (`starttime`,`system`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `programrating`
+--
+
+LOCK TABLES `programrating` WRITE;
+/*!40000 ALTER TABLE `programrating` DISABLE KEYS */;
+/*!40000 ALTER TABLE `programrating` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recgrouppassword`
+--
+
+DROP TABLE IF EXISTS `recgrouppassword`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recgrouppassword` (
+  `recgroup` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
+  `password` varchar(10) NOT NULL DEFAULT '',
+  PRIMARY KEY (`recgroup`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recgrouppassword`
+--
+
+LOCK TABLES `recgrouppassword` WRITE;
+/*!40000 ALTER TABLE `recgrouppassword` DISABLE KEYS */;
+INSERT INTO `recgrouppassword` VALUES ('All Programs','');
+/*!40000 ALTER TABLE `recgrouppassword` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `record`
+--
+
+DROP TABLE IF EXISTS `record`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `record` (
+  `recordid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `type` int(10) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned DEFAULT NULL,
+  `starttime` time NOT NULL DEFAULT '00:00:00',
+  `startdate` date NOT NULL DEFAULT '0000-00-00',
+  `endtime` time NOT NULL DEFAULT '00:00:00',
+  `enddate` date NOT NULL DEFAULT '0000-00-00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `profile` varchar(128) NOT NULL DEFAULT 'Default',
+  `recpriority` int(10) NOT NULL DEFAULT '0',
+  `autoexpire` int(11) NOT NULL DEFAULT '0',
+  `maxepisodes` int(11) NOT NULL DEFAULT '0',
+  `maxnewest` int(11) NOT NULL DEFAULT '0',
+  `startoffset` int(11) NOT NULL DEFAULT '0',
+  `endoffset` int(11) NOT NULL DEFAULT '0',
+  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `dupmethod` int(11) NOT NULL DEFAULT '6',
+  `dupin` int(11) NOT NULL DEFAULT '15',
+  `station` varchar(20) NOT NULL DEFAULT '',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `search` int(10) unsigned NOT NULL DEFAULT '0',
+  `autotranscode` tinyint(1) NOT NULL DEFAULT '0',
+  `autocommflag` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob1` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob2` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob3` tinyint(1) NOT NULL DEFAULT '0',
+  `autouserjob4` tinyint(1) NOT NULL DEFAULT '0',
+  `findday` tinyint(4) NOT NULL DEFAULT '0',
+  `findtime` time NOT NULL DEFAULT '00:00:00',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `inactive` tinyint(1) NOT NULL DEFAULT '0',
+  `parentid` int(11) NOT NULL DEFAULT '0',
+  `transcoder` int(11) NOT NULL DEFAULT '0',
+  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `prefinput` int(10) NOT NULL DEFAULT '0',
+  `next_record` datetime NOT NULL,
+  `last_record` datetime NOT NULL,
+  `last_delete` datetime NOT NULL,
+  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `avg_delay` int(11) NOT NULL DEFAULT '100',
+  PRIMARY KEY (`recordid`),
+  KEY `chanid` (`chanid`,`starttime`),
+  KEY `title` (`title`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `maxepisodes` (`maxepisodes`),
+  KEY `search` (`search`),
+  KEY `type` (`type`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `record`
+--
+
+LOCK TABLES `record` WRITE;
+/*!40000 ALTER TABLE `record` DISABLE KEYS */;
+/*!40000 ALTER TABLE `record` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recorded`
+--
+
+DROP TABLE IF EXISTS `recorded`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recorded` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `hostname` varchar(64) NOT NULL DEFAULT '',
+  `bookmark` tinyint(1) NOT NULL DEFAULT '0',
+  `editing` int(10) unsigned NOT NULL DEFAULT '0',
+  `cutlist` tinyint(1) NOT NULL DEFAULT '0',
+  `autoexpire` int(11) NOT NULL DEFAULT '0',
+  `commflagged` int(10) unsigned NOT NULL DEFAULT '0',
+  `recgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `recordid` int(11) DEFAULT NULL,
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `lastmodified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `filesize` bigint(20) NOT NULL DEFAULT '0',
+  `stars` float NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(1) DEFAULT '0',
+  `originalairdate` date DEFAULT NULL,
+  `preserve` tinyint(1) NOT NULL DEFAULT '0',
+  `findid` int(11) NOT NULL DEFAULT '0',
+  `deletepending` tinyint(1) NOT NULL DEFAULT '0',
+  `transcoder` int(11) NOT NULL DEFAULT '0',
+  `timestretch` float NOT NULL DEFAULT '1',
+  `recpriority` int(11) NOT NULL DEFAULT '0',
+  `basename` varchar(255) NOT NULL,
+  `progstart` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `progend` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `playgroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `profile` varchar(32) NOT NULL DEFAULT '',
+  `duplicate` tinyint(1) NOT NULL DEFAULT '0',
+  `transcoded` tinyint(1) NOT NULL DEFAULT '0',
+  `watched` tinyint(4) NOT NULL DEFAULT '0',
+  `storagegroup` varchar(32) NOT NULL DEFAULT 'Default',
+  `bookmarkupdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+  PRIMARY KEY (`chanid`,`starttime`),
+  KEY `endtime` (`endtime`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `title` (`title`),
+  KEY `recordid` (`recordid`),
+  KEY `deletepending` (`deletepending`,`lastmodified`),
+  KEY `recgroup` (`recgroup`,`endtime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recorded`
+--
+
+LOCK TABLES `recorded` WRITE;
+/*!40000 ALTER TABLE `recorded` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recorded` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedcredits`
+--
+
+DROP TABLE IF EXISTS `recordedcredits`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedcredits` (
+  `person` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `role` set('actor','director','producer','executive_producer','writer','guest_star','host','adapter','presenter','commentator','guest') CHARACTER SET latin1 NOT NULL DEFAULT '',
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`person`,`role`),
+  KEY `person` (`person`,`role`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedcredits`
+--
+
+LOCK TABLES `recordedcredits` WRITE;
+/*!40000 ALTER TABLE `recordedcredits` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedcredits` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedfile`
+--
+
+DROP TABLE IF EXISTS `recordedfile`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedfile` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `basename` varchar(128) NOT NULL DEFAULT '',
+  `filesize` bigint(20) NOT NULL DEFAULT '0',
+  `width` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `height` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `fps` float(6,3) NOT NULL DEFAULT '0.000',
+  `aspect` float(8,6) NOT NULL DEFAULT '0.000000',
+  `audio_sample_rate` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `audio_bits_per_sample` smallint(5) unsigned NOT NULL DEFAULT '0',
+  `audio_channels` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `audio_type` varchar(255) NOT NULL DEFAULT '',
+  `video_type` varchar(255) NOT NULL DEFAULT '',
+  `comment` varchar(255) NOT NULL DEFAULT '',
+  `hostname` varchar(64) NOT NULL,
+  `storagegroup` varchar(32) NOT NULL,
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`basename`),
+  KEY `basename` (`basename`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedfile`
+--
+
+LOCK TABLES `recordedfile` WRITE;
+/*!40000 ALTER TABLE `recordedfile` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedfile` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedmarkup`
+--
+
+DROP TABLE IF EXISTS `recordedmarkup`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedmarkup` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  `data` int(11) unsigned DEFAULT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedmarkup`
+--
+
+LOCK TABLES `recordedmarkup` WRITE;
+/*!40000 ALTER TABLE `recordedmarkup` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedmarkup` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedprogram`
+--
+
+DROP TABLE IF EXISTS `recordedprogram`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedprogram` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `title` varchar(128) NOT NULL DEFAULT '',
+  `subtitle` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(16000) NOT NULL DEFAULT '',
+  `category` varchar(64) NOT NULL DEFAULT '',
+  `category_type` varchar(64) NOT NULL DEFAULT '',
+  `airdate` year(4) NOT NULL DEFAULT '0000',
+  `stars` float unsigned NOT NULL DEFAULT '0',
+  `previouslyshown` tinyint(4) NOT NULL DEFAULT '0',
+  `title_pronounce` varchar(128) NOT NULL DEFAULT '',
+  `stereo` tinyint(1) NOT NULL DEFAULT '0',
+  `subtitled` tinyint(1) NOT NULL DEFAULT '0',
+  `hdtv` tinyint(1) NOT NULL DEFAULT '0',
+  `closecaptioned` tinyint(1) NOT NULL DEFAULT '0',
+  `partnumber` int(11) NOT NULL DEFAULT '0',
+  `parttotal` int(11) NOT NULL DEFAULT '0',
+  `seriesid` varchar(40) NOT NULL DEFAULT '',
+  `originalairdate` date DEFAULT NULL,
+  `showtype` varchar(30) NOT NULL DEFAULT '',
+  `colorcode` varchar(20) NOT NULL DEFAULT '',
+  `syndicatedepisodenumber` varchar(20) NOT NULL DEFAULT '',
+  `programid` varchar(40) NOT NULL DEFAULT '',
+  `manualid` int(10) unsigned NOT NULL DEFAULT '0',
+  `generic` tinyint(1) DEFAULT '0',
+  `listingsource` int(11) NOT NULL DEFAULT '0',
+  `first` tinyint(1) NOT NULL DEFAULT '0',
+  `last` tinyint(1) NOT NULL DEFAULT '0',
+  `audioprop` set('STEREO','MONO','SURROUND','DOLBY','HARDHEAR','VISUALIMPAIR') CHARACTER SET latin1 NOT NULL,
+  `subtitletypes` set('HARDHEAR','NORMAL','ONSCREEN','SIGNED') CHARACTER SET latin1 NOT NULL,
+  `videoprop` set('HDTV','WIDESCREEN','AVC','720','1080') NOT NULL,
+  PRIMARY KEY (`chanid`,`starttime`,`manualid`),
+  KEY `endtime` (`endtime`),
+  KEY `title` (`title`),
+  KEY `title_pronounce` (`title_pronounce`),
+  KEY `seriesid` (`seriesid`),
+  KEY `programid` (`programid`),
+  KEY `id_start_end` (`chanid`,`starttime`,`endtime`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedprogram`
+--
+
+LOCK TABLES `recordedprogram` WRITE;
+/*!40000 ALTER TABLE `recordedprogram` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedprogram` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedrating`
+--
+
+DROP TABLE IF EXISTS `recordedrating`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedrating` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `system` varchar(8) DEFAULT NULL,
+  `rating` varchar(16) DEFAULT NULL,
+  UNIQUE KEY `chanid` (`chanid`,`starttime`,`system`,`rating`),
+  KEY `starttime` (`starttime`,`system`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedrating`
+--
+
+LOCK TABLES `recordedrating` WRITE;
+/*!40000 ALTER TABLE `recordedrating` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedrating` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordedseek`
+--
+
+DROP TABLE IF EXISTS `recordedseek`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordedseek` (
+  `chanid` int(10) unsigned NOT NULL DEFAULT '0',
+  `starttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+  `mark` mediumint(8) unsigned NOT NULL DEFAULT '0',
+  `offset` bigint(20) unsigned NOT NULL,
+  `type` tinyint(4) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`chanid`,`starttime`,`type`,`mark`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordedseek`
+--
+
+LOCK TABLES `recordedseek` WRITE;
+/*!40000 ALTER TABLE `recordedseek` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordedseek` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordingprofiles`
+--
+
+DROP TABLE IF EXISTS `recordingprofiles`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordingprofiles` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `name` varchar(128) DEFAULT NULL,
+  `videocodec` varchar(128) DEFAULT NULL,
+  `audiocodec` varchar(128) DEFAULT NULL,
+  `profilegroup` int(10) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`),
+  KEY `profilegroup` (`profilegroup`)
+) ENGINE=MyISAM AUTO_INCREMENT=58 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordingprofiles`
+--
+
+LOCK TABLES `recordingprofiles` WRITE;
+/*!40000 ALTER TABLE `recordingprofiles` DISABLE KEYS */;
+INSERT INTO `recordingprofiles` VALUES (1,'Default',NULL,NULL,1),(2,'Live TV',NULL,NULL,1),(3,'High Quality',NULL,NULL,1),(4,'Low Quality',NULL,NULL,1),(5,'Default',NULL,NULL,2),(6,'Live TV',NULL,NULL,2),(7,'High Quality',NULL,NULL,2),(8,'Low Quality',NULL,NULL,2),(9,'Default',NULL,NULL,3),(10,'Live TV',NULL,NULL,3),(11,'High Quality',NULL,NULL,3),(12,'Low Quality',NULL,NULL,3),(13,'Default',NULL,NULL,4),(14,'Live TV',NULL,NULL,4),(15,'High Quality',NULL,NULL,4),(16,'Low Quality',NULL,NULL,4),(17,'Default',NULL,NULL,5),(18,'Live TV',NULL,NULL,5),(19,'High Quality',NULL,NULL,5),(20,'Low Quality',NULL,NULL,5),(21,'RTjpeg/MPEG4',NULL,NULL,6),(22,'MPEG2',NULL,NULL,6),(23,'Default',NULL,NULL,8),(24,'Live TV',NULL,NULL,8),(25,'High Quality',NULL,NULL,8),(26,'Low Quality',NULL,NULL,8),(27,'High Quality',NULL,NULL,6),(28,'Medium Quality',NULL,NULL,6),(29,'Low Quality',NULL,NULL,6),(30,'Default',NULL,NULL,10),(31,'Live TV',NULL,NULL,10),(32,'High Quality',NULL,NULL,10),(33,'Low Quality',NULL,NULL,10),(34,'Default',NULL,NULL,11),(35,'Live TV',NULL,NULL,11),(36,'High Quality',NULL,NULL,11),(37,'Low Quality',NULL,NULL,11),(38,'Default',NULL,NULL,12),(39,'Live TV',NULL,NULL,12),(40,'High Quality',NULL,NULL,12),(41,'Low Quality',NULL,NULL,12),(42,'Default',NULL,NULL,7),(43,'Live TV',NULL,NULL,7),(44,'High Quality',NULL,NULL,7),(45,'Low Quality',NULL,NULL,7),(46,'Default',NULL,NULL,9),(47,'Live TV',NULL,NULL,9),(48,'High Quality',NULL,NULL,9),(49,'Low Quality',NULL,NULL,9),(50,'Default',NULL,NULL,13),(51,'Live TV',NULL,NULL,13),(52,'High Quality',NULL,NULL,13),(53,'Low Quality',NULL,NULL,13),(54,'Default',NULL,NULL,14),(55,'Live TV',NULL,NULL,14),(56,'High Quality',NULL,NULL,14),(57,'Low Quality',NULL,NULL,14);
+/*!40000 ALTER TABLE `recordingprofiles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `recordmatch`
+--
+
+DROP TABLE IF EXISTS `recordmatch`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `recordmatch` (
+  `recordid` int(10) unsigned DEFAULT NULL,
+  `chanid` int(10) unsigned DEFAULT NULL,
+  `starttime` datetime DEFAULT NULL,
+  `manualid` int(10) unsigned DEFAULT NULL,
+  `oldrecduplicate` tinyint(1) DEFAULT NULL,
+  `recduplicate` tinyint(1) DEFAULT NULL,
+  `findduplicate` tinyint(1) DEFAULT NULL,
+  `oldrecstatus` int(11) DEFAULT NULL,
+  KEY `recordid` (`recordid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `recordmatch`
+--
+
+LOCK TABLES `recordmatch` WRITE;
+/*!40000 ALTER TABLE `recordmatch` DISABLE KEYS */;
+/*!40000 ALTER TABLE `recordmatch` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `romdb`
+--
+
+DROP TABLE IF EXISTS `romdb`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `romdb` (
+  `crc` varchar(64) NOT NULL DEFAULT '',
+  `name` varchar(128) NOT NULL DEFAULT '',
+  `description` varchar(128) NOT NULL DEFAULT '',
+  `category` varchar(128) NOT NULL DEFAULT '',
+  `year` varchar(10) NOT NULL DEFAULT '',
+  `manufacturer` varchar(128) NOT NULL DEFAULT '',
+  `country` varchar(128) NOT NULL DEFAULT '',
+  `publisher` varchar(128) NOT NULL DEFAULT '',
+  `platform` varchar(64) NOT NULL DEFAULT '',
+  `filesize` int(12) DEFAULT NULL,
+  `flags` varchar(64) NOT NULL DEFAULT '',
+  `version` varchar(64) NOT NULL DEFAULT '',
+  `binfile` varchar(64) NOT NULL DEFAULT '',
+  KEY `crc` (`crc`),
+  KEY `year` (`year`),
+  KEY `category` (`category`),
+  KEY `name` (`name`),
+  KEY `description` (`description`),
+  KEY `platform` (`platform`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `romdb`
+--
+
+LOCK TABLES `romdb` WRITE;
+/*!40000 ALTER TABLE `romdb` DISABLE KEYS */;
+/*!40000 ALTER TABLE `romdb` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `schemalock`
+--
+
+DROP TABLE IF EXISTS `schemalock`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `schemalock` (
+  `schemalock` int(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `schemalock`
+--
+
+LOCK TABLES `schemalock` WRITE;
+/*!40000 ALTER TABLE `schemalock` DISABLE KEYS */;
+/*!40000 ALTER TABLE `schemalock` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `settings`
+--
+
+DROP TABLE IF EXISTS `settings`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `settings` (
+  `value` varchar(128) NOT NULL DEFAULT '',
+  `data` varchar(16000) NOT NULL DEFAULT '',
+  `hostname` varchar(64) DEFAULT NULL,
+  KEY `value` (`value`,`hostname`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `settings`
+--
+
+LOCK TABLES `settings` WRITE;
+/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
+INSERT INTO `settings` VALUES ('mythfilldatabaseLastRunStart','',NULL),('mythfilldatabaseLastRunEnd','',NULL),('mythfilldatabaseLastRunStatus','',NULL),('DataDirectMessage','',NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1264',NULL),('DefaultTranscoder','0',NULL),('MythFillSuggestedRunTime','1970-01-01T00:00:00',NULL),('MythFillGrabberSuggestsTime','1',NULL),('BackendServerIP','127.0.0.1','OLDHOSTNAME'),('BackendServerPort','6543','OLDHOSTNAME'),('BackendStatusPort','6544','OLDHOSTNAME'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('RecordFilePrefix','/var/lib/mythtv/recordings','OLDHOSTNAME'),('TruncateDeletesSlowly','1','OLDHOSTNAME'),('TVFormat','NTSC',NULL),('VbiFormat','None',NULL),('FreqTable','us-bcast',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','0',NULL),('EITTimeOffset','Auto',NULL),('EITTransportTimeout','5',NULL),('EITIgnoresSource','0',NULL),('EITCrawIdleStart','60',NULL),('startupCommand','',NULL),('blockSDWUwithoutClient','1',NULL),('idleTimeoutSecs','0',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('SetWakeuptimeCommand','',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('preSDWUCheckCommand','',NULL),('WOLbackendReconnectWaitTime','0',NULL),('WOLbackendConnectRetry','5',NULL),('WOLbackendCommand','',NULL),('WOLslaveBackendsCommand','',NULL),('JobQueueMaxSimultaneousJobs','1','OLDHOSTNAME'),('JobQueueCheckFrequency','60','OLDHOSTNAME'),('JobQueueWindowStart','00:00','OLDHOSTNAME'),('JobQueueWindowEnd','23:59','OLDHOSTNAME'),('JobQueueCPU','0','OLDHOSTNAME'),('JobAllowCommFlag','1','OLDHOSTNAME'),('JobAllowTranscode','1','OLDHOSTNAME'),('JobAllowUserJob1','0','OLDHOSTNAME'),('JobAllowUserJob2','0','OLDHOSTNAME'),('JobAllowUserJob3','0','OLDHOSTNAME'),('JobAllowUserJob4','0','OLDHOSTNAME'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJob1','',NULL),('UserJobDesc2','User Job #2',NULL),('UserJob2','',NULL),('UserJobDesc3','User Job #3',NULL),('UserJob3','',NULL),('UserJobDesc4','User Job #4',NULL),('UserJob4','',NULL),('upnp:UDN:urn:schemas-upnp-org:device:MediaServer:1','256a89b4-1266-49ca-9ac7-f0b4b4641e7f','OLDHOSTNAME'),('Deinterlace','0','OLDHOSTNAME'),('DeinterlaceFilter','linearblend','OLDHOSTNAME'),('CustomFilters','','OLDHOSTNAME'),('PreferredMPEG2Decoder','ffmpeg','OLDHOSTNAME'),('UseOpenGLVSync','0','OLDHOSTNAME'),('RealtimePriority','1','OLDHOSTNAME'),('UseVideoTimebase','0','OLDHOSTNAME'),('DecodeExtraAudio','1','OLDHOSTNAME'),('AspectOverride','0','OLDHOSTNAME'),('PIPLocation','0','OLDHOSTNAME'),('PlaybackExitPrompt','0','OLDHOSTNAME'),('EndOfRecordingExitPrompt','0','OLDHOSTNAME'),('ClearSavedPosition','1','OLDHOSTNAME'),('AltClearSavedPosition','1','OLDHOSTNAME'),('UseOutputPictureControls','0','OLDHOSTNAME'),('AudioNag','1','OLDHOSTNAME'),('UDPNotifyPort','6948','OLDHOSTNAME'),('PlayBoxOrdering','1','OLDHOSTNAME'),('PlayBoxEpisodeSort','Date','OLDHOSTNAME'),('GeneratePreviewPixmaps','0','OLDHOSTNAME'),('PreviewPixmapOffset','64',NULL),('PreviewFromBookmark','1','OLDHOSTNAME'),('PlaybackPreview','1','OLDHOSTNAME'),('PlaybackPreviewLowCPU','0','OLDHOSTNAME'),('PlaybackBoxStartInTitle','1','OLDHOSTNAME'),('ShowGroupInfo','0','OLDHOSTNAME'),('OSDSubFont','FreeSans','test-virtualbox'),('DisplayRecGroup','All Programs','OLDHOSTNAME'),('QueryInitialFilter','0','OLDHOSTNAME'),('RememberRecGroup','1','OLDHOSTNAME'),('DispRecGroupAsAllProg','0','OLDHOSTNAME'),('LiveTVInAllPrograms','0','OLDHOSTNAME'),('DisplayGroupDefaultView','0','OLDHOSTNAME'),('DisplayGroupTitleSort','0','OLDHOSTNAME'),('PVR350OutputEnable','0','OLDHOSTNAME'),('PVR350VideoDev','/dev/video16','OLDHOSTNAME'),('PVR350EPGAlphaValue','164','OLDHOSTNAME'),('PVR350InternalAudioOnly','0','OLDHOSTNAME'),('SmartForward','0','OLDHOSTNAME'),('StickyKeys','0','OLDHOSTNAME'),('FFRewReposTime','100','OLDHOSTNAME'),('FFRewReverse','1','OLDHOSTNAME'),('ExactSeeking','0','OLDHOSTNAME'),('AutoCommercialSkip','0','OLDHOSTNAME'),('CommRewindAmount','0','OLDHOSTNAME'),('CommNotifyAmount','0','OLDHOSTNAME'),('MaximumCommercialSkip','3600',NULL),('CommSkipAllBlanks','1',NULL),('VertScanPercentage','0','OLDHOSTNAME'),('HorizScanPercentage','0','OLDHOSTNAME'),('XScanDisplacement','0','OLDHOSTNAME'),('YScanDisplacement','0','OLDHOSTNAME'),('OSDTheme','BlackCurves-OSD','OLDHOSTNAME'),('OSDGeneralTimeout','2','OLDHOSTNAME'),('OSDProgramInfoTimeout','3','OLDHOSTNAME'),('OSDNotifyTimeout','5','OLDHOSTNAME'),('OSDFont','FreeMono.ttf','OLDHOSTNAME'),('OSDCCFont','FreeMono.ttf','OLDHOSTNAME'),('OSDThemeFontSizeType','default','OLDHOSTNAME'),('CCBackground','0','OLDHOSTNAME'),('DefaultCCMode','0','OLDHOSTNAME'),('PersistentBrowseMode','1','OLDHOSTNAME'),('EnableMHEG','0','OLDHOSTNAME'),('OSDCC708TextZoom','100','OLDHOSTNAME'),('OSDCC708DefaultFontType','MonoSerif','OLDHOSTNAME'),('OSDCC708MonoSerifFont','FreeMono.ttf','OLDHOSTNAME'),('OSDCC708PropSerifFont','FreeMono.ttf','OLDHOSTNAME'),('OSDCC708MonoSansSerifFont','FreeMono.ttf','OLDHOSTNAME'),('OSDCC708PropSa