From 115cadecb464d5fd48af6ddb56774bae80cc4b59 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 2 Oct 2014 13:19:45 +0000
Subject: mythtv: remove old stable-0.25

---
 .../mythtv/stable-0.25/git_src/checkout_mythtv.sh  |   40 -
 .../mythtv/stable-0.25/git_src/checkout_mythweb.sh |   38 -
 abs/core/mythtv/stable-0.25/git_src/git_hash       |    1 -
 abs/core/mythtv/stable-0.25/git_src/git_hash_web   |    1 -
 abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD   |  135 --
 .../mythtv/stable-0.25/mythplugins/__changelog     |    1 -
 .../stable-0.25/mythplugins/mythburn.py.patch      |  285 ---
 .../mythplugins/mythplugins-mythzoneminder.install |   11 -
 ...tect-metadata-loads-from-multiple-threads.patch |   52 -
 ...e-fe-netcontrol-play-resume-functionality.patch |   27 -
 .../mythtv/stable-0.25/mythtv/MythBase.php.patch   |   19 -
 abs/core/mythtv/stable-0.25/mythtv/PKGBUILD        |  172 --
 abs/core/mythtv/stable-0.25/mythtv/__changelog     |    5 -
 .../stable-0.25/mythtv/bonjour-correction.patch    |   32 -
 .../mythtv/stable-0.25/mythtv/git_version.patch    |   13 -
 .../stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml  |   98 -
 .../stable-0.25/mythtv/menu-xml/dvd_backup.xml     |   39 -
 .../mythtv/stable-0.25/mythtv/menu-xml/game.xml    |   12 -
 .../stable-0.25/mythtv/menu-xml/info_menu.xml      |   76 -
 abs/core/mythtv/stable-0.25/mythtv/menu-xml/is.xml |    3 -
 .../stable-0.25/mythtv/menu-xml/library.xml.patch  |   26 -
 .../mythtv/stable-0.25/mythtv/menu-xml/linhes.xml  |   60 -
 .../stable-0.25/mythtv/menu-xml/mainmenu.xml.patch |   37 -
 .../stable-0.25/mythtv/menu-xml/mythbackup.xml     |   20 -
 .../stable-0.25/mythtv/menu-xml/mythrestore.xml    |   21 -
 .../mythtv/menu-xml/optical_menu.xml.patch         |   23 -
 .../mythtv/menu-xml/original/create_patch.sh       |    5 -
 .../stable-0.25/mythtv/menu-xml/siriusmenu.xml     |  419 -----
 .../mythtv/stable-0.25/mythtv/menu-xml/update.xml  |    9 -
 .../mythtv/stable-0.25/mythtv/menu-xml/update2.xml |   20 -
 .../mythtv/menu-xml/util_menu.xml.patch            |   16 -
 .../mythtv/stable-0.25/mythtv/menu-xml/xmmenu.xml  |  574 ------
 abs/core/mythtv/stable-0.25/mythtv/myth.sh         |    4 -
 .../mythtv/stable-0.25/mythtv/myth_settings.patch  | 1981 --------------------
 abs/core/mythtv/stable-0.25/mythtv/mythbackend     |   38 -
 abs/core/mythtv/stable-0.25/mythtv/mythbackend.lr  |    9 -
 abs/core/mythtv/stable-0.25/mythtv/mythbackend.sh  |  117 --
 abs/core/mythtv/stable-0.25/mythtv/mythfrontend.lr |    9 -
 abs/core/mythtv/stable-0.25/mythtv/mythtv.install  |   25 -
 abs/core/mythtv/stable-0.25/mythtv/pretty          |    9 -
 .../mythtv/stable-0.25/mythtv/smolt_jump.patch     |   10 -
 abs/core/mythtv/stable-0.25/mythtv/tmdb3.py        |  278 ---
 .../mythtv/stable-0.25/mythtv/tmdb3_db_update.py   |   47 -
 abs/core/mythtv/stable-0.25/mythweb/PKGBUILD       |   77 -
 .../mythtv/stable-0.25/mythweb/mythweb.include     |    8 -
 .../mythtv/stable-0.25/mythweb/mythweb.install     |   18 -
 .../stable-0.25/mythweb/mythweb_gen_light.conf     |    1 -
 .../mythtv/stable-0.25/mythweb/schedules.php.patch |   16 -
 .../mythtv/stable-0.25/mythweb/sorting.php.patch   |   19 -
 .../stable-0.25/mythweb/tv-schedules.php.patch     |   15 -
 50 files changed, 4971 deletions(-)
 delete mode 100644 abs/core/mythtv/stable-0.25/git_src/checkout_mythtv.sh
 delete mode 100644 abs/core/mythtv/stable-0.25/git_src/checkout_mythweb.sh
 delete mode 100644 abs/core/mythtv/stable-0.25/git_src/git_hash
 delete mode 100644 abs/core/mythtv/stable-0.25/git_src/git_hash_web
 delete mode 100644 abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD
 delete mode 100644 abs/core/mythtv/stable-0.25/mythplugins/__changelog
 delete mode 100644 abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/__changelog
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/git_version.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/game.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/is.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/original/create_patch.sh
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/siriusmenu.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/update.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/update2.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/util_menu.xml.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/menu-xml/xmmenu.xml
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/myth.sh
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/mythbackend
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/mythbackend.lr
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/mythbackend.sh
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/mythfrontend.lr
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/mythtv.install
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/pretty
 delete mode 100644 abs/core/mythtv/stable-0.25/mythtv/smolt_jump.patch
 delete mode 100755 abs/core/mythtv/stable-0.25/mythtv/tmdb3.py
 delete mode 100755 abs/core/mythtv/stable-0.25/mythtv/tmdb3_db_update.py
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/PKGBUILD
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/mythweb.include
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/mythweb.install
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch
 delete mode 100644 abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch

diff --git a/abs/core/mythtv/stable-0.25/git_src/checkout_mythtv.sh b/abs/core/mythtv/stable-0.25/git_src/checkout_mythtv.sh
deleted file mode 100644
index 2dc923a..0000000
--- a/abs/core/mythtv/stable-0.25/git_src/checkout_mythtv.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-#Quick script used to checkout the MythTV source
-#This source should be used build all mythplugins & main program
-#76df8e6c8f7b84a157607d8c25fd19f39d8dc830
-_gitroot="https://github.com/MythTV/mythtv.git"
-_gitname="mythtv"
-startdir=`pwd`
-#Set this to True, to update mythtv to the latest.
-#If not true then it will use the hash stored in git_hash
-_current="True"
-
-_checkoutHASH=`cat git_hash`
-
-if [ -d $_gitname ]
-then
-    cd $_gitname 
-    git checkout fixes/0.25 
-    git pull
-    echo "The local files are updated."
-else
-    git clone -b fixes/0.25 $_gitroot
-fi
-
-if [ -d $_gitname ]
-then
-    cd $_gitname 
-    if [ $_current == True ]
-    then
-        git rev-parse HEAD > $startdir/git_hash
-    else
-        git checkout $_checkoutHASH
-    fi
-    pwd
-    ls
-#    cd $_gitname
-    sh ./version.sh `pwd`
-fi
-echo "GIT checkout done or server timeout"
-
-
diff --git a/abs/core/mythtv/stable-0.25/git_src/checkout_mythweb.sh b/abs/core/mythtv/stable-0.25/git_src/checkout_mythweb.sh
deleted file mode 100644
index 6e8e67e..0000000
--- a/abs/core/mythtv/stable-0.25/git_src/checkout_mythweb.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-#Quick script used to checkout the Mythweb source
-#This source should be used build all mythplugins & main program
-#76df8e6c8f7b84a157607d8c25fd19f39d8dc830
-_gitroot="https://github.com/MythTV/mythweb.git"
-_gitname="mythweb"
-startdir=`pwd`
-#Set this to True, to update mythtv to the latest.
-#If not true then it will use the hash stored in git_hash
-_current="True"
-
-_checkoutHASH=`cat git_hash_web`
-
-if [ -d $_gitname ]
-then
-    cd $_gitname 
-    git checkout fixes/0.25 
-    git pull
-    echo "The local files are updated."
-else
-    git clone -b fixes/0.25 $_gitroot
-fi
-
-if [ -d $_gitname ]
-then
-    cd $_gitname 
-    if [ $_current == True ]
-    then
-        git rev-parse HEAD > $startdir/git_hash_web
-    else
-        git checkout $_checkoutHASH
-    fi
-    pwd
-    ls
-fi
-echo "GIT checkout done or server timeout"
-
-
diff --git a/abs/core/mythtv/stable-0.25/git_src/git_hash b/abs/core/mythtv/stable-0.25/git_src/git_hash
deleted file mode 100644
index 0d4d167..0000000
--- a/abs/core/mythtv/stable-0.25/git_src/git_hash
+++ /dev/null
@@ -1 +0,0 @@
-b5adf034713acfd1923eecad2f96c43be688d0d0
diff --git a/abs/core/mythtv/stable-0.25/git_src/git_hash_web b/abs/core/mythtv/stable-0.25/git_src/git_hash_web
deleted file mode 100644
index 04176fb..0000000
--- a/abs/core/mythtv/stable-0.25/git_src/git_hash_web
+++ /dev/null
@@ -1 +0,0 @@
-48778a639409bc591ee4a6ab4bec543da94e66c1
diff --git a/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD b/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD
deleted file mode 100644
index 7278249..0000000
--- a/abs/core/mythtv/stable-0.25/mythplugins/PKGBUILD
+++ /dev/null
@@ -1,135 +0,0 @@
-# $Id: PKGBUILD 91281 2010-09-26 06:04:21Z remy $
-# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
-
-pkgbase=mythplugins
-pkgname=('mytharchive'
-         'mythbrowser'
-         'mythgallery'
-         'mythgame'
-         'mythmusic'
-         'mythnetvision'
-         'mythnews'
-         'mythweather'
-         'mythzoneminder')
-pkgver=0.25
-pkgrel=19
-
-arch=('i686' 'x86_64')
-url="http://www.mythtv.org"
-license=('GPL')
-conflicts=('mythmovies')
-makedepends=("mythtv>=${pkgver}" 'mplayer' 'fftw2' 'dvdauthor' 'libexif'
-             'python-imaging' 'libcdaudio' 'taglib' 'perl-xml-simple' 'dcraw'
-             'libvisual' 'perl-xml-xpath' 'perl-image-size' 'perl-json'
-             'perl-class-inspector' 'perl-datetime-format-iso8601'
-             'flac' 'libvorbis' 'python2' 'python-pycurl' 'python-oauth'
-             'libcdio' 'fftw')
-
-source=(mythburn.py.patch)
-
-
-#_gitroot="https://github.com/MythTV/mythtv.git"
-#_gitname="mythplugins"
-
-build() {
-
- if [ -e ${srcdir}/mythplugins ]
-    then
-        rm -rf ${srcdir}/mythplugins
-    fi
-
-    cd ${startdir}
-    msg "copy in myth plugins src"
-    cp -rp ../git_src/mythtv/mythplugins $srcdir
-    cd ${srcdir}/${pkgbase}
-
-
-
-  msg "The local files are updated."
-  #find . -name '*.py' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
-  cd ${srcdir}/${pkgbase}
-  ./configure --prefix=/usr \
-              --enable-all --python=/usr/bin/python2
-
-  qmake mythplugins.pro || return 1
-  make || return 1
-}
-
-package_mytharchive() {
-  pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows"
-  depends=("mythtv>=${pkgver}" 'libxmu' 'pil' 'dvdauthor' 'm2vrequantiser' 'mjpegtools' 'cdrkit' 'dvd+rw-tools')
-#  replaces=('mytharchive')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
-
-  patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py.patch || return 1
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythbrowser() {
-  pkgdesc="Mini web browser for MythTV"
-  depends=("mythtv>=${pkgver}")
-#  replaces=('mythbrowser')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythbrowser"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythgallery() {
-  pkgdesc="Image gallery plugin for MythTV"
-  depends=("mythtv>=${pkgver}" 'libexif')
-#  replaces=('mythgallery')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythgallery"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythgame() {
-  pkgdesc="Game emulator module for MythTV"
-  depends=("mythtv>=${pkgver}" 'zlib')
-#  replaces=('mythgame')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythgame"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythmusic() {
-  pkgdesc="Music playing plugin for MythTV"
-  depends=("mythtv>=${pkgver}" 'flac' 'libvorbis' 'libcdaudio' 'cdparanoia' 'taglib' 'libvisual-plugins' 'libcdio' 'fftw' )
-#  replaces=('mythmusic')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythmusic"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythnetvision() {
-  pkgdesc="MythNetvision plugin for MythTV"
-  depends=("mythtv>=${pkgver}" 'python-pycurl' 'python-oauth'  'python2-lxml' 'python2' )
-#  replaces=('mythnetvision')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythnetvision"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythnews() {
-  pkgdesc="News checking plugin for MythTV"
-  depends=("mythtv>=${pkgver}")
-#  replaces=('mythnews')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythnews"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythweather() {
-  pkgdesc="Weather checking plugin for MythTV"
-  depends=("mythtv>=${pkgver}" 'perl-xml-xpath' 'perl-image-size'
-           'perl-class-inspector' 'perl-datetime-format-iso8601'
-           'perl-date-manip' 'perl-json')
-#  replaces=('mythweather')
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythweather"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-package_mythzoneminder() {
-  pkgdesc="Allows for viewing of CCTV cameras through zoneminder"
-  depends=("mythtv>=${pkgver}")
-#  replaces=('mythzoneminder')
-#  install=mythplugins-mythzoneminder.install
-  cd "${srcdir}/${_gitname}/${pkgbase}/mythzoneminder"
-  make INSTALL_ROOT="${pkgdir}" install || return 1
-}
-
-md5sums=('19446f65722769926bafad220bbc6551')
diff --git a/abs/core/mythtv/stable-0.25/mythplugins/__changelog b/abs/core/mythtv/stable-0.25/mythplugins/__changelog
deleted file mode 100644
index 48cdce8..0000000
--- a/abs/core/mythtv/stable-0.25/mythplugins/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-placeholder
diff --git a/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch b/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch
deleted file mode 100644
index 380385b..0000000
--- a/abs/core/mythtv/stable-0.25/mythplugins/mythburn.py.patch
+++ /dev/null
@@ -1,285 +0,0 @@
---- mythburn.py.orig	2012-12-16 15:23:41.000000000 -0600
-+++ mythburn.py	2012-12-18 14:23:56.000000000 -0600
-@@ -44,7 +44,7 @@
- 
- 
- # version of script - change after each update
--VERSION="0.1.20120304-1"
-+VERSION="0.1.20121218-1"
- 
- # keep all temporary files for debugging purposes
- # set this to True before a first run through when testing
-@@ -93,6 +93,7 @@
- from fcntl import ioctl
- import CDROM
- from shutil import copy
-+from subprocess import Popen, PIPE
- 
- import MythTV
- from MythTV.altdict import OrdDict
-@@ -425,7 +426,7 @@
-                 os.remove(os.path.join(root, name))
- 
- #############################################################
--# Romoves all the objects from a directory
-+# Removes all the objects from a directory
- 
- def deleteEverythingInFolder(folder):
-     for root, dirs, files in os.walk(folder, topdown=False):
-@@ -615,7 +616,7 @@
- # of a video file from its stream info file
- 
- def getVideoParams(folder):
--    """Returns the video resolution, fps and aspect ratio for the video file from the streamindo.xml file"""
-+    """Returns the video resolution, fps and aspect ratio for the video file from the streaminfo.xml file"""
- 
-     #open the XML containing information about this file
-     infoDOM = xml.dom.minidom.parse(os.path.join(folder, 'streaminfo.xml'))
-@@ -651,14 +652,14 @@
- # Gets the aspect ratio of a video file from its stream info file
- 
- def getAspectRatioOfVideo(index):
--    """Returns the aspect ratio of the video file (1.333, 1.778, etc)"""
-+    """Returns the aspect ratio of the original video file (1.333, 1.778, etc)"""
- 
-     #open the XML containing information about this file
--    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo.xml'))
-+    infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
- 
-     #error out if its the wrong XML
-     if infoDOM.documentElement.tagName != "file":
--        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
-+        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
-     video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
-     if video.attributes["aspectratio"].value != 'N/A':
-         aspect_ratio = float(video.attributes["aspectratio"].value)
-@@ -679,7 +680,7 @@
- 
-     #error out if its the wrong XML
-     if infoDOM.documentElement.tagName != "file":
--        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
-+        fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
- 
-     video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
-     video_start = float(video.attributes["start_time"].value)
-@@ -1432,9 +1433,23 @@
- 
-         data.rating = str(vid.userrating)
- 
--        if doesFileExist(vid.coverfile):
--            data.coverfile = vid.coverfile
-+        data.coverfile = None
- 
-+        #Check filename for valid path. If valid return nothing.
-+        if os.path.isfile(str(vid.coverfile)):
-+            write("Coverart is in local directory: %s" % vid.coverfile)
-+            data.coverfile = vid.coverfile
-+        else:
-+            # iterate through storage group directories to get Coverart
-+            for sg in DB.getStorageGroup(groupname='Coverart', hostname=DB.gethostname()):
-+                if os.path.isfile(os.path.join(sg.dirname, str(vid.coverfile))):
-+                    write("Coverart is in Storage Groups: %s%s" % (sg.dirname, vid.coverfile))
-+                    data.coverfile = os.path.join(sg.dirname, str(vid.coverfile))
-+                    break
-+                    
-+        if data.coverfile == None:
-+            write("No Coverart Found")
-+               
-     elif file.attributes["type"].value=="file":
-         data.type =         file.attributes["type"].value
-         data.filename =     file.attributes["filename"].value
-@@ -1485,6 +1500,30 @@
- 
- 
- #############################################################
-+# Finds the path of a video file from a Storage Group
-+
-+def getVideoPath(filename):
-+      
-+    filepath = None
-+
-+    #Check filename for valid path. If valid return nothing.
-+    if os.path.isfile(filename):
-+        write("Video is in local video directory: %s" % filename)
-+        return (filepath)
-+    else:
-+        # iterate through storage group directories
-+        for sg in DB.getStorageGroup(groupname='Videos', hostname=DB.gethostname()):
-+            wholepath = os.path.join(sg.dirname, filename)
-+            if os.path.isfile(wholepath):
-+                write("Video is in Storage Groups: %s" % wholepath)
-+                filepath = "".join(sg.dirname)
-+                return (filepath)
-+                break
-+    
-+    if filepath == None:
-+        write("Video is not in local video directory or Storage Groups")
-+
-+#############################################################
- # Pre-process a single video/recording file
- 
- def preProcessFile(file, folder, count):
-@@ -1501,7 +1540,7 @@
-     if file.attributes["type"].value == "recording":
-         mediafile = file.attributes["filename"].value
-     elif file.attributes["type"].value == "video":
--        mediafile = os.path.join(videopath, file.attributes["filename"].value)
-+        mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
-     elif file.attributes["type"].value == "file":
-         mediafile = file.attributes["filename"].value
-     else:
-@@ -1661,6 +1700,37 @@
-         fatalError("Failed while running mytharchivehelper to get stream information.\n"
-                    "Result: %d, Command was %s" % (result, command))
- 
-+    #open the XML containing information about this file
-+    infoDOM = xml.dom.minidom.parse(xmlFilename)
-+    
-+    #error out if its the wrong XML
-+    if infoDOM.documentElement.tagName != "file":
-+        fatalError("This info file doesn't look right (%s)." % xmlFilename)
-+    
-+    file = infoDOM.getElementsByTagName("file")[0]
-+    video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
-+    
-+    #use ffmpeg to get display aspect ratio (DAR) of video
-+    cmd = "mythffmpeg -i " + quoteCmdArg(file.attributes["filename"].value) + " 2>&1"
-+    aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
-+    if "DAR" in aspect_ratio:
-+        #clean DAR string
-+        aspect_ratio = aspect_ratio.split("DAR ")[-1].split(",")[0]
-+        aspect_ratio = ''.join([c for c in aspect_ratio if c in '1234567890:']).split(":")
-+    else:
-+        #calculate aspect from video size
-+        aspect_ratio = getVideoSize(xmlFilename)
-+
-+    #convert to decimal
-+    aspect_ratio = float(aspect_ratio[0]) / float(aspect_ratio[1])
-+
-+    write("Video %s aspect ratio is: %s" % (filename, aspect_ratio))
-+
-+    #set aspect ratio
-+    video.setAttribute("aspectratio",str(aspect_ratio))
-+    
-+    WriteXMLToFile (infoDOM,xmlFilename)
-+
-     # print out the streaminfo.xml file to the log
-     infoDOM = xml.dom.minidom.parse(xmlFilename)
-     write(xmlFilename + ":-\n" + infoDOM.toprettyxml("    ", ""), False)
-@@ -1707,7 +1777,7 @@
-         write("Using cutlist: %s" % cutlist_s)
- 
-     if (localfile != ""):
--        localfile = quoteFilename(localfile)
-+        localfile = quoteCmdArg(localfile)
-         if usecutlist == True:
-             command = "mythtranscode --mpeg2 --honorcutlist %s --infile %s --outfile %s" % (cutlist_s, quoteCmdArg(localfile), quoteCmdArg(destination))
-         else:
-@@ -1973,7 +2043,7 @@
- #############################################################
- # Re-encodes a file to mpeg2
- 
--def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile):
-+def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile):
-     """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use mythffmpeg"""
- 
-     profileNode = findEncodingProfile(profile)
-@@ -1998,7 +2068,36 @@
-             value = quoteCmdArg(destvideofile)
-         if value == "%aspect":
-             value = aspectratio
-+        if value == "720x480" or value == "720x576":
-+            videores, fps, videoAR = getVideoParams(folder)
-+            videoWidth = int(videores.split("x")[0])
-+            videoHeight = int(videores.split("x")[1])
-+            
-+            #add padding to correct for aspects > than 1.9:1
-+            if float(videoAR) >= 1.9:
-+                #check which video type and set the correct height
-+                if videomode == "ntsc":
-+                    videoModeHeight = 480
-+                else:
-+                    videoModeHeight = 576
- 
-+                #calculate the video height based on the aspect ratio of the video
-+                #multiply by 1.185 to compensate for dvds non-square pixels
-+                calVideoHeight = int(round((720 / float(videoAR)) * 1.185))
-+                if calVideoHeight % 2 == 1:
-+                    calVideoHeight = calVideoHeight + 1
-+                #write("calVideoHeight: %s" % calVideoHeight)
-+                
-+                #use original video height if the calculated video height is close
-+                if (calVideoHeight + 20 < videoHeight) or (calVideoHeight - 20 > videoHeight):
-+                     videoHeight = calVideoHeight
-+
-+                cropPixels = videoModeHeight - videoHeight
-+
-+                write("Crop Pixels Total: %s" % cropPixels)
-+                name = "-vf"
-+                value = "\"scale=720:%d, setsar=1:1, pad=720:%d:0:%d:black\"" % (videoModeHeight - cropPixels, videoModeHeight, cropPixels / 2)
-+                
-         # only re-encode the audio if it is not already in AC3 format
-         if audio1[AUDIO_CODEC] == "AC3":
-             if name == "-acodec":
-@@ -2094,10 +2193,6 @@
-     outaudiosamplerate = 48000
-     outaudiocodec = "ac3"
-     deinterlace = 0
--    croptop = 0
--    cropright = 0
--    cropbottom = 0
--    cropleft = 0
-     qmin = 5
-     qmax = 31
-     qdiff = 31
-@@ -2121,14 +2216,6 @@
-             outvideores = value
-         if name == "-deinterlace":
-             deinterlace = 1
--        if name == "-croptop":
--            croptop = value
--        if name == "-cropright":
--            cropright = value
--        if name == "-cropbottom":
--            cropbottom = value
--        if name == "-cropleft":
--           cropleft = value
-         if name == "-qmin":
-            qmin = value
-         if name == "-qmax":
-@@ -4409,7 +4496,7 @@
-     elif file.attributes["type"].value=="recording":
-         mediafile = file.attributes["filename"].value
-     elif file.attributes["type"].value=="video":
--        mediafile=os.path.join(videopath, file.attributes["filename"].value)
-+        mediafile=os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
-     elif file.attributes["type"].value=="file":
-         mediafile=file.attributes["filename"].value
-     else:
-@@ -4547,7 +4634,7 @@
- 
-             #do the re-encode 
-             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
--                            audio1, audio2, aspectratio, profile)
-+                           folder, audio1, audio2, aspectratio, profile)
-             mediafile = os.path.join(folder, 'newfile2.mpg')
- 
-             #remove the old mediafile that was run through mythtranscode
-@@ -4621,7 +4708,7 @@
-     elif file.attributes["type"].value=="recording":
-         mediafile = file.attributes["filename"].value
-     elif file.attributes["type"].value=="video":
--        mediafile=os.path.join(videopath, file.attributes["filename"].value)
-+        mediafile=os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
-     elif file.attributes["type"].value=="file":
-         mediafile=file.attributes["filename"].value
-     else:
-@@ -4701,7 +4788,7 @@
- 
-             #do the re-encode 
-             encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
--                            audio1, audio2, aspectratio, profile)
-+                           folder, audio1, audio2, aspectratio, profile)
-             mediafile = os.path.join(folder, 'newfile2.mpg')
- 
-     #remove an intermediate file
diff --git a/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install b/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install
deleted file mode 100644
index a4e0c0d..0000000
--- a/abs/core/mythtv/stable-0.25/mythplugins/mythplugins-mythzoneminder.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
-    . /etc/systemconfig
-    if [ $SystemType = Master_backend -o  $SystemType = Standalone ]
-    then
-        echo "This looks a zoneminder server install"
-        echo "Installing zoneminder"
-        #for reference the pacman statement below will not work because of a db lock.
-        pacman -S zoneminder
-    fi
-
-}
diff --git a/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch b/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
deleted file mode 100644
index d8f4a0c..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/0001-protect-metadata-loads-from-multiple-threads.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From b20171597097f8b933065ef3291c63194d310fbf Mon Sep 17 00:00:00 2001
-From: George Nassas <george@nassas.com>
-Date: Sun, 10 Jun 2012 13:36:42 -0400
-Subject: [PATCH] protect metadata loads from multiple threads
-
----
- mythtv/libs/libmythmetadata/dbaccess.cpp |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/mythtv/libs/libmythmetadata/dbaccess.cpp b/mythtv/libs/libmythmetadata/dbaccess.cpp
-index 67cd904..46adb7a 100644
---- a/mythtv/libs/libmythmetadata/dbaccess.cpp
-+++ b/mythtv/libs/libmythmetadata/dbaccess.cpp
-@@ -47,8 +47,11 @@ class SingleValueImp
- 
-     virtual ~SingleValueImp() {}
- 
-+    mutable QMutex mutex;
-+
-     void load_data()
-     {
-+        QMutexLocker locker(&mutex);
-         if (!m_ready)
-         {
-             fill_from_db();
-@@ -271,8 +274,11 @@ class MultiValueImp
-                 .arg(m_value_name).arg(m_table_name).arg(m_id_name);
-     }
- 
-+    mutable QMutex mutex;
-+
-     void load_data()
-     {
-+        QMutexLocker locker(&mutex);
-         if (!m_ready)
-         {
-             fill_from_db();
-@@ -730,8 +736,11 @@ class FileAssociationsImp
-         }
-     }
- 
-+    mutable QMutex mutex;
-+
-     void load_data()
-     {
-+        QMutexLocker locker(&mutex);
-         if (!m_ready)
-         {
-             fill_from_db();
--- 
-1.7.2.5
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch b/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch
deleted file mode 100644
index 440a37a..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/0004-restore-fe-netcontrol-play-resume-functionality.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 2fb4b7bb111d7ec256f0b0f96c7271bcc0f61766 Mon Sep 17 00:00:00 2001
-From: George Nassas <george@nassas.com>
-Date: Fri, 24 Aug 2012 00:17:08 -0400
-Subject: [PATCH 4/4] restore fe netcontrol play/resume functionality
-
----
- mythtv/programs/mythfrontend/playbackbox.cpp |    4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git a/mythtv/programs/mythfrontend/playbackbox.cpp b/mythtv/programs/mythfrontend/playbackbox.cpp
-index 734cce1..44bb343 100644
---- a/mythtv/programs/mythfrontend/playbackbox.cpp
-+++ b/mythtv/programs/mythfrontend/playbackbox.cpp
-@@ -3723,7 +3723,9 @@ void PlaybackBox::processNetworkControlCommand(const QString &command)
- 
-                 pginfo.SetPathname(pginfo.GetPlaybackURL());
- 
--                PlayX(pginfo, true, true);
-+		bool ignoreBookmark = tokens[1] == "PLAY";
-+
-+                PlayX(pginfo, ignoreBookmark, true);
-             }
-             else
-             {
--- 
-1.7.2.5
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch b/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch
deleted file mode 100644
index ff1f4b6..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/MythBase.php.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** a/mythtv/bindings/php/MythBase.php.old	2011-04-03 06:05:31.000000000 -0500
---- b/mythtv/bindings/php/MythBase.php	2012-03-27 05:05:16.000000000 -0500
-***************
-*** 51,57 ****
-  
-      public function __destruct() {
-          if (!is_null($this->cacheKey))
-!             Cache::setObject($this->cacheKey, &$this, $this->cacheLifetime);
-          $this->cacheKey = null;
-      }
-  
---- 51,57 ----
-  
-      public function __destruct() {
-          if (!is_null($this->cacheKey))
-!             Cache::setObject($this->cacheKey, $this, $this->cacheLifetime);
-          $this->cacheKey = null;
-      }
-  
diff --git a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD b/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
deleted file mode 100644
index 936060b..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/PKGBUILD
+++ /dev/null
@@ -1,172 +0,0 @@
-# $Id: PKGBUILD 91139 2010-09-23 10:45:09Z remy $
-# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
-# Contributor: Juergen Hoetzel <juergen@archlinux.org>
-# Contributor: <kleptophobiac@gmail.com>
-# Contributor: dorphell <dorphell@archlinux.org>
-
-pkgname=mythtv
-pkgver=0.25
-pkgrel=33
-commit_hash=`cat ../git_src/git_hash`
-pkgdesc="A Homebrew PVR project $commit_hash"
-arch=('i686' 'x86_64')
-url="http://www.mythtv.org/"
-license=('GPL')
-depends=('mysql-clients'
-         'qt'
-         'qtwebkit'
-         'lame'
-         'lirc-utils'
-         'ffmpeg'
-         'fribidi'
-         'perl-soap-lite'
-         'perl-date-manip'
-         'perl-xml-sax'
-         'perl-math-round'
-         'perl-net-upnp'
-         'perl-dbd-mysql'
-         'perl-time-hires'
-         'libavc1394'
-         'wget'
-         'libiec61883'
-         'mysql-python'
-         'python2-lxml'
-         'mesa'
-         'libxinerama'
-         'libxrandr'
-         'faad2'
-         'libvdpau'
-         'libcrystalhd-git'
-         'urlgrabber'
-         'python-pycurl'
-         'avahi'
-         'libcec'
-         'perl-io-socket-inet6'
-         'glew'
-         'openssl'
-         'libxml2'
-         'lsdvd'
-         'dvdbackup'
-         'x264')
-
-#glew for gpu commerical flagging
-#openssl for roap
-#lib xml2 for blu-ray
-
-
-makedepends=('yasm' 'libgl' 'git' 'rsync')
-replaces=()
-groups=('pvr')
-#backup=(/usr/share/mythtv/is.xml)
-#options=(!strip)
-#MAKEFLAGS="-j6"
-install='mythtv.install'
-
-#http://code.mythtv.org/trac/ticket/10504   mythweb php
-#http://code.mythtv.org/trac/ticket/10773   mythexpress
-#http://code.mythtv.org/trac/ticket/10825   mythexpress
-#http://code.mythtv.org/trac/ticket/11032   mythexpress
-#patchs=('myth_settings.patch' 'MythBase.php.patch'
-
-patchs=('myth_settings.patch' 
-        'bonjour-correction.patch'
-        '0001-protect-metadata-loads-from-multiple-threads.patch'
-        '0004-restore-fe-netcontrol-play-resume-functionality.patch')
-
-optdepends=('xmltv: to download tv listings')
-replaces=('mythvideo' 'myththemes')
-conflicts=('mythvideo' 'myththemes')
-source=('mythbackend' 'myth.sh' `echo ${patchs[@]:0}`
-        'mythbackend.lr' 'mythfrontend.lr' 'pretty'
-        'tmdb3.py' 'tmdb3_db_update.py')
-
-
-build() {
-    if [ -e ${srcdir}/mythtv ]
-    then
-        rm -rf ${srcdir}/mythtv
-    fi
-
-    cd ${startdir}
-    msg "copy in mythtv src"
-    cp -rp ../git_src/mythtv/mythtv $srcdir
-    cd ${srcdir}/$pkgname
-    echo "#!/bin/bash" > version.sh
-    # apply patches
-
-   echo "--------------------------applying patches----------------------------------------------------"
-   for i in `echo ${patchs[@]:0} `
-   do
-       echo applying $i
-       echo "-----------------------------"
-       patch -Np2  -i ${startdir}/src/$i  || return 1
-   done
-   echo "--------------------------done applying patches-----------------------------------------------"
-
-    #sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro
-    #find bindings/python contrib -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
-
-    #Fix Python DepreciationWarning
-    sed -i 's/return super(Artwork, cls).__new__(cls, attr, parent, imagetype)/return super(Artwork, cls).__new__(cls)/' ${srcdir}/mythtv/bindings/python/MythTV/dataheap.py
-
-    #Update tmdb3.py to v3.6 & add tmdb3_db_update.py script & rm tmdb.py
-    cp $srcdir/tmdb3*.py $srcdir/mythtv/programs/scripts/metadata/Movie/
-    rm -f $srcdir/mythtv/programs/scripts/metadata/Movie/tmdb.py
-
-  ARCH=${CARCH/_/-}
-  ./configure --prefix=/usr --cpu=${ARCH} \
-              --disable-audio-jack \
-              --disable-audio-pulse \
-              --disable-altivec \
-              --disable-distcc \
-              --disable-ccache \
-              --enable-vdpau \
-              --enable-crystalhd \
-              --dvb-path=/usr/include \
-              --enable-libmp3lame \
-              --enable-libx264 \
-              --with-bindings=perl,python --python=python2 || return 1
-
-  make all || return 1
-}
-
-package() {
-  cd "${srcdir}/${pkgname}"
-  # basic install
-  make INSTALL_ROOT="${pkgdir}" install
-  # install contrib files
-  rsync -arp --exclude .svn --delete-excluded contrib ${pkgdir}/usr/share/mythtv/ || return 1
-  # install database structure
-  rsync -arp --exclude .svn --delete-excluded database ${pkgdir}/usr/share/mythtv/ || return 1
-  # install docs
-  rsync -arp --exclude .svn --delete-excluded docs ${pkgdir}/usr/share/mythtv/ || return 1
-
-  # patch the xml LinHES style
-  cp -r ${startdir}/menu-xml/*.xml ${pkgdir}/usr/share/mythtv/themes/defaultmenu/
-#  mv ${pkgdir}/usr/share/mythtv/themes/defaultmenu/is.xml ${pkgdir}/usr/share/mythtv/
-  cd ${pkgdir}/usr/share/mythtv
-  patch -p0 < ${startdir}/menu-xml/mainmenu.xml.patch || return 1
-  patch -p0 < ${startdir}/menu-xml/optical_menu.xml.patch || return 1
-  patch -p0 < ${startdir}/menu-xml/library.xml.patch || return 1
-  #patch -p0 < ${startdir}/menu-xml/util_menu.xml.patch || return 1
-
-  # make log dir
-  mkdir -p ${pkgdir}/var/log/mythtv
-  chown 1000.1000 ${pkgdir}/var/log/mythtv
-  mkdir -p ${pkgdir}/etc/logrotate.d
-  cp ${srcdir}/*.lr ${pkgdir}/etc/logrotate.d
-  mkdir -p ${pkgdir}/etc/cron.hourly/
-  install -m0755 ${srcdir}/pretty ${pkgdir}/etc/cron.hourly/
-}
-
-md5sums=('7ef6de58240e7aad389a0b13d91b1cf6'
-         '2babd4b8e146a7538d18dcd55695b0be'
-         '322f48528b350f0e6aebfff6eab4c4ee'
-         '8e2a055bb3beae04c88a8e603e080422'
-         '67f7316c750fba17fa578d10840b9dbd'
-         'ae23e6a8cffbe335fa37bf59978bf7a2'
-         'f735805a80b0d1180dee01f9df1b7004'
-         'f407d6af23e74a49540755420f84fa58'
-         '5469d9921b726db750b991c87d226158'
-         '187be42b1ffca6badfa539260ffef65e'
-         '7460513f6791574eaa0ae0402ffd3688')
diff --git a/abs/core/mythtv/stable-0.25/mythtv/__changelog b/abs/core/mythtv/stable-0.25/mythtv/__changelog
deleted file mode 100644
index 31cdd16..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/__changelog
+++ /dev/null
@@ -1,5 +0,0 @@
-update to 0.25-fixes
-remove xvmc
-added perl-io-socket-inet6 for perl bindings
-added glew for gpu commerical flagging
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch b/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch
deleted file mode 100644
index 9456809..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/bonjour-correction.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 8929314e77dfc5fe9bcc58f4ace4e7ba6fea9bef Mon Sep 17 00:00:00 2001
-From: George Nassas <george@nassas.com>
-Date: Tue, 29 May 2012 10:11:38 -0400
-Subject: [PATCH] make backend's bonjour service name dns-compliant
-
----
- mythtv/programs/mythbackend/mediaserver.cpp |    7 ++-----
- 1 files changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/mythtv/programs/mythbackend/mediaserver.cpp b/mythtv/programs/mythbackend/mediaserver.cpp
-index 043140d..19d0eb9 100644
---- a/mythtv/programs/mythbackend/mediaserver.cpp
-+++ b/mythtv/programs/mythbackend/mediaserver.cpp
-@@ -256,13 +256,10 @@ void MediaServer::Init(bool bIsMaster, bool bDisableUPnp /* = false */)
-         m_bonjour = new BonjourRegister();
-         if (m_bonjour)
-         {
--            QByteArray dummy;
-             QByteArray name("Mythbackend on ");
-             name.append(gCoreContext->GetHostName());
--            m_bonjour->Register(nPort,
--                                bIsMaster ? "_mythbackend-master._tcp" :
--                                            "_mythbackend-slave._tcp",
--                                name, dummy);
-+            QByteArray txt(bIsMaster ? "\x0Clevel=master" : "\x0Blevel=slave");
-+            m_bonjour->Register(nPort, "_mythbackend._tcp", name, txt);
-         }
- #endif
-     }
--- 
-1.7.2.5
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/git_version.patch b/abs/core/mythtv/stable-0.25/mythtv/git_version.patch
deleted file mode 100644
index 8b1def8..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/git_version.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/mythtv/version.sh b/mythtv/version.sh
-index d2c53af..2cf971f 100755
---- a/mythtv/version.sh
-+++ b/mythtv/version.sh
-@@ -22,7 +22,7 @@ GITREPOPATH="exported"
- 
- cd ${GITTREEDIR}
- 
--SOURCE_VERSION=$(git describe --dirty || git describe || echo Unknown)
-+SOURCE_VERSION=$(git describe | cut -d- -f 3 || echo Unknown)
- 
- case "${SOURCE_VERSION}" in
-     exported|Unknown)
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml
deleted file mode 100644
index b1fa6b5..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/HOST_SETTINGS.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<mythmenu name="HOST_SETTINGS">
-    <button>
-        <type>MV_ACCESS_SETUP_MENU</type>
-        <text>Access Control</text>
-        <action>EXEC  mythinstall -s accesscontrol </action>
-    </button>
-
-    <button>
-        <type>MV_SOFTWARE_MENU</type>
-        <text>Add/Remove software</text>
-        <action>EXEC  mythinstall -s  plugins,software </action>
-    </button>
-
-    <button>
-        <type>MV_ADVANCED_SETUP_MENU</type>
-        <text>Advanced</text>
-        <action>EXEC  mythinstall -s advanced</action>
-    </button>
-
-    <button>
-        <type>MV_AUDIO_SETUP_MENU</type>
-        <text>Audio Settings</text>
-        <action>EXEC  mythinstall -s sound </action>
-    </button>
-
-    <button>
-        <type>MV_ADVANCED_X_SETUP_MENU</type>
-        <text>Display</text>
-        <action>EXEC  mythinstall -s advancedX</action>
-    </button>
-
-    <button>
-        <type>MV_NETWORK_SETUP_MENU</type>
-        <text>Dynamic DNS</text>
-        <action>EXEC  mythinstall -s ddns </action>
-    </button>
-
-   <button>
-       <type>MV_FILESHARES_MENU</type>
-       <text>File Shares</text>
-       <action>EXEC  mythinstall -s fileshare</action>
-   </button>
-
-   <button>
-       <type>MV_MISC_SETUP_MENU</type>
-       <text>Miscellanous</text>
-       <action>EXEC  mythinstall -s misc </action>
-   </button>
-
-   <button>
-       <type>MV_NETWORK_SETUP_MENU</type>
-       <text>Network</text>
-       <action>EXEC  mythinstall -s network </action>
-   </button>
-
-   <button>
-       <type>MV_IR_SETUP_MENU</type>
-       <text>Remotes</text>
-       <action>EXEC  mythinstall -s ir </action>
-   </button>
-
-   <button>
-       <type>MV_SCREENSAVER_SETUP_MENU</type>
-       <text>Screensaver</text>
-       <action>EXEC  mythinstall -s screensaver </action>
-   </button>
-
-   <button>
-       <type>MV_SHUTDOWN_SETUP_MENU</type>
-       <text>Shutdown Settings</text>
-       <action>EXEC  mythinstall -s sleep </action>
-   </button>
-
-   <button>
-       <type>MV_SYSTEM_SETUP_MENU</type>
-       <text>System Type</text>
-       <action>EXEC  mythinstall -s hostype </action>
-   </button>
-
-   <button>
-       <type>MV_USER_SETUP_MENU</type>
-       <text>User Accounts</text>
-       <action>EXEC  mythinstall -s user </action>
-   </button>
-
-   <button>
-       <type>MV_VNC_SETUP_MENU</type>
-       <text>VNC Service</text>
-       <action>EXEC  mythinstall -s vnc </action>
-   </button>
-
-   <button>
-       <type>MV_WEBACCESS_SETUP_MENU</type>
-       <text>Web Security</text>
-       <action>EXEC  mythinstall -s webuser </action>
-   </button>
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml
deleted file mode 100644
index 2647d81..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/dvd_backup.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<mythmenu name="OPTICAL_DISK">
-
-    <button>
-        <type>DVD_RIP</type>
-        <text>Mirror DVD</text>
-        <description>Creates a mirror of your DVD</description>
-	<action>EXEC /usr/LH/bin/ripD_eject.sh m &amp;</action>
-    </button>
-
-    <button>
-        <type>DVD_RIP</type>
-        <text>ISO of DVD</text>
-        <description>Creates an ISO of your DVD</description>
-	<action>EXEC /usr/LH/bin/ripD_eject.sh i &amp;</action>
-    </button>
-
-    <button>
-        <type>DVD_RIP</type>
-        <text>High Quality</text>
-        <description>Creates a high quality MPEG4 of your DVD</description>
-	<action>EXEC /usr/LH/bin/ripD_eject.sh h &amp;</action>
-    </button>
-
-    <button>
-        <type>DVD_RIP</type>
-        <text>Normal Quality</text>
-        <description>Creates a normal quality MPEG4 of your DVD</description>
-	<action>EXEC /usr/LH/bin/ripD_eject.sh n &amp;</action>
-    </button>
-
-    <button>
-        <type>DVD_RIP</type>
-        <text>Low Quality</text>
-        <description>Creates a low quality MPEG4 of your DVD</description>
-	<action>EXEC /usr/LH/bin/ripD_eject.sh l &amp;</action>
-    </button>
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/game.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/game.xml
deleted file mode 100644
index 293a9e6..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/game.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<mythmenu name="GAME">
-
-    <button>
-        <type>GAME</type>
-        <text>MythGame</text>
-        <description>Play video games</description>
-        <action>PLUGIN mythgame</action>
-        <depends>mythgame</depends>
-    </button>
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml
deleted file mode 100644
index 017f90b..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/info_menu.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<mythmenu name="INFO">
-
-    <button>
-        <type>NEWS</type>
-        <text>News Feeds</text>
-        <description>Keep up with the news</description>
-        <action>PLUGIN mythnews</action>
-        <depends>mythnews</depends>
-    </button>
-
-    <button>
-        <type>MYTHTWITTER_TIMELINE</type>
-        <text>Twitter</text>
-        <description>Send and receive tweets</description>
-        <action>JUMP MythTwitter_Timeline</action>
-        <depends>mythtwitter</depends>
-    </button>
-
-    <button>
-        <type>WEATHER</type>
-        <text>Weather</text>
-        <action>PLUGIN mythweather</action>
-        <description>Local weather forecast</description>
-        <depends>mythweather</depends>
-    </button>
-
-    <button>
-       <type>WEATHER</type>
-        <text>Weather Station</text>
-        <action>PLUGIN mythwstation</action>
-        <depends>mythwstation</depends>
-    </button>
-
-    <button>
-        <type>WEBPAGE</type>
-        <text>Web</text>
-        <description>Browse the web</description>
-        <action>PLUGIN mythbrowser</action>
-        <depends>mythbrowser</depends>
-    </button>
-
-    <button>
-        <type>RECIPE</type>
-        <text>Recipes</text>
-        <description>Start cooking!</description>
-        <action>PLUGIN mythRecipe</action>
-        <depends>mythrecipe</depends>
-    </button>
-
-    <button>
-        <type>TV_STATUS</type>
-        <text>System Status</text>
-        <description>See what your system is doing</description>
-        <action>TV_STATUS</action>
-    </button>
-
-    <button>
-        <type>ZONEMINDER</type>
-        <text>ZoneMinder</text>
-        <description>Home surveillance</description>
-        <action>PLUGIN mythzoneminder</action>
-        <depends>mythzoneminder</depends>
- </button>
-
-<!-- 
- <button>
-        <type>SMOLT</type>
-        <text>Hardware profile</text>
-        <description>Tell us what hardware you have so we can support it</description>
-        <action>PLUGIN mythsmolt</action>
-        <depends>mythsmolt</depends>
- </button>
- -->
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/is.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/is.xml
deleted file mode 100644
index 88b7e6b..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/is.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<mythmenu name="Internet Steams">
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch
deleted file mode 100644
index 8f80928..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/library.xml.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- themes/defaultmenu/library.xml.orig	2012-06-10 08:02:54.000000000 +0000
-+++ themes/defaultmenu/library.xml	2012-06-10 08:03:38.000000000 +0000
-@@ -40,6 +40,13 @@
-     </button>
- 
-     <button>
-+        <type>STREAM</type>
-+        <text>Online Content</text>
-+        <description>Play content from online sources</description>
-+        <action>MENU gen_is.xml</action>
-+    </button>
-+
-+    <button>
-         <type>IMAGES</type>
-         <text>Image Gallery</text>
-         <description>Look at Pictures</description>
-@@ -51,8 +58,7 @@
-         <type>GAME</type>
-         <text>Play Games</text>
-         <description>Play video games</description>
--        <action>PLUGIN mythgame</action>
--        <depends>mythgame</depends>
-+        <action>MENU game.xml</action>
-     </button>
- 
- </mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml
deleted file mode 100644
index 342766d..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/linhes.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<mythmenu name="LinHES">
-
-    <button>
-        <type>SETUP_GENERAL</type>
-        <text>MythTV Configuration</text>
-        <text lang="IT">Impostazioni</text>
-        <text lang="ES">Configuración</text>
-        <text lang="DE">Zubehör / Konfiguration</text>
-        <text lang="DA">Tilbehør/Indstillinger</text>
-        <text lang="IS">Uppsetning</text>
-        <text lang="NL">Configuratie</text>
-        <text lang="PT">Utensílios</text>
-        <text lang="SV">Verktyg / Inställningar</text>
-        <text lang="JA">設�~Z</text>
-        <text lang="FI">Oheis/Asetukset</text>
-        <text lang="ZH_TW">工�~E�/設�~Z</text>
-        <text lang="SL">Nastavitve</text>
-        <text lang="ET">Utiliidid / sätted</text>
-        <text lang="RU">У�~Bили�~B�~K / �~]а�~A�~B�~@ойки</text>
-        <text lang="AR">تضب�~Jطات</text>
-        <text lang="PL">Narz�~Ydzia / ustawienia</text>
-        <text lang="HE">ע�~Vר�~Y�~] / �~T�~R�~Sר�~Uת</text>
-        <text lang="HU">Eszközök / Beállítások</text>
-        <alttext lang="DE">Verschiedenes</alttext>
-        <alttext lang="SV">Inställningar</alttext>
-        <alttext lang="ET">Sätted</alttext>
-        <alttext lang="RU">�~]а�~A�~B�~@ойки</alttext>
-        <alttext lang="AR">تضب�~Jطات</alttext>
-        <description>Configure MythTV and plugins</description>
-        <description lang="DE">MythTV und Plugins konfigurieren</description>
-        <action>MENU util_menu.xml</action>
-    </button>
-
-   <button>
-     <type>LINHES_SETUP</type>
-     <text>LinHES Configuration</text>
-     <description>Configure LinHES</description>
-     <action>MENU HOST_SETTINGS.xml</action>
-   </button>
-
-   <button>
-     <type>BACKUP</type>
-     <text>Backup LinHES</text>
-     <action>MENU mythbackup.xml</action>
-   </button>
-
-   <button>
-     <type>RESTORE</type>
-     <text>Restore LinHES</text>
-     <action>MENU mythrestore.xml</action>
-   </button>
-
-<!--#Check for updates-->
-   <button>
-     <type>UPGRADE</type>
-     <text>Update LinHES</text>
-     <action>MENU update.xml</action>
-   </button>
-<!--#Check for updates-->
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch
deleted file mode 100644
index 73a8940..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mainmenu.xml.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- themes/defaultmenu/mainmenu.xml.orig	2012-07-29 21:39:46.000000000 +0000
-+++ themes/defaultmenu/mainmenu.xml	2012-07-29 21:41:50.000000000 +0000
-@@ -1,5 +1,11 @@
- <?xml version="1.0" encoding="UTF-8" ?>
- <mythmenu name="MAIN">
-+    <button>
-+        <type>TV_WATCH_TV</type>
-+        <text>Watch TV</text>
-+        <description>Watch live television</description>
-+        <action>TV_WATCH_LIVE</action>
-+    </button>
- 
-     <button>
-         <type>MENU_MEDIA_LIBRARY</type>
-@@ -30,18 +36,11 @@
-     </button>
- 
-     <button>
--        <type>TV_WATCH_TV</type>
--        <text>Watch TV</text>
--        <description>Watch live television</description>
--        <action>TV_WATCH_LIVE</action>
--    </button>
--
--    <button>
-         <type>MENU_UTILITIES_SETUP</type>
--        <text>Setup</text>
--        <description>Configure MythTV and plugins</description>
--        <action>MENU main_settings.xml</action>
--        <password>SetupPinCode</password>
-+        <text>Service Menu</text>
-+        <description>Configure your system</description>
-+	<action>MENU linhes.xml</action>
-+	<password>SetupPinCode</password>
-     </button>
- 
- </mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml
deleted file mode 100644
index 7890d88..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythbackup.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<mythmenu name="LinHES">
-   <button>
-     <type>BACKUP</type>
-     <text>Do you wish to backup?</text>
-     <description></description>
-     <action>NONE</action>
-   </button>
-
-   <button>
-     <type>BACKUP</type>
-     <text>Yes</text>
-     <action>EXEC sudo /usr/LH/bin/lh_system_backup &amp;</action>
-   </button>
-
-   <button>
-     <type>BACKUP</type>
-     <text>No</text>
-     <action>UPMENU</action>
-   </button>
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml
deleted file mode 100644
index 161f13f..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/mythrestore.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<mythmenu name="LinHES">
-
-   <button>
-     <type>RESTORE</type>
-     <text>Do you wish to restore?</text>
-     <description>This will restore from most recent backup.</description>
-     <action>NONE</action>
-   </button>
-
-   <button>
-     <type>RESTORE</type>
-     <text>Yes</text>
-     <action>EXEC sudo /usr/LH/bin/lh_system_restore &amp;</action>
-   </button>
-
-   <button>
-     <type>BACKUP</type>
-     <text>No</text>
-     <action>UPMENU</action>
-   </button>
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch
deleted file mode 100644
index b836e85..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/optical_menu.xml.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- themes/defaultmenu/optical_menu.xml.orig	2012-05-02 18:41:38.000000000 +0000
-+++ themes/defaultmenu/optical_menu.xml	2012-07-30 05:33:03.000000000 +0000
-@@ -17,6 +17,20 @@
-     </button>
- 
-     <button>
-+        <type>DVD_RIP</type>
-+        <text>Backup DVD</text>
-+       <description>Backup your DVDs</description>
-+        <action>MENU dvd_backup.xml</action>
-+    </button>
-+
-+    <button>
-+        <type>DVD_RIP</type>
-+        <text>Import Files from DVD</text>
-+       <description>Import all files from a data DVD</description>
-+        <action>EXEC /usr/LH/bin/importfiles.sh &amp;</action>
-+    </button>
-+
-+    <button>
-         <type>MUSIC_RIP</type>
-         <text>Import CD</text>
-         <description>Import music from an audio CD</description>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/original/create_patch.sh b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/original/create_patch.sh
deleted file mode 100644
index 34d8b8c..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/original/create_patch.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-for i in *.xml
-do
-	diff -u $i.orig $i > ../$i.patch
-done
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/siriusmenu.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/siriusmenu.xml
deleted file mode 100644
index e317b36..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/siriusmenu.xml
+++ /dev/null
@@ -1,419 +0,0 @@
-<mythmenu name="SIRIUS">
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Hits 1</text>
-      <action>EXEC /usr/bin/cliSipie siriushits1</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>StarLite</text>
-      <action>EXEC /usr/bin/cliSipie starlite</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Love</text>
-      <action>EXEC /usr/bin/cliSipie siriuslove</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Movin EZ</text>
-      <action>EXEC /usr/bin/cliSipie movineasy</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Gold</text>
-      <action>EXEC /usr/bin/cliSipie siriusgold</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>'60s Vibrations</text>
-      <action>EXEC /usr/bin/cliSipie 60svibrations</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Totally '70s</text>
-      <action>EXEC /usr/bin/cliSipie totally70s</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Big '80s</text>
-      <action>EXEC /usr/bin/cliSipie big80s</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>ThePulse</text>
-      <action>EXEC /usr/bin/cliSipie thepulse</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Bridge</text>
-      <action>EXEC /usr/bin/cliSipie thebridge</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>BBC Radio 1</text>
-      <action>EXEC /usr/bin/cliSipie bbcradio1</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Super Shuffle</text>
-      <action>EXEC /usr/bin/cliSipie supershuffle</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Elvis Radio</text>
-      <action>EXEC /usr/bin/cliSipie elvisradio</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Classic Vinyl</text>
-      <action>EXEC /usr/bin/cliSipie classicvinyl</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Classic Rewind</text>
-      <action>EXEC /usr/bin/cliSipie classicrewind</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>TheVault</text>
-      <action>EXEC /usr/bin/cliSipie thevault</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Jam_ON</text>
-      <action>EXEC /usr/bin/cliSipie jamon</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Spectrum</text>
-      <action>EXEC /usr/bin/cliSipie thespectrum</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>BuzzSaw</text>
-      <action>EXEC /usr/bin/cliSipie buzzsaw</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Octane</text>
-      <action>EXEC /usr/bin/cliSipie octane</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Alt Nation</text>
-      <action>EXEC /usr/bin/cliSipie altnation</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>1st Wave</text>
-      <action>EXEC /usr/bin/cliSipie firstwave</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Hair Nation</text>
-      <action>EXEC /usr/bin/cliSipie hairnation</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>'90s Alternative</text>
-      <action>EXEC /usr/bin/cliSipie 90salternative</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Garage</text>
-      <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Left of Center</text>
-      <action>EXEC /usr/bin/cliSipie leftofcenter</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Hard Attack</text>
-      <action>EXEC /usr/bin/cliSipie hardattack</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Faction</text>
-      <action>EXEC /usr/bin/cliSipie faction</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Punk</text>
-      <action>EXEC /usr/bin/cliSipie punk</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>The Coffee House</text>
-      <action>EXEC /usr/bin/cliSipie coffeehouse</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Margaritaville</text>
-      <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Disorder</text>
-      <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Reggae</text>
-      <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Area 33</text>
-      <action>EXEC /usr/bin/cliSipie area33</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Boombox</text>
-      <action>EXEC /usr/bin/cliSipie boombox</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Chill</text>
-      <action>EXEC /usr/bin/cliSipie chill</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>The Beat</text>
-      <action>EXEC /usr/bin/cliSipie thebeat</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Strobe</text>
-      <action>EXEC /usr/bin/cliSipie thestrobe</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Hip-Hop Nation</text>
-      <action>EXEC /usr/bin/cliSipie hiphopnation</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>BackSpin</text>
-      <action>EXEC /usr/bin/cliSipie backspin</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Shade 45</text>
-      <action>EXEC /usr/bin/cliSipie shade45</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Hot Jamz</text>
-      <action>EXEC /usr/bin/cliSipie hotjamz</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Heart  &amp; Soul</text>
-      <action>EXEC /usr/bin/cliSipie heartandsoul</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>SoulTown</text>
-      <action>EXEC /usr/bin/cliSipie soultown</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>New Country</text>
-      <action>EXEC /usr/bin/cliSipie newcountry</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Prime Country</text>
-      <action>EXEC /usr/bin/cliSipie primecountry</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Roadhouse</text>
-      <action>EXEC /usr/bin/cliSipie theroadhouse</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Outlaw Country</text>
-      <action>EXEC /usr/bin/cliSipie outlawcountry</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Bluegrass</text>
-      <action>EXEC /usr/bin/cliSipie bluegrass</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Spirit</text>
-      <action>EXEC /usr/bin/cliSipie spirit</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Praise</text>
-      <action>EXEC /usr/bin/cliSipie praise</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Planet Jazz</text>
-      <action>EXEC /usr/bin/cliSipie planetjazz</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>JazzCafe</text>
-      <action>EXEC /usr/bin/cliSipie jazzcafe</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>PureJazz</text>
-      <action>EXEC /usr/bin/cliSipie purejazz</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Spa 73</text>
-      <action>EXEC /usr/bin/cliSipie spa73</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Blues</text>
-      <action>EXEC /usr/bin/cliSipie siriusblues</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Siriusly Sinatra</text>
-      <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Broadway's Best</text>
-      <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Symphony Hall</text>
-      <action>EXEC /usr/bin/cliSipie symphonyhall</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Met Opera Radio</text>
-      <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Pops</text>
-      <action>EXEC /usr/bin/cliSipie siriuspops</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Universo Latino</text>
-      <action>EXEC /usr/bin/cliSipie universolatino</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Rumbon</text>
-      <action>EXEC /usr/bin/cliSipie rumbon</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Martha Stewart</text>
-      <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius Stars</text>
-      <action>EXEC /usr/bin/cliSipie siriusstars</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>OutQ Gay Radio</text>
-      <action>EXEC /usr/bin/cliSipie siriusoutq</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Patriot</text>
-      <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Left</text>
-      <action>EXEC /usr/bin/cliSipie siriusleft</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>CNN</text>
-      <action>EXEC /usr/bin/cliSipie cnn</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>wrn</text>
-      <action>EXEC /usr/bin/cliSipie wrn</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Blue Collar Comedy</text>
-      <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Raw Dog Comedy</text>
-      <action>EXEC /usr/bin/cliSipie rawdog</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Laugh Break Comedy</text>
-      <action>EXEC /usr/bin/cliSipie laughbreak</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>thefoxxhole</text>
-      <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>lime</text>
-      <action>EXEC /usr/bin/cliSipie lime</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Kids Stuff</text>
-      <action>EXEC /usr/bin/cliSipie kidsstuff</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Catholic Channel</text>
-      <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>EWTN</text>
-      <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>christiantalk</text>
-      <action>EXEC /usr/bin/cliSipie christiantalk</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Sirius NFL Radio</text>
-      <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Maxim Radio</text>
-      <action>EXEC /usr/bin/cliSipie maximradio</action>
-   </button>
-   <button>
-      <type>MUSIC</type>
-      <text>Cosmo Radio</text>
-      <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
-   </button>
-   <button>
-     <type>TV_DELETE</type>
-     <text>Stop Listening</text>
-     <action>EXEC /usr/bin/sipie_kill</action>
-  </button>
-
-</mythmenu>
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update.xml
deleted file mode 100644
index d2ac3fe..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<mythmenu name="LinHES">
-
-   <button>
-     <type>UPGRADE</type>
-     <text>Check for Updates</text>
-     <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
-   </button>
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update2.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update2.xml
deleted file mode 100644
index 64388cb..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/update2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<mythmenu name="LinHES">
-
-   <button>
-     <type>UPGRADE</type>
-     <text>Install Updates</text>
-     <action>EXEC sudo /usr/LH/bin/linhes_update2.sh install</action>
-   </button>
-
-   <button>
-     <type>UPGRADE</type>
-     <text>Cancel Updates</text>
-     <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
-   </button>
-
-   <button>
-     <type>UPGRADE</type>
-     <text>View Updates</text>
-     <action>MENU update3.xml</action>
-   </button>
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/util_menu.xml.patch b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/util_menu.xml.patch
deleted file mode 100644
index 82d303e..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/util_menu.xml.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- themes/defaultmenu/util_menu.xml.orig	2010-11-06 00:40:01.000000000 +0000
-+++ themes/defaultmenu/util_menu.xml	2010-11-06 00:45:42.000000000 +0000
-@@ -17,6 +17,13 @@
-     </button>
- 
-     <button>
-+        <type>VIDEO_SCREENSHOOTER</type>
-+        <text>Thumbnail Generator</text>
-+        <description>Generate thumbnail images for videos</description>
-+        <action>EXEC /usr/LH/bin/shootscreens-mythtv.sh</action>
-+    </button>
-+
-+    <button>
-         <type>SETUP_MENU</type>
-         <text>Setup</text>
-         <description>Configure MythTV and plugins</description>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/xmmenu.xml b/abs/core/mythtv/stable-0.25/mythtv/menu-xml/xmmenu.xml
deleted file mode 100644
index 6b26d11..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/menu-xml/xmmenu.xml
+++ /dev/null
@@ -1,574 +0,0 @@
-<!-- Current as of April 25, 2007 -->
-<mythmenu name="XM">
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '40s</text>
-		<action>EXEC /usr/bin/xamp kill 4</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '50s</text>
-		<action>EXEC /usr/bin/xamp kill 5</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '60s</text>
-		<action>EXEC /usr/bin/xamp kill 6</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '70s</text>
-		<action>EXEC /usr/bin/xamp kill 7</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '80s</text>
-		<action>EXEC /usr/bin/xamp kill 8</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The '90s</text>
-		<action>EXEC /usr/bin/xamp kill 9</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>America</text>
-		<action>EXEC /usr/bin/xamp kill 10</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>X Country</text>
-		<action>EXEC /usr/bin/xamp kill 12</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Willie's Place</text>
-		<action>EXEC /usr/bin/xamp kill 13</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Bluegrass Junction</text>
-		<action>EXEC /usr/bin/xamp kill 14</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Village</text>
-		<action>EXEC /usr/bin/xamp kill 15</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Highway 16</text>
-		<action>EXEC /usr/bin/xamp kill 16</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>US Country</text>
-		<action>EXEC /usr/bin/xamp kill 17</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>20 on 20</text>
-		<action>EXEC /usr/bin/xamp kill 20</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Heart</text>
-		<action>EXEC /usr/bin/xamp kill 23</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Blend</text>
-		<action>EXEC /usr/bin/xamp kill 25</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Flight 26</text>
-		<action>EXEC /usr/bin/xamp kill 26</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Cinemagic</text>
-		<action>EXEC /usr/bin/xamp kill 27</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>On Broadway</text>
-		<action>EXEC /usr/bin/xamp kill 28</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>U-Pop</text>
-		<action>EXEC /usr/bin/xamp kill 29</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Hitlist</text>
-		<action>EXEC /usr/bin/xamp kill 30</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Torch</text>
-		<action>EXEC /usr/bin/xamp kill 31</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Message</text>
-		<action>EXEC /usr/bin/xamp kill 32</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Spirit</text>
-		<action>EXEC /usr/bin/xamp kill 33</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>enLighten</text>
-		<action>EXEC /usr/bin/xamp kill 34</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Deep Tracks</text>
-		<action>EXEC /usr/bin/xamp kill 40</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Boneyard</text>
-		<action>EXEC /usr/bin/xamp kill 41</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Liquid Metal</text>
-		<action>EXEC /usr/bin/xamp kill 42</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XMU</text>
-		<action>EXEC /usr/bin/xamp kill 43</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Fred</text>
-		<action>EXEC /usr/bin/xamp kill 44</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Cafe</text>
-		<action>EXEC /usr/bin/xamp kill 45</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Top Tracks</text>
-		<action>EXEC /usr/bin/xamp kill 46</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Ethel</text>
-		<action>EXEC /usr/bin/xamp kill 47</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Squizz</text>
-		<action>EXEC /usr/bin/xamp kill 48</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Big Tracks</text>
-		<action>EXEC /usr/bin/xamp kill 49</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Loft</text>
-		<action>EXEC /usr/bin/xamp kill 50</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Music Lab</text>
-		<action>EXEC /usr/bin/xamp kill 51</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Verge</text>
-		<action>EXEC /usr/bin/xamp kill 52</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Fungus</text>
-		<action>EXEC /usr/bin/xamp kill 53</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Lucy</text>
-		<action>EXEC /usr/bin/xamp kill 54</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Soul Street</text>
-		<action>EXEC /usr/bin/xamp kill 60</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Flow</text>
-		<action>EXEC /usr/bin/xamp kill 61</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Suite 62</text>
-		<action>EXEC /usr/bin/xamp kill 62</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Groove</text>
-		<action>EXEC /usr/bin/xamp kill 64</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Rhyme</text>
-		<action>EXEC /usr/bin/xamp kill 65</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>RAW</text>
-		<action>EXEC /usr/bin/xamp kill 66</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The City</text>
-		<action>EXEC /usr/bin/xamp kill 67</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Heat</text>
-		<action>EXEC /usr/bin/xamp kill 68</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Real Jazz</text>
-		<action>EXEC /usr/bin/xamp kill 70</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Watercolors</text>
-		<action>EXEC /usr/bin/xamp kill 71</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Beyond Jazz</text>
-		<action>EXEC /usr/bin/xamp kill 72</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>High Standards</text>
-		<action>EXEC /usr/bin/xamp kill 73</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Bluesville</text>
-		<action>EXEC /usr/bin/xamp kill 74</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Hear Music</text>
-		<action>EXEC /usr/bin/xamp kill 75</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Fine Tuning</text>
-		<action>EXEC /usr/bin/xamp kill 76</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Audio Visions</text>
-		<action>EXEC /usr/bin/xamp kill 77</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Escape</text>
-		<action>EXEC /usr/bin/xamp kill 78</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>On The Rocks</text>
-		<action>EXEC /usr/bin/xamp kill 79</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Move</text>
-		<action>EXEC /usr/bin/xamp kill 80</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>BPM</text>
-		<action>EXEC /usr/bin/xamp kill 81</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The System</text>
-		<action>EXEC /usr/bin/xamp kill 82</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Chrome</text>
-		<action>EXEC /usr/bin/xamp kill 83</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM-Chill</text>
-		<action>EXEC /usr/bin/xamp kill 84</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Fuego</text>
-		<action>EXEC /usr/bin/xamp kill 90</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Viva</text>
-		<action>EXEC /usr/bin/xamp kill 91</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Aguila</text>
-		<action>EXEC /usr/bin/xamp kill 92</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Caliente</text>
-		<action>EXEC /usr/bin/xamp kill 94</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Luna</text>
-		<action>EXEC /usr/bin/xamp kill 95</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Air Musique</text>
-		<action>EXEC /usr/bin/xamp kill 100</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Joint</text>
-		<action>EXEC /usr/bin/xamp kill 101</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Sur La Route</text>
-		<action>EXEC /usr/bin/xamp kill 102</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>World Zone</text>
-		<action>EXEC /usr/bin/xamp kill 103</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Ngoma</text>
-		<action>EXEC /usr/bin/xamp kill 104</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Classics</text>
-		<action>EXEC /usr/bin/xamp kill 110</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Vox</text>
-		<action>EXEC /usr/bin/xamp kill 112</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Pops</text>
-		<action>EXEC /usr/bin/xamp kill 113</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Kids</text>
-		<action>EXEC /usr/bin/xamp kill 116</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Bob Edwards Show</text>
-		<action>EXEC /usr/bin/xamp kill 133</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>XM Comedy</text>
-		<action>EXEC /usr/bin/xamp kill 150</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Laugh USA</text>
-		<action>EXEC /usr/bin/xamp kill 151</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Special X</text>
-		<action>EXEC /usr/bin/xamp kill 154</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Agenda</text>
-		<action>EXEC /usr/bin/xamp kill 134</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Oprah and Friends</text>
-		<action>EXEC /usr/bin/xamp kill 156</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>The Virus</text>
-		<action>EXEC /usr/bin/xamp kill 202</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>1 Hit Wonders</text>
-		<action>EXEC /usr/bin/xamp kill 300</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Metalcore</text>
-		<action>EXEC /usr/bin/xamp kill 301</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>New Indie First</text>
-		<action>EXEC /usr/bin/xamp kill 302</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Late Night Mix</text>
-		<action>EXEC /usr/bin/xamp kill 303</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Sessions@AOL</text>
-		<action>EXEC /usr/bin/xamp kill 304</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>Shuffle</text>
-		<action>EXEC /usr/bin/xamp kill 305</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>New Rock First</text>
-		<action>EXEC /usr/bin/xamp kill 306</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>New Country First</text>
-		<action>EXEC /usr/bin/xamp kill 307</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>New Hip Hop First</text>
-		<action>EXEC /usr/bin/xamp kill 308</action>
-	</button>
-
-	<button>
-		<type>MUSIC</type>
-		<text>New Pop First</text>
-		<action>EXEC /usr/bin/xamp kill 309</action>
-	</button>
-
-	<button>
-		<type>TV_DELETE</type>
-		<text>Stop Listening</text>
-		<action>EXEC /usr/bin/xamp kill</action>
-	</button>
-
-</mythmenu>
diff --git a/abs/core/mythtv/stable-0.25/mythtv/myth.sh b/abs/core/mythtv/stable-0.25/mythtv/myth.sh
deleted file mode 100644
index fb7122c..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/myth.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-export PATH=$PATH:/usr/local/bin
-# set core file size to 0
-ulimit -c 0
-export MALLOC_CHECK_=0
\ No newline at end of file
diff --git a/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch b/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch
deleted file mode 100644
index a96051b..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/myth_settings.patch
+++ /dev/null
@@ -1,1981 +0,0 @@
-commit 9b4205fa320c06afde8c6d866b854cb12d3ec99c
-Author: root <root@localhost.localdomain>
-Date:   Fri Sep 28 14:25:06 2012 -0500
-
-    new patch
-    
-    Signed-off-by: root <root@localhost.localdomain>
-
-diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
-index 84cb01a..6e3c54a 100644
---- a/mythtv/libs/libmythbase/mythcorecontext.cpp
-+++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
-@@ -1260,6 +1260,90 @@ void MythCoreContext::ResetLanguage(void)
-     d->language.clear();
- }
- 
-+//JM ADDED
-+void MythCoreContext::savesettings_togroup (QString src_hostname,
-+                                            QString saved_settingsgroupname )
-+{
-+    return d->m_database->savesettings_togroup(src_hostname,
-+                                               saved_settingsgroupname);
-+}
-+
-+void MythCoreContext::deletesettings(QString delete_hostname,
-+                                     QString saved_settingsgroupname)
-+{
-+    return d->m_database->deletesettings(delete_hostname,
-+                                         saved_settingsgroupname);
-+}
-+
-+QMap<QString,QStringList> MythCoreContext::list_settingsgroupname()
-+{
-+    return d->m_database->list_settingsgroupname();
-+}
-+
-+QMap<QString,QStringList> MythCoreContext::diff_settingsgroupname(
-+    QString diff_hostname1,
-+    QString diff_hostname2,
-+    QStringList table_list)
-+{
-+    return d->m_database->diff_settingsgroupname(diff_hostname1,
-+                                                 diff_hostname2,
-+                                                 table_list);
-+}
-+
-+void MythCoreContext::clonesettings(QString src_hostname,
-+                                    QString saved_settingsgroupname,
-+                                    QStringList table_list,
-+                                    bool is_full_clone,
-+                                    QString dest_hostname)
-+{
-+    return d->m_database->clonesettings(src_hostname,
-+                                        saved_settingsgroupname,
-+                                        table_list,
-+                                        is_full_clone,
-+                                        dest_hostname);
-+}
-+
-+void MythCoreContext::restoresettings(QString dest_hostname,
-+                                      QString saved_settingsgroupname,
-+                                      QStringList table_list )
-+{
-+    return d->m_database->restoresettings( dest_hostname,
-+                                           saved_settingsgroupname,
-+                                           table_list);
-+}
-+
-+void MythCoreContext::change_hostname(QString old_hostname,
-+                                      QString new_hostname)
-+{
-+    return d->m_database->change_hostname(old_hostname, new_hostname) ;
-+}
-+
-+bool MythCoreContext::settings_check(QString src_hostname,
-+                                     QString saved_settingsgroupname)
-+{
-+    return d->m_database->settings_check(src_hostname,saved_settingsgroupname);
-+}
-+
-+void MythCoreContext::import_settings(QMap<QString,QString> vp_map,
-+                                      QString table)
-+{
-+    return d->m_database->import_settings(vp_map, table);
-+}
-+
-+
-+QMap<QString, QMap<QString,QString> > MythCoreContext::export_settings(
-+    QString src_hostname,
-+    QString saved_settingsgroupname,
-+    QStringList table_list, bool skip_host )
-+{
-+    return d->m_database->export_settings(src_hostname,
-+                                          saved_settingsgroupname,
-+                                          table_list , skip_host );
-+}
-+
-+//END JM ADDED
-+
-+
- void MythCoreContext::InitLocale(void )
- {
-     if (!d->m_locale)
-diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
-index 0917313..3f6d5f8 100644
---- a/mythtv/libs/libmythbase/mythcorecontext.h
-+++ b/mythtv/libs/libmythbase/mythcorecontext.h
-@@ -168,6 +168,40 @@ class MBASE_PUBLIC MythCoreContext : public MythObservable, public MythSocketCBs
-     QString GetLanguageAndVariant(void);
-     void ResetLanguage(void);
- 
-+    //JM ADDED
-+    void savesettings_togroup(QString src_hostname,
-+                              QString saved_settingsgroupname );
-+
-+    void deletesettings(QString delete_hostname,
-+                        QString saved_settingsgroupname);
-+
-+    QMap<QString,QStringList> list_settingsgroupname();
-+    QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
-+                                                     QString diff_hostname2,
-+                                                     QStringList table_list);
-+
-+    void clonesettings(QString src_hostname,
-+                       QString saved_settingsgroupname,
-+                       QStringList table_list,
-+                       bool is_full_clone=TRUE,
-+                       QString dest_hostname="");
-+
-+    void restoresettings (QString dest_hostname,
-+                          QString saved_settingsgroupname,
-+                          QStringList table_list);
-+
-+    void change_hostname (QString old_hostname, QString new_hostname);
-+
-+    bool settings_check (QString src_hostname ,QString saved_settingsgroupname);
-+    void import_settings(QMap<QString,QString> vp_map, QString table);
-+
-+    QMap<QString,QMap <QString,QString> > export_settings(
-+                                             QString src_hostname,
-+                                             QString saved_settingsgroupname,
-+                                             QStringList table_list,
-+                                             bool skip_host = FALSE );
-+    //END JM ADDED
-+
-   private:
-     MythCoreContextPrivate *d;
- 
-diff --git a/mythtv/libs/libmythbase/mythdb.cpp b/mythtv/libs/libmythbase/mythdb.cpp
-index ea30783..e4c1781 100644
---- a/mythtv/libs/libmythbase/mythdb.cpp
-+++ b/mythtv/libs/libmythbase/mythdb.cpp
-@@ -774,7 +774,7 @@ void MythDB::OverrideSettingForSession(
-     QString mk = key.toLower(), mk2 = d->m_localhostname + ' ' + mk, mv = value;
-     if ("dbschemaver" == mk)
-     {
--        LOG(VB_GENERAL, LOG_ERR, 
-+        LOG(VB_GENERAL, LOG_ERR,
-             QString("ERROR: Refusing to allow override for '%1'.").arg(key));
-         return;
-     }
-@@ -1055,6 +1055,1015 @@ void MythDB::WriteDelayedSettings(void)
-     }
- }
- 
-+//JM ADDED
-+void MythDB::savesettings_togroup(QString src_hostname,
-+                                  QString saved_settingsgroupname )
-+{
-+    LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
-+                                    .arg(src_hostname));
-+    LOG(VB_GENERAL, LOG_ERR, QString("Saving to group: %1")
-+                                    .arg(saved_settingsgroupname));
-+    if ( settings_check( src_hostname , "current" ) )
-+    {
-+        QStringList table_list;
-+        QString hostname_clause;
-+        table_list.append("settings");
-+        table_list.append("keybindings");
-+        table_list.append("jumppoints");
-+        if ( src_hostname == "GLOBAL" )
-+            hostname_clause = "hostname IS NULL";
-+        else
-+            hostname_clause ="hostname = :HOSTNAME";
-+
-+        foreach (QString table, table_list)
-+        {
-+            QString dest_tablename = table +"_" + saved_settingsgroupname ;
-+            create_new_table(dest_tablename,table);
-+
-+            QString query_string;
-+            // Remove old saved values
-+            MSqlQuery query(MSqlQuery::InitCon());
-+            query_string = QString("DELETE FROM %1 WHERE %2")
-+                                   .arg(dest_tablename)
-+                                   .arg(hostname_clause);
-+
-+            //query_string = QString("DELETE FROM %1 WHERE "
-+            //                       "hostname = :HOSTNAME").arg(dest_tablename);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME" ,src_hostname);
-+            query.exec();
-+
-+            //insert all new settings
-+            query_string = QString("REPLACE INTO %1 "
-+                                   "SELECT  * from %2 where %3")
-+                                   .arg(dest_tablename)
-+                                   .arg(table)
-+                                   .arg(hostname_clause);
-+//             query_string = QString("REPLACE INTO %1 "
-+//                               "SELECT  * from %2 where  hostname = :HOSTNAME)")
-+//                               .arg(dest_tablename)
-+//                               .arg(table);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME",src_hostname);
-+            query.exec();
-+        }
-+    }
-+    else
-+        LOG(VB_GENERAL| VB_STDIO|VB_FLUSH, LOG_ERR,
-+            QString("Couldn't find settings for: %1 \n").arg(src_hostname));
-+    return;
-+
-+};
-+
-+void MythDB::deletesettings(QString delete_hostname,
-+                            QString saved_settingsgroupname)
-+{
-+    LOG(VB_GENERAL, LOG_ERR, QString("Using hostname of : %1")
-+                                    .arg(delete_hostname));
-+    LOG(VB_GENERAL, LOG_ERR, QString("Deleting: %1")
-+                                    .arg(saved_settingsgroupname));
-+    int tempItem;
-+    QString src_tablename;
-+    QStringList table_list;
-+
-+    table_list.append("settings");
-+    table_list.append("keybindings");
-+    table_list.append("jumppoints");
-+    QString hostname_clause;
-+    if ( delete_hostname == "GLOBAL" )
-+        hostname_clause = "hostname IS NULL";
-+    else
-+        hostname_clause ="hostname = :HOSTNAME";
-+
-+    foreach (QString table, table_list)
-+    {
-+        src_tablename = find_group_table_name(table, saved_settingsgroupname);
-+        MSqlQuery query(MSqlQuery::InitCon());
-+        // Remove old saved values
-+        if ( does_table_exist(src_tablename))
-+        {
-+            QString query_string = QString("DELETE from %1 "
-+                                           "WHERE %2")
-+                                           .arg(src_tablename)
-+                                           .arg(hostname_clause);
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME" ,delete_hostname);
-+            query.exec();
-+
-+            //check if ok to delete table
-+            query_string = QString("SELECT count(*) from %1")
-+                                   .arg(src_tablename);
-+            query.prepare(query_string);
-+            if (query.exec() && query.isActive() && query.size() > 0)
-+            {
-+                query.next();
-+                tempItem = query.value(0).toInt();
-+                if (  tempItem == 0 )
-+                    drop_temp_table(src_tablename);
-+            }
-+        }
-+        else
-+            LOG(VB_GENERAL, LOG_ERR,
-+                QString("Couldn't find table: %1").arg(src_tablename));
-+    }
-+    return;
-+}; // end delete settings
-+
-+
-+QMap<QString,QStringList> MythDB::list_settingsgroupname()
-+{
-+    //Returns a QMAP of  "settings_groups: hostname"
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    MSqlQuery subquery(MSqlQuery::InitCon());
-+    QString tempItem;
-+    QString temp_hostnameItem;
-+    QStringList hostname_list;
-+    QMap<QString,QStringList> return_list;
-+    QString full_table_name;
-+    query.prepare( "show tables like \"settings%\" " );
-+    if (query.exec() && query.isActive() && query.size() > 0)
-+    {
-+        while (query.next())
-+        {
-+            full_table_name = query.value(0).toString();
-+            tempItem=query.value(0).toString().remove(QRegExp("settings_"));
-+            if ( tempItem != "distro_default" )
-+            {
-+                //loop over tables looking for hostnames
-+                QString query_string = QString("SELECT DISTINCT "
-+                                               "hostname from %1")
-+                                               .arg(full_table_name);
-+                subquery.prepare(query_string);
-+
-+                if (subquery.exec() && subquery.isActive()
-+                    && subquery.size() > 0)
-+                {
-+                    while (subquery.next())
-+                    {
-+                        temp_hostnameItem = subquery.value(0).toString();
-+                        hostname_list.append(temp_hostnameItem);
-+                    }
-+                }
-+                //Special case of naming for the settings table;
-+                //This only affects output.
-+                if ( tempItem  == "settings" )
-+                    return_list["current"] = hostname_list;
-+                else
-+                    return_list[tempItem] = hostname_list;
-+
-+                //reset hostname_list for the next group
-+                hostname_list = QStringList();
-+            }
-+        }
-+    }
-+    return return_list;
-+}; // end list_settingsgroupname
-+
-+QMap<QString,QStringList> MythDB::diff_settingsgroupname(
-+            QString diff_hostname1 ,
-+            QString diff_hostname2,
-+            QStringList table_list  )
-+{
-+   // Returns a QMAP of tablename : diff results
-+    LOG(VB_GENERAL, LOG_ERR, QString("Comparing settings for:"));
-+    LOG(VB_GENERAL, LOG_ERR, QString("host 1: %1").arg(diff_hostname1));
-+    LOG(VB_GENERAL, LOG_ERR, QString("host 2: %1").arg(diff_hostname2));
-+
-+    QString qstr;
-+    QString tempItem;
-+    QString tempString;
-+
-+    QStringList diff_list;
-+    QStringList settings_list;
-+    QStringList keybinding_list;
-+
-+    QMap<QString,QStringList> return_list;
-+    if ( table_list.isEmpty() )
-+    {
-+        table_list.append("settings");
-+        table_list.append("keybindings");
-+    }
-+
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    foreach (QString table, table_list)
-+    {
-+        if ( table == "settings")
-+        {
-+
-+            qstr= "SELECT  distinct settings.value, :DIFF_HOSTNAME1 AS `hostname`, settings_a.data, :DIFF_HOSTNAME2 AS `hostname`"
-+                  " , settings_b.data FROM settings LEFT JOIN settings AS settings_a ON settings_a.value = settings.value AND settings_a.hostname = :DIFF_HOSTNAME1"
-+                  " LEFT JOIN settings AS settings_b ON settings_b.value = settings.value AND settings_b.hostname = :DIFF_HOSTNAME2"
-+                  " WHERE settings_a.data != settings_b.data OR "
-+                  " (settings_a.data IS NULL AND settings_b.data IS NOT NULL) OR (settings_a.data IS NOT NULL AND settings_b.data IS NULL);";
-+
-+            query.prepare(qstr);
-+            query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
-+            query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
-+
-+            if (query.exec() && query.isActive() && query.size() > 0)
-+            {
-+                while (query.next())
-+                {
-+                    tempString="";
-+                    //value
-+                    tempItem = query.value(0).toString();
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //hostname_1
-+                    tempItem = query.value(1).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem=diff_hostname1;
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //data
-+                    tempItem = query.value(2).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem="NULL";
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //hostname_2
-+                    tempItem = query.value(3).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem=diff_hostname2;
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //data
-+                    tempItem = query.value(4).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem="NULL";
-+                    tempString.append(tempItem);
-+
-+                    settings_list.append(tempString);
-+                }
-+                return_list["Settings"] = settings_list;
-+            }
-+        }
-+        else if ( table == "keybindings")
-+        {
-+
-+            qstr="SELECT distinct  keybindings.context, keybindings.action, :DIFF_HOSTNAME1 AS `hostname`, keybindings_a.keylist, :DIFF_HOSTNAME2 AS `hostname`, keybindings_b.keylist FROM keybindings "
-+                 " LEFT JOIN keybindings AS keybindings_a ON keybindings_a.context = keybindings.context AND keybindings_a.action = keybindings.action "
-+                 " AND keybindings_a.hostname = :DIFF_HOSTNAME1 "
-+                 " LEFT JOIN keybindings AS keybindings_b ON keybindings_b.context = keybindings.context "
-+                 " AND keybindings_b.action = keybindings.action AND keybindings_b.hostname = :DIFF_HOSTNAME2 "
-+                 " WHERE keybindings_a.keylist != keybindings_b.keylist OR "
-+                 " (keybindings_a.keylist IS NULL AND keybindings_b.keylist IS NOT NULL) OR (keybindings_a.keylist IS NOT NULL AND keybindings_b.keylist IS NULL);";
-+            query.prepare(qstr);
-+            query.bindValue(":DIFF_HOSTNAME1" , diff_hostname1);
-+            query.bindValue(":DIFF_HOSTNAME2" , diff_hostname2);
-+
-+            if (query.exec() && query.isActive() && query.size() > 0)
-+            {
-+                while (query.next())
-+                {
-+                    tempString="";
-+                    //context
-+                    tempItem = query.value(0).toString();
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //action
-+                    tempItem = query.value(1).toString();
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //hostname
-+                    tempItem = query.value(2).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem=diff_hostname1;
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //keylist
-+                    tempItem = query.value(3).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem="NULL";
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //hostname
-+                    tempItem = query.value(4).toString();
-+                    if (tempItem.isEmpty())
-+                        tempItem=diff_hostname2;
-+                    tempString.append(tempItem);
-+                    tempString.append("|");
-+
-+                    //keylist
-+                    tempItem = query.value(5).toString();
-+                    if (tempItem.isEmpty())
-+                       tempItem="NULL";
-+                    tempString.append(tempItem);
-+                    keybinding_list.append(tempString);
-+                }
-+                return_list["Keybindings"] = keybinding_list;
-+            }
-+        }
-+
-+    }
-+    return return_list;
-+}; //end diff_settingsgroupname
-+
-+void MythDB::clonesettings(QString src_hostname,
-+                           QString saved_settingsgroupname,
-+                           QStringList table_list,
-+                           bool is_full_clone, QString dest_hostname)
-+{
-+    LOG(VB_GENERAL, LOG_ERR, QString("Using src hostname of : %1")
-+                                     .arg(src_hostname));
-+    LOG(VB_GENERAL, LOG_ERR, QString("Using dest hostname of : %1")
-+                                     .arg(dest_hostname));
-+    LOG(VB_GENERAL, LOG_ERR, QString("Cloning setting group: %1")
-+                                     .arg(saved_settingsgroupname));
-+    LOG(VB_GENERAL, LOG_ERR, QString("Full Copy : %1")
-+                                     .arg(is_full_clone));
-+
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    QStringList::Iterator it;
-+    QString current_table;
-+    QString dest_tablename;
-+    QString temptable;
-+
-+    if ( table_list.isEmpty() )
-+    {
-+        table_list.append("settings");
-+        table_list.append("keybindings");
-+        table_list.append("jumppoints");
-+    }
-+
-+    for ( it = table_list.begin(); it != table_list.end(); ++it )
-+    {
-+        current_table = *it ;
-+        dest_tablename = find_group_table_name(current_table,
-+                                               saved_settingsgroupname);
-+
-+        if ( does_table_exist(dest_tablename))
-+        {
-+            // create temp table for merging settings
-+            temptable="temp_table_" + dest_tablename;
-+            create_temp_table(temptable, current_table );
-+
-+            // copy in stored settings
-+            QString query_string = QString("REPLACE INTO %1 "
-+                             "(SELECT  * from %2 where  hostname = :HOSTNAME)")
-+                             .arg(temptable)
-+                             .arg(dest_tablename);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME",src_hostname );
-+            query.exec();
-+
-+            // update hostname for dest_hostname
-+            query_string = QString("UPDATE   %1 set hostname = :HOSTNAME")
-+                                   .arg(temptable);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME" , dest_hostname );
-+            query.exec();
-+
-+            //if not full clone remove HOST% settings from temp table;
-+            if ( current_table == "settings" && !is_full_clone)
-+            {
-+                query_string = QString("DELETE FROM %1 WHERE "
-+                                 "hostname=:HOSTNAME and value like 'HOST%' " )
-+                                 .arg(temptable);
-+
-+                query.prepare(query_string);
-+                query.bindValue( ":HOSTNAME" ,   dest_hostname  );
-+                query.exec();
-+            }
-+
-+            //remove current settings from dest table,
-+            //if not full clone, then leave HOST%
-+            //Need to remove because the old table allows for duplicates
-+
-+            if ( current_table == "settings" && !is_full_clone)
-+                query_string = QString ("DELETE FROM %1 WHERE "
-+                                        "hostname = :HOSTNAME "
-+                                        "and value not like 'HOST%'")
-+                                        .arg(dest_tablename);
-+
-+            else
-+                query_string = QString ("DELETE FROM %1 WHERE "
-+                                        "hostname = :HOSTNAME ")
-+                                        .arg(dest_tablename);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME",dest_hostname);
-+            query.exec();
-+
-+            // copy new settings from temp to current
-+            query_string = QString("REPLACE INTO %1 "
-+                                   "(SELECT  * from %2)")
-+                                   .arg(dest_tablename)
-+                                   .arg(temptable);
-+
-+            query.prepare(query_string);
-+            query.exec();
-+
-+            // drop temptable
-+            drop_temp_table(temptable);
-+        }
-+        else
-+            LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
-+                                                .arg(dest_tablename));
-+    }
-+}; //end clonesettings
-+
-+void MythDB::restoresettings (QString dest_hostname,
-+                              QString saved_settingsgroupname,
-+                              QStringList table_list )
-+{
-+    LOG(VB_GENERAL, LOG_NOTICE, QString("Restoring Settings:"));
-+    LOG(VB_GENERAL, LOG_NOTICE, QString("    src: %1")
-+                                        .arg(saved_settingsgroupname));
-+    LOG(VB_GENERAL, LOG_NOTICE, QString("    dest:%1")
-+                                        .arg(dest_hostname));
-+
-+    QString hostname_clause;
-+    if ( dest_hostname == "GLOBAL" )
-+        hostname_clause = "hostname IS NULL";
-+    else
-+        hostname_clause ="hostname = :HOSTNAME";
-+
-+    bool table_check;
-+    if ( saved_settingsgroupname == "distro_default" )
-+        table_check =  settings_check ( "distro_default" , saved_settingsgroupname );
-+    else
-+        table_check = settings_check ( dest_hostname , saved_settingsgroupname );
-+
-+
-+    if ( table_check == TRUE )
-+    {
-+        MSqlQuery query(MSqlQuery::InitCon());
-+        QStringList::Iterator it;
-+        QString current_table;
-+        if ( table_list.isEmpty() )
-+        {
-+            table_list.append("settings");
-+            table_list.append("keybindings");
-+            table_list.append("jumppoints");
-+        }
-+
-+        for ( it = table_list.begin(); it != table_list.end(); ++it )
-+        {
-+            current_table = *it ;
-+            //find tablenames to use
-+            QString src_tablename = find_group_table_name(current_table,
-+                                         saved_settingsgroupname);
-+
-+            QString temptable="temp_table_" + src_tablename;
-+            if ( ! does_table_exist(src_tablename))
-+            {
-+                LOG(VB_GENERAL, LOG_NOTICE, QString("table does not exist: %1")
-+                        .arg(src_tablename));
-+                continue;
-+            }
-+            // create temp table for merging settings
-+            create_temp_table(temptable, current_table );
-+
-+            //could copy in current settings here to account for new stuff
-+
-+
-+
-+            // copy in stored settings
-+            QString query_string;
-+            if ( saved_settingsgroupname == "distro_default" )
-+            {  //special case for restoring default settings
-+                query_string = QString("REPLACE INTO %1 "
-+                    "(SELECT  * from %2 WHERE %3)")
-+                    .arg(temptable)
-+                    .arg(src_tablename)
-+                    .arg(hostname_clause);
-+
-+                query.prepare(query_string);
-+                query.bindValue(":HOSTNAME", "distro_default" );
-+                query.exec();
-+
-+                // update hostname in temp table from distro_default
-+                query_string = QString("UPDATE  %1 set hostname = :HOSTNAME")
-+                                       .arg(temptable);
-+
-+                query.prepare(query_string);
-+                query.bindValue(":HOSTNAME" , dest_hostname );
-+                query.exec();
-+
-+            }
-+            else
-+            {   //normal use case
-+                query_string = QString("REPLACE INTO %1 "
-+                                "(SELECT  * from %2 WHERE %3)")
-+                                .arg(temptable)
-+                                .arg(src_tablename)
-+                                .arg(hostname_clause);
-+
-+                query.prepare(query_string);
-+                query.bindValue(":HOSTNAME",dest_hostname );
-+                query.exec();
-+            }
-+
-+            //Remove current settings.
-+            //Need to remove because the old table allows for duplicates
-+            query_string = QString("DELETE FROM %1 WHERE "
-+                                   "%2")
-+                                   .arg(current_table)
-+                                   .arg(hostname_clause);
-+
-+            query.prepare(query_string);
-+            query.bindValue(":HOSTNAME",dest_hostname);
-+            query.exec();
-+
-+            // copy new settings from temp to current
-+            query_string = QString("REPLACE INTO %1 "
-+                                   "(SELECT  * from %2)")
-+                                   .arg(current_table)
-+                                   .arg(temptable);
-+
-+            query.prepare(query_string);
-+            query.exec();
-+            // drop temptable
-+            drop_temp_table(temptable);
-+        }
-+    }
-+}; //end restore settings
-+
-+void MythDB::change_hostname (QString old_hostname, QString new_hostname)
-+{
-+    LOG(VB_GENERAL, LOG_NOTICE, QString("Changing hostname from %1 -> %2")
-+                                        .arg(old_hostname)
-+                                        .arg(new_hostname));
-+
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    MSqlQuery sub_query(MSqlQuery::InitCon());
-+    query.prepare( "SHOW TABLES" );
-+
-+    if (query.exec() && query.isActive() && query.size() > 0)
-+    {
-+        while (query.next())
-+        {
-+            QString table_name = query.value(0).toString();
-+            LOG(VB_GENERAL, LOG_NOTICE, QString("Scanning  %1")
-+                                                .arg(table_name));
-+
-+            // LOOP OVER TABLES, CHECK IF IT HAS A HOSTNAME FIELD
-+            QString query_string=QString("SHOW COLUMNS from %1 "
-+                                         "where field='hostname'")
-+                                         .arg(table_name);
-+            sub_query.prepare(query_string);
-+
-+            if (sub_query.exec() && sub_query.size() > 0)
-+            {  //update hostname
-+               LOG(VB_GENERAL, LOG_NOTICE, QString("  Updating hostname in: %1")
-+                                                   .arg(table_name));
-+               query_string = QString("UPDATE %1 SET hostname = :NEW_HOSTNAME "
-+                               "WHERE hostname = :OLD_HOSTNAME")
-+                               .arg(table_name);
-+               sub_query.prepare(query_string);
-+               sub_query.bindValue(":NEW_HOSTNAME" , new_hostname);
-+               sub_query.bindValue(":OLD_HOSTNAME" , old_hostname);
-+               sub_query.exec();
-+            }
-+        }
-+    }
-+
-+
-+
-+
-+
-+
-+}
-+
-+bool MythDB::settings_check(QString src_hostname,
-+                            QString saved_settingsgroupname)
-+{
-+    int tempItem;
-+    bool returncode = FALSE ;
-+    QString table="settings";
-+
-+    QString tablename = find_group_table_name(table, saved_settingsgroupname);
-+    QString hostname_clause;
-+    if ( src_hostname == "GLOBAL" )
-+        hostname_clause = "hostname IS NULL";
-+    else
-+        hostname_clause ="hostname = :HOSTNAME";
-+
-+    if (does_table_exist (tablename))
-+    {
-+        MSqlQuery query(MSqlQuery::InitCon());
-+        QString query_string = QString("SELECT COUNT(data) from %1 "
-+                                       "WHERE %2")
-+                                       .arg(tablename)
-+                                       .arg(hostname_clause);
-+
-+        query.prepare(query_string);
-+        query.bindValue(":HOSTNAME" , src_hostname );
-+
-+        if (query.exec() && query.isActive() && query.size() > 0 )
-+        {
-+            while (query.next())
-+            {
-+                 tempItem = query.value(0).toInt();
-+                 if (  tempItem >= 1 )
-+                     returncode = TRUE;
-+                 else
-+                 {
-+                     LOG(VB_GENERAL, LOG_NOTICE,
-+                         QString("Group %1 does not contain"
-+                                 " valid settings")
-+                                 .arg(saved_settingsgroupname));
-+                 }
-+             }
-+        }
-+    }
-+    else
-+       LOG(VB_GENERAL, LOG_NOTICE, QString("Couldn't find table: %1")
-+                                           .arg(tablename));
-+    return returncode;
-+}; // end settings_check
-+
-+void MythDB::import_settings(QMap<QString,QString> vp_map,
-+                             QString table)
-+{
-+    MSqlQuery query(MSqlQuery::InitCon());
-+
-+    //IMPORT SETTINGS TABLE
-+    if (table.startsWith("settings"))
-+    {
-+         if ( table != "settings" )
-+             create_new_table(table,"settings");
-+         QString hostname = vp_map.value("hostname");
-+         QString value = vp_map.value("value");
-+         QString data = vp_map.value("data");
-+
-+         QString hostname_clause;
-+         QVariant import_hostname = QVariant(QVariant::String);
-+
-+         if ( hostname.isEmpty())
-+             hostname_clause = "hostname IS NULL";
-+         else
-+         {
-+             hostname_clause ="hostname = :HOSTNAME";
-+             import_hostname = hostname;
-+         }
-+
-+         QString query_string=QString("SELECT  value, data, hostname "
-+                              "FROM %1 "
-+                              "WHERE %2 AND value = :VALUE "
-+                              "ORDER BY value")
-+                              .arg(table)
-+                              .arg(hostname_clause);
-+
-+         query.prepare(query_string);
-+         query.bindValue(":HOSTNAME", hostname);
-+         query.bindValue(":VALUE", value);
-+
-+         // if already exisiting records then update, otherwise insert
-+         if (query.exec() && query.isActive())
-+         {
-+            MSqlQuery sub_query(MSqlQuery::InitCon());
-+            if ( query.size() > 0 )
-+            {
-+                query_string = QString("UPDATE  "
-+                    "%1 "
-+                    "set data = :DATA "
-+                    "WHERE %2 AND "
-+                    "value = :VALUE ")
-+                    .arg(table)
-+                    .arg(hostname_clause);
-+
-+                sub_query.prepare(query_string);
-+                sub_query.bindValue(":HOSTNAME", import_hostname);
-+                sub_query.bindValue(":VALUE", value);
-+                sub_query.bindValue(":DATA", data);
-+                sub_query.exec();
-+            }
-+            else
-+            {
-+                 query_string = QString("INSERT INTO   "
-+                    " %1 "
-+                    "(value,data,hostname) "
-+                    "VALUES ( :VALUE , :DATA , :HOSTNAME)").arg(table);
-+
-+                sub_query.prepare(query_string);
-+                sub_query.bindValue(":HOSTNAME", import_hostname);
-+                sub_query.bindValue(":VALUE", value);
-+                sub_query.bindValue(":DATA", data);
-+                sub_query.exec();
-+            }
-+        }
-+    }
-+    //KEYBINDINGS TABLE
-+    else if (table.startsWith("keybindings"))
-+    {
-+       if ( table !=  "keybindings" )
-+           create_new_table(table,"keybindings");
-+       QString hostname = vp_map.value("hostname");
-+       QString context = vp_map.value("context");
-+       QString action = vp_map.value("action");
-+       QString description = vp_map.value("description");
-+       QString keylist = vp_map.value("keylist");
-+
-+       QString query_string=QString("SELECT  context,action,hostname "
-+           "FROM %1 "
-+           "WHERE hostname = :HOSTNAME AND "
-+           "context = :CONTEXT "
-+           "AND action = :ACTION ").arg(table);
-+       query.prepare(query_string);
-+       query.bindValue(":HOSTNAME", hostname);
-+       query.bindValue(":CONTEXT", context);
-+       query.bindValue(":ACTION", action);
-+
-+       if (query.exec() && query.isActive())
-+       {
-+           MSqlQuery sub_query(MSqlQuery::InitCon());
-+           if ( query.size() > 0 )
-+           {
-+               query_string = QString("UPDATE  "
-+               " %1 "
-+               "set keylist = :KEYLIST "
-+               "WHERE hostname = :HOSTNAME AND "
-+               "context = :CONTEXT "
-+               "AND action = :ACTION ").arg(table);
-+
-+               sub_query.prepare(query_string);
-+               sub_query.bindValue(":HOSTNAME", hostname);
-+               sub_query.bindValue(":KEYLIST", keylist);
-+               sub_query.bindValue(":CONTEXT", context);
-+               sub_query.bindValue(":ACTION", action);
-+               sub_query.exec();
-+           }
-+           else
-+           {
-+               query_string = QString("INSERT INTO "
-+               " %1 "
-+               " (context , action , description , keylist , hostname) "
-+               " VALUES( "
-+               " :CONTEXT ,"
-+               " :ACTION , "
-+               " :DESCRIPTION , "
-+               " :KEYLIST , "
-+               " :HOSTNAME)").arg(table) ;
-+
-+               sub_query.prepare(query_string);
-+               sub_query.bindValue(":HOSTNAME", hostname);
-+               sub_query.bindValue(":KEYLIST", keylist);
-+               sub_query.bindValue(":CONTEXT", context);
-+               sub_query.bindValue(":ACTION", action);
-+               sub_query.bindValue(":DESCRIPTION", description);
-+               sub_query.exec();
-+           }
-+       }
-+   }
-+   //JUMP POINTS
-+   else if (table.startsWith("jumppoints"))
-+   {
-+       if ( table != "jumppoints" )
-+           create_new_table(table,"jumppoints");
-+       QString hostname = vp_map.value("hostname");
-+       QString description = vp_map.value("description");
-+       QString destination = vp_map.value("destination");
-+       QString keylist = vp_map.value("keylist");
-+
-+       QString query_string=QString("SELECT  destination, keylist  "
-+        "FROM %1 "
-+        "WHERE hostname = :HOSTNAME AND "
-+        "destination = :DESTINATION "
-+        "AND keylist = :KEYLIST ").arg(table);
-+       query.prepare(query_string);
-+       query.bindValue(":HOSTNAME", hostname);
-+       query.bindValue(":DESTINATION", destination);
-+       query.bindValue(":KEYLIST", keylist);
-+
-+       if (query.exec() && query.isActive())
-+       {
-+           MSqlQuery sub_query(MSqlQuery::InitCon());
-+           if ( query.size() > 0 )
-+           {
-+               query_string = QString("UPDATE  "
-+               " %1 "
-+               "set keylist = :KEYLIST "
-+               "WHERE hostname = :HOSTNAME AND "
-+               "destination = :DESTINATION ").arg(table);
-+
-+               sub_query.prepare(query_string);
-+               sub_query.bindValue(":HOSTNAME", hostname);
-+               sub_query.bindValue(":KEYLIST", keylist);
-+               sub_query.bindValue(":DESTINATION", destination);
-+               sub_query.exec();
-+           }
-+           else
-+           {
-+               query_string = QString("INSERT INTO "
-+               " %1 "
-+               " (description , destination,  keylist , hostname) "
-+               " VALUES( "
-+               " :DESCRIPTION ,"
-+               " :DESTINATION , "
-+               " :KEYLIST , "
-+               " :HOSTNAME)").arg(table) ;
-+
-+               sub_query.prepare(query_string);
-+               sub_query.bindValue(":HOSTNAME", hostname);
-+               sub_query.bindValue(":KEYLIST", keylist);
-+               sub_query.bindValue(":DESTINATION", destination);
-+               sub_query.bindValue(":DESCRIPTION", description);
-+               sub_query.exec();
-+           }
-+       }
-+   }
-+}; //end import_settings
-+
-+QMap<QString, QMap<QString,QString> >
-+            MythDB::export_settings(QString src_hostname,
-+                                    QString saved_settingsgroupname,
-+                                    QStringList table_list, bool skip_host )
-+{
-+    QMap<QString, QMap<QString,QString> >  result_set;
-+    QStringList::Iterator it;
-+    QString current_table;
-+    int record_count = 0;
-+
-+    if ( table_list.isEmpty() )
-+    {
-+        table_list.append("settings");
-+        table_list.append("keybindings");
-+        table_list.append("jumppoints");
-+    }
-+
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    QString query_string;
-+
-+    //loop over tablelist
-+    for ( it = table_list.begin(); it != table_list.end(); ++it )
-+    {
-+        current_table = *it ;
-+        QString sub_sql;
-+        QStringList fields;
-+        QString field_query;
-+
-+        QString table_name = find_group_table_name(current_table,
-+                                                   saved_settingsgroupname);
-+
-+        QString hostname_clause;
-+        if ( src_hostname == "GLOBAL" )
-+            hostname_clause = "hostname IS NULL";
-+        else
-+            hostname_clause ="hostname = :HOSTNAME";
-+
-+        // find field names
-+        query_string = QString("SHOW COLUMNS from %1").arg(table_name);
-+        query.prepare(query_string);
-+
-+        //build up field name vars
-+        if (query.exec() && query.isActive() && query.size() > 0)
-+        {
-+            while (query.next())
-+            {
-+                if (! field_query.isEmpty())
-+                    field_query +=',';
-+                QString tempItem = query.value(0).toString();
-+                fields.append(tempItem);
-+                field_query += tempItem;
-+            }
-+        }
-+        // when working with settings table skip HOST if skip_host is true
-+        if ( current_table == "settings" && skip_host == TRUE )
-+        {
-+            QString skip_host_clause;
-+            skip_host_clause = " VALUE not like 'HOST%' AND DATA not like 'HardwareProfile%UUID'" ;
-+            query_string = QString("SELECT %1 FROM %2 WHERE %3 AND %4")
-+            .arg(field_query)
-+            .arg(table_name)
-+            .arg(hostname_clause)
-+            .arg(skip_host_clause);
-+
-+        }
-+        else
-+        {
-+            query_string = QString("SELECT %1 FROM %2 WHERE %3")
-+                                .arg(field_query)
-+                                .arg(table_name)
-+                                .arg(hostname_clause);
-+        }
-+        query.prepare(query_string);
-+        query.bindValue(":HOSTNAME" , src_hostname);
-+
-+        //looping over each record in the table query
-+        if (query.exec() && query.isActive() && query.size() > 0)
-+        {
-+            while (query.next())
-+            {
-+                //construct qmap of elements
-+                //add table name
-+                QMap<QString,QString> value_pair;
-+                value_pair["table"]=table_name;
-+
-+                for ( int i=0 ; i < fields.size();i++ )
-+                {
-+                    QString tempvalue = fields[i];
-+                    QString tempItem = query.value(i).toString();
-+                    value_pair[tempvalue]=tempItem;
-+                }
-+                result_set[QString(record_count)] = value_pair;
-+                record_count++;
-+            }
-+        }
-+
-+    } // end table loop
-+    return result_set;
-+}; //end export_settings
-+
-+
-+void MythDB::create_new_table (QString create_table_name,QString like_name)
-+{
-+    if ( ! does_table_exist(create_table_name))
-+    {
-+        MSqlQuery query(MSqlQuery::InitCon());
-+        QString query_string = QString("CREATE TABLE %1 like %2")
-+                                       .arg(create_table_name)
-+                                       .arg(like_name);
-+
-+        query.prepare(query_string);
-+        query.exec();
-+    }
-+    else
-+        LOG(VB_GENERAL, LOG_NOTICE, QString("Table is already present,"
-+                                            "will not create it: %1")
-+                                            .arg(create_table_name));
-+};
-+
-+
-+void MythDB::drop_temp_table (QString table_name)
-+{
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    if (table_name == "settings" | table_name == "keybindings" | table_name == "jumppoints")
-+        return;
-+    QString query_string = QString("DROP TABLE %1").arg(table_name);
-+    query.prepare(query_string);
-+    query.exec();
-+    return;
-+}
-+
-+void MythDB::create_temp_table (QString create_table_name,QString like_name)
-+{
-+    MSqlQuery query(MSqlQuery::InitCon());
-+    create_new_table(create_table_name,like_name);
-+    QString query_string;
-+    if ( like_name == "settings")
-+    {
-+         query_string = QString ("ALTER TABLE %1 ADD UNIQUE( value)")
-+                                 .arg(create_table_name);
-+         query.prepare(query_string);
-+         query.exec();
-+    }
-+
-+    query_string = QString("TRUNCATE %1").arg(create_table_name);
-+    query.prepare(query_string);
-+    query.exec();
-+ return;
-+}
-+
-+bool MythDB::does_table_exist(QString table_name)
-+{
-+    bool table_exist = FALSE;
-+    QString full_table_name;
-+    MSqlQuery query(MSqlQuery::InitCon());
-+
-+    query.prepare( "SHOW TABLES" );
-+    if (query.exec() && query.isActive() && query.size() > 0)
-+    {
-+        while (query.next())
-+        {
-+            full_table_name = query.value(0).toString();
-+            if (table_name == full_table_name)
-+            {
-+                table_exist = TRUE;
-+                break;
-+            }
-+        }
-+    }
-+    return table_exist;
-+};
-+
-+
-+QString MythDB::find_group_table_name(QString current_table,
-+                                      QString saved_settingsgroupname)
-+{
-+    QString table_name;
-+    if ( saved_settingsgroupname.toLower() == "current" )
-+        table_name =  current_table ;
-+    else
-+        table_name =  current_table + "_" + saved_settingsgroupname ;
-+
-+   return table_name;
-+};
-+//END JM ADDED
-+
- /**
-  *  \brief Set a flag indicating we have successfully connected to the database
-  */
-diff --git a/mythtv/libs/libmythbase/mythdb.h b/mythtv/libs/libmythbase/mythdb.h
-index 79abe56..fd6044e 100644
---- a/mythtv/libs/libmythbase/mythdb.h
-+++ b/mythtv/libs/libmythbase/mythdb.h
-@@ -75,6 +75,49 @@ class MBASE_PUBLIC MythDB
- 
-     void WriteDelayedSettings(void);
- 
-+    //JM ADDED
-+    void savesettings_togroup(QString src_hostname,
-+                              QString saved_settingsgroupname );
-+    void deletesettings(QString delete_hostname,
-+                        QString saved_settingsgroupname);
-+
-+    QMap<QString,QStringList> list_settingsgroupname();
-+
-+    QMap<QString,QStringList> diff_settingsgroupname(QString diff_hostname1,
-+                                                     QString diff_hostname2,
-+                                                     QStringList table_list);
-+
-+    void clonesettings(QString src_hostname,
-+                       QString saved_settingsgroupname,
-+                       QStringList table_list,
-+                       bool is_full_clone=TRUE,
-+                       QString dest_hostname="");
-+
-+    void restoresettings (QString dest_hostname,
-+                          QString saved_settingsgroupname,
-+                          QStringList table_list);
-+
-+    void change_hostname (QString old_hostname, QString new_hostname);
-+    bool settings_check (QString src_hostname, QString saved_settingsgroupname);
-+    void import_settings(QMap<QString,QString> vp_map, QString table);
-+
-+
-+    QMap<QString,QMap <QString,QString> > export_settings(
-+                         QString src_hostname,
-+                         QString saved_settingsgroupname,
-+                         QStringList table_list,
-+                         bool skip_host = FALSE);
-+
-+    void create_new_table (QString create_table_name,QString like_name);
-+    void drop_temp_table (QString table_name);
-+    void create_temp_table (QString create_table_name,QString like_name);
-+    bool does_table_exist(QString table_name);
-+    QString find_group_table_name(QString current_table,
-+                                  QString saved_settingsgroupname);
-+    //END JM ADDED
-+
-+
-+
-     void SetHaveDBConnection(bool connected);
-     void SetHaveSchema(bool schema);
-     bool HaveSchema(void) const;
-diff --git a/mythtv/programs/mythutil/commandlineparser.cpp b/mythtv/programs/mythutil/commandlineparser.cpp
-index f4a6035..fdeeb8e 100644
---- a/mythtv/programs/mythutil/commandlineparser.cpp
-+++ b/mythtv/programs/mythutil/commandlineparser.cpp
-@@ -118,6 +118,37 @@ void MythUtilCommandLineParser::LoadArguments(void)
-         << add("--print-template", "printtemplate", false,
-                 "Print the template to be sent to the frontend", "")
-                 ->SetGroup("Messaging")
-+
-+        //settingsutil.cpp
-+        << add("--save-settings", "savesettings", false,
-+                "Save current settings", "")
-+                ->SetGroup("Settings")
-+        << add("--delete-settings", "deletesettings", false,
-+                "Delete current settings", "")
-+                ->SetGroup("Settings")
-+        << add("--restore-settings", "restoresettings", false,
-+                "Restore settings from previous backup", "")
-+                ->SetGroup("Settings")
-+        << add("--list-groups", "listgroups", false,
-+                "List hosts and groups of settings", "")
-+                ->SetGroup("Settings")
-+        << add("--copy-settings", "copysettings", false,
-+                "Copy or Clone settings from one host to another", "")
-+                ->SetGroup("Settings")
-+        << add("--diff-settings", "diffsettings", false,
-+                "Show settings that are different between two hosts", "")
-+                ->SetGroup("Settings")
-+        << add("--change-hostname", "changehostname", false,
-+                 "Change the hostname", "")
-+                ->SetGroup("Settings")
-+        << add("--import-settings", "importsettings", false,
-+               "import settings", "")
-+                ->SetRequiredChild("infile")
-+
-+        << add("--export-settings", "exportsettings", false,
-+               "export settings", "")
-+               ->SetRequiredChild("outfile")
-+
-         );
- 
-     // mpegutils.cpp
-@@ -140,6 +171,59 @@ void MythUtilCommandLineParser::LoadArguments(void)
-     add("--bcastaddr", "bcastaddr", "127.0.0.1", "(optional) IP address to send to", "")
-         ->SetChildOf("message");
- 
-+    //settingsutils.cpp
-+    add("--groupname", "groupname", "", "Group of settings name", "")
-+        ->SetRequiredChildOf("savesettings")
-+        ->SetRequiredChildOf("restoresettings")
-+        ->SetRequiredChildOf("deletesettings")
-+        ->SetChildOf("copysettings");
-+
-+    add("--hostname", "hostname", "", "System name to save/restore settings", "")
-+        ->SetChildOf("savesettings")
-+        ->SetChildOf("restoresettings")
-+        ->SetChildOf("copysettings")
-+        ->SetChildOf("deletesettings")
-+        ->SetChildOf("exportsettings")
-+        ->SetChildOf("importsettings");
-+
-+    add("--host_1", "host_1", "", "First host in compare list", "")
-+        ->SetRequiredChildOf("diffsettings");
-+
-+    add("--host_2", "host_2", "", "Second host in compare list", "")
-+        ->SetRequiredChildOf("diffsettings");
-+
-+
-+    add("--tablelist", "table_list", "", "List of tables to operate on "
-+        "[keybindings,settings]", "")
-+        ->SetChildOf("diffsettings")
-+        ->SetChildOf("restoresettings")
-+        ->SetChildOf("copysettings")
-+        ->SetChildOf("exportsettings");
-+
-+    add("--clone", "fullclone", false, "Enable copy of all settings, "
-+        "including those that are unique to each system.", "")
-+        ->SetChildOf("copysettings");
-+
-+
-+    add("--old-host", "oldhost", "", "Hostname to change", "")
-+        ->SetRequiredChildOf("changehostname");
-+
-+    add("--new-host", "newhost", "", "New hostname", "")
-+        ->SetRequiredChildOf("changehostname")
-+        ->SetRequiredChildOf("copysettings");
-+
-+    add("--format", "format", false, "Format output of differences", "")
-+        ->SetChildOf("diffsettings");
-+    add("--distro-default", "distro-default", false, "Export settings for"
-+        "import into the default table", "")
-+        ->SetChildOf("exportsettings");
-+    add("--generic", "generic", false, "export settings without saving "
-+        "the hostname", "")
-+        ->SetChildOf("exportsettings");
-+
-+
-+
-+
-     // Generic Options used by more than one utility
-     addRecording();
-     addInFile(true);
-diff --git a/mythtv/programs/mythutil/main.cpp b/mythtv/programs/mythutil/main.cpp
-index 418ea01..bd4a1f4 100644
---- a/mythtv/programs/mythutil/main.cpp
-+++ b/mythtv/programs/mythutil/main.cpp
-@@ -20,7 +20,7 @@
- #include "jobutils.h"
- #include "markuputils.h"
- #include "messageutils.h"
--
-+#include "settingsutils.h"
- 
- int main(int argc, char *argv[])
- {
-@@ -92,6 +92,7 @@ int main(int argc, char *argv[])
-     registerJobUtils(utilMap);
-     registerMarkupUtils(utilMap);
-     registerMessageUtils(utilMap);
-+    registerSettingsUtils(utilMap);
- 
-     bool cmdFound = false;
-     int cmdResult = GENERIC_EXIT_OK;
-diff --git a/mythtv/programs/mythutil/mythutil.pro b/mythtv/programs/mythutil/mythutil.pro
-index 066e618..87d7952 100644
---- a/mythtv/programs/mythutil/mythutil.pro
-+++ b/mythtv/programs/mythutil/mythutil.pro
-@@ -10,7 +10,7 @@ TARGET = mythutil
- target.path = $${PREFIX}/bin
- INSTALLS = target
- 
--LIBS += $$EXTRA_LIBS 
-+LIBS += $$EXTRA_LIBS
- INCLUDEPATH += ../../libs/libmythbase
- 
- QMAKE_CLEAN += $(TARGET)
-@@ -19,8 +19,10 @@ QMAKE_CLEAN += $(TARGET)
- HEADERS += mythutil.h commandlineparser.h
- HEADERS += backendutils.h fileutils.h jobutils.h markuputils.h
- HEADERS += messageutils.h mpegutils.h
-+HEADERS += settingsutils.h
-+
- SOURCES += main.cpp mythutil.cpp commandlineparser.cpp
- SOURCES += backendutils.cpp fileutils.cpp jobutils.cpp markuputils.cpp
- SOURCES += messageutils.cpp mpegutils.cpp
--
-+SOURCES += settingsutils.cpp
- mingw: LIBS += -lwinmm -lws2_32
-diff --git a/mythtv/programs/mythutil/settingsutils.cpp b/mythtv/programs/mythutil/settingsutils.cpp
-new file mode 100644
-index 0000000..8fc7b0e
---- /dev/null
-+++ b/mythtv/programs/mythutil/settingsutils.cpp
-@@ -0,0 +1,586 @@
-+// C++ includes
-+#include <iostream>
-+
-+//QT includes
-+#include <qdom.h>
-+#include <QFile>
-+#include <QDomElement>
-+
-+// libmyth* includes
-+#include "compat.h"
-+#include "exitcodes.h"
-+#include "mythlogging.h"
-+#include "mythcontext.h"
-+
-+
-+#include "settingsutils.h"
-+
-+
-+static int SaveSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+    QString src_hostname;
-+    QString groupname;
-+
-+    if (cmdline.toBool("groupname"))
-+        groupname = cmdline.toString("groupname");
-+
-+    if (cmdline.toBool("hostname"))
-+        src_hostname = cmdline.toString("hostname");
-+    else
-+        src_hostname = gCoreContext->GetHostName();
-+
-+    gCoreContext->savesettings_togroup(src_hostname,groupname);
-+    return GENERIC_EXIT_OK;
-+}
-+
-+static int DeleteSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+
-+    QString delete_hostname;
-+    QString groupname;
-+
-+    if (cmdline.toBool("groupname"))
-+        groupname = cmdline.toString("groupname");
-+
-+    if (cmdline.toBool("hostname"))
-+        delete_hostname = cmdline.toString("hostname");
-+    else
-+        delete_hostname = gCoreContext->GetHostName();
-+
-+
-+    gCoreContext->deletesettings(delete_hostname,groupname);
-+
-+    return GENERIC_EXIT_OK;
-+}
-+
-+
-+static int RestoreSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+    QString dest_hostname;
-+    QString groupname;
-+    QString tablestring;
-+    QStringList table_list;
-+
-+    if (cmdline.toBool("groupname"))
-+        groupname = cmdline.toString("groupname");
-+
-+
-+    if (cmdline.toBool("hostname"))
-+        dest_hostname = cmdline.toString("hostname");
-+    else
-+        dest_hostname = gCoreContext->GetHostName();
-+
-+    if (cmdline.toBool("table_list"))
-+    {
-+        tablestring = QString(cmdline.toString("table_list"));
-+        table_list = tablestring.split(",", QString::SkipEmptyParts);
-+    }
-+
-+    gCoreContext->restoresettings(dest_hostname,
-+                                  groupname,
-+                                  table_list);
-+
-+    return GENERIC_EXIT_OK;
-+}
-+
-+
-+static int CopySettings(const MythUtilCommandLineParser &cmdline)
-+{
-+    QString src_hostname;
-+    QString groupname;
-+    QString tablestring;
-+    QStringList table_list;
-+    bool is_full_clone;
-+    QString dest_hostname;
-+
-+    if (cmdline.toBool("groupname"))
-+        groupname = cmdline.toString("groupname");
-+    else
-+        groupname = "Current";
-+
-+    if (cmdline.toBool("hostname"))
-+        src_hostname = cmdline.toString("hostname");
-+    else
-+        src_hostname = gCoreContext->GetHostName();
-+
-+    if (cmdline.toBool("newhost"))
-+        dest_hostname = cmdline.toString("newhost");
-+
-+    if (cmdline.toBool("table_list"))
-+    {
-+        tablestring = QString(cmdline.toString("table_list"));
-+        table_list = tablestring.split(",", QString::SkipEmptyParts);
-+    }
-+
-+    if (cmdline.toBool("fullclone"))
-+        is_full_clone = TRUE;
-+    else
-+        is_full_clone = FALSE;
-+
-+    gCoreContext->clonesettings(src_hostname,
-+                                groupname,
-+                                table_list,
-+                                is_full_clone,
-+                                dest_hostname);
-+
-+    return GENERIC_EXIT_OK;
-+}
-+
-+void print_out_diff_formated(QMap<QString, QStringList> resultset)
-+{
-+    QString settings_header;
-+    QString keybindings_header;
-+    QString tempString;
-+    QString tempItem;
-+    QString dashline_settings;
-+    QString dashline_key;
-+    QStringList tempList;
-+
-+    QString host_1;
-+    QString host_2;
-+    QString data_1;
-+    QString data_2;
-+    QString value;
-+    QString context;
-+    QString action;
-+
-+    int value_width = 35;
-+    int data_width = 40;
-+
-+    int context_width = 22;
-+    int action_width = 22;
-+    int key_width = 35;
-+
-+    dashline_key = (tempString.fill('-', 133));
-+    dashline_settings = (tempString.fill('-', 130));
-+
-+    QMap<QString, QStringList>::iterator i;
-+
-+
-+    for (i = resultset.begin(); i != resultset.end(); ++i)
-+    {
-+        cout << endl<<i.key().toLocal8Bit().constData() << ": \t" << endl;;
-+        //construct the headers
-+        if (i.key() == "Settings")
-+        {
-+            //settings header
-+            tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
-+            host_1 = tempList.at(1);
-+            host_2 = tempList.at(3);
-+            tempString="|";
-+            tempItem = "Value";
-+            tempString.append(tempItem.leftJustified(value_width));
-+            tempString.append("|");
-+            tempItem = host_1;                //hostname 1
-+            tempString.append(tempItem.leftJustified(data_width));
-+            tempString.append("|");
-+            tempItem = host_2;    //hostname 2
-+            tempString.append(tempItem.leftJustified(data_width));
-+            tempString.append("|");
-+            settings_header = tempString;
-+
-+            cout << settings_header.toLocal8Bit().constData() << endl;;
-+            cout << dashline_settings.toLocal8Bit().constData() << endl;
-+        }
-+
-+         if (i.key() == "Keybindings")
-+         {
-+             //keybindings_header
-+             tempList = (i.value().at(0)).split("|", QString::SkipEmptyParts);
-+             host_1 = tempList.at(2);
-+             host_2 = tempList.at(4);
-+             tempString="|";
-+             tempItem = "Context";
-+             tempString.append(tempItem.leftJustified(context_width));
-+             tempString.append("|");
-+             tempItem = "Action";
-+             tempString.append(tempItem.leftJustified(action_width));
-+             tempString.append("|");
-+             tempItem = host_1;
-+             tempString.append(tempItem.leftJustified(key_width));
-+             tempString.append("|");
-+             tempItem = host_2;
-+             tempString.append(tempItem.leftJustified(key_width));
-+             tempString.append("|");
-+             keybindings_header = tempString;
-+
-+             cout << keybindings_header.toLocal8Bit().constData() << endl;;
-+             cout << dashline_key.toLocal8Bit().constData() << endl;
-+
-+         }
-+         // format each line
-+         for (int y = 0; y < i.value().size(); ++y)
-+         {
-+             if (i.key() == "Settings")
-+             {
-+                 tempList = (i.value().at(y)).split("|",
-+                                                    QString::SkipEmptyParts);
-+                 data_1 = tempList.at(2);
-+                 data_2 = tempList.at(4);
-+                 value  = tempList.at(0);
-+                 tempString="|";
-+                 tempItem = value;
-+                 tempString.append(tempItem.leftJustified(value_width));
-+                 tempString.append("|");
-+                 tempItem = data_1;
-+                 tempString.append(tempItem.leftJustified(data_width));
-+                 tempString.append("|");
-+                 tempItem = data_2;
-+                 tempString.append(tempItem.leftJustified(data_width));
-+                 tempString.append("|");
-+             }
-+             if (i.key() == "Keybindings")
-+             {
-+                 tempList = (i.value().at(y)).split("|",
-+                                                    QString::SkipEmptyParts);
-+                 data_1 = tempList.at(3);
-+                 data_2 = tempList.at(5);
-+                 context  = tempList.at(0);
-+                 action = tempList.at(1);
-+
-+                 tempString="|";
-+                 tempItem = context;
-+                 tempString.append(tempItem.leftJustified(context_width));
-+                 tempString.append("|");
-+                 tempItem = action;
-+                 tempString.append(tempItem.leftJustified(action_width));
-+                 tempString.append("|");
-+                 tempItem = data_1;
-+                 tempString.append(tempItem.leftJustified(key_width));
-+                 tempString.append("|");
-+                 tempItem = data_2;
-+                 tempString.append(tempItem.leftJustified(key_width));
-+                 tempString.append("|");
-+             }
-+
-+             cout << tempString.toLocal8Bit().constData()<<endl;
-+         }
-+    }
-+};
-+
-+static int DiffSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+    QMap<QString, QStringList> resultset;
-+    QString diff_hostname1;
-+    QString diff_hostname2;
-+    QStringList table_list;
-+    bool format_results = FALSE;
-+    QMap<QString, QStringList>::iterator i;
-+
-+    if (cmdline.toBool("host_1"))
-+        diff_hostname1 = cmdline.toString("host_1");
-+    if (cmdline.toBool("host_2"))
-+        diff_hostname2 = cmdline.toString("host_2");
-+
-+    if (cmdline.toBool("table_list"))
-+    {
-+        QString tablestring = QString(cmdline.toString("table_list"));
-+        table_list = tablestring.split(",", QString::SkipEmptyParts);
-+    }
-+
-+    if (cmdline.toBool("format"))
-+        format_results = TRUE;
-+
-+    resultset = gCoreContext->diff_settingsgroupname(diff_hostname1,
-+                                                     diff_hostname2,
-+                                                     table_list);
-+    if  (resultset.isEmpty())
-+        cout << "No differences found" << endl;
-+    else
-+    {
-+        if (format_results)
-+            print_out_diff_formated(resultset);
-+        else
-+        {
-+            for (i = resultset.begin(); i != resultset.end(); ++i)
-+            {
-+                cout << i.key().toLocal8Bit().constData() << " : \t" << endl;;
-+                for (int y = 0; y < i.value().size(); ++y)
-+                    cout << i.value().at(y).toLocal8Bit().constData()<<endl;
-+                cout << endl;
-+            }
-+        }
-+    }
-+    return GENERIC_EXIT_OK;
-+};// DiffSettings
-+
-+static int ListGroups(const MythUtilCommandLineParser &cmdline)
-+{
-+    QMap<QString, QStringList> resultset;
-+    resultset = gCoreContext->list_settingsgroupname();
-+    QMap<QString, QStringList>::iterator i;
-+    cout <<  endl;
-+    for (i = resultset.begin(); i != resultset.end(); ++i)
-+    {
-+        cout << i.key().toLocal8Bit().constData() << " : \t";
-+        for (int y = 0; y < i.value().size(); ++y)
-+            cout << i.value().at(y).toLocal8Bit().constData()<<" " ;
-+        cout << endl;
-+    }
-+    return GENERIC_EXIT_OK;
-+};
-+
-+static int ImportSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+
-+    if (cmdline.toString("infile").isEmpty())
-+    {
-+        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --infile option\n");
-+        return GENERIC_EXIT_INVALID_CMDLINE;
-+    }
-+    QString import_hostname;
-+    bool change_name = FALSE;
-+    if (cmdline.toBool("hostname"))
-+    {
-+        change_name = TRUE;
-+        import_hostname = cmdline.toString("hostname");
-+    }
-+    QString import_filename = cmdline.toString("infile");
-+    QFile myFile(import_filename);
-+
-+    QDomDocument doc( "exported_xml" );
-+    doc.setContent( &myFile );
-+
-+    QDomElement docElement = doc.documentElement();
-+    QDomElement record_element;
-+
-+    if ( docElement.nodeName() != "exported_xml" )
-+    {
-+       cout << "not a valid exported xml file" << endl;
-+       return 1;
-+    }
-+
-+    QString out_string = "Importing records, please be patient";
-+    cout << out_string.toLocal8Bit().constData()  << endl;
-+    //Gives list of records in the file + count
-+    QDomNodeList nodeList = docElement.childNodes();
-+    int total_records = nodeList.count();
-+    out_string = QString("\nFound %1 records \n").arg(total_records);
-+    cout << out_string.toLocal8Bit().constData()  << endl;
-+    LOG(VB_STDIO|VB_FLUSH, LOG_ERR, out_string);
-+
-+    for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling())
-+    {
-+        QString table_name=QString();
-+        QMap<QString,QString> value_pair_map ;
-+
-+        //find table name for this record
-+        QDomNode tablenode=n.namedItem("table");
-+        record_element = tablenode.toElement();
-+        table_name = record_element.text();
-+
-+        //loop over childern of n and convert to element
-+        for(QDomNode subn = n.firstChild();
-+            !subn.isNull();
-+            subn = subn.nextSibling())
-+        {
-+            record_element = subn.toElement();
-+            if ( record_element.nodeName() == "table" )
-+                    continue;
-+            if ( change_name && record_element.nodeName() == "hostname" )
-+                value_pair_map[record_element.nodeName()] = import_hostname;
-+            else
-+                value_pair_map[record_element.nodeName()] = record_element.text();
-+        }
-+        if (import_filename.endsWith("syssettings.xml"))
-+        {
-+            if  ( value_pair_map["value"] == "BackendServerIP")
-+            {
-+                out_string = "sysettings, ignoring backendserver ip record";
-+                cout << out_string.toLocal8Bit().constData()  << endl;
-+            }
-+            else
-+                gCoreContext->import_settings(value_pair_map,table_name);
-+        }
-+        else
-+            //perform insert
-+            gCoreContext->import_settings(value_pair_map,table_name);
-+    }
-+    return GENERIC_EXIT_OK;
-+}; //end ImportSettings
-+
-+
-+static int ExportSettings(const MythUtilCommandLineParser &cmdline)
-+{
-+    QMap<QString, QMap<QString,QString> > records;
-+    QString src_hostname;
-+    QString groupname;
-+    QStringList table_list;
-+    QString tablestring;
-+    bool distro_default =  FALSE;
-+    bool generic = FALSE;
-+    bool skip_host = FALSE;
-+
-+
-+
-+    QDomDocument doc("mythutils_exported_settings");
-+
-+    if (cmdline.toBool("groupname"))
-+        groupname = cmdline.toString("groupname");
-+    else
-+        groupname = "current";
-+
-+    if (cmdline.toBool("hostname"))
-+        src_hostname = cmdline.toString("hostname");
-+    else
-+        src_hostname = gCoreContext->GetHostName();
-+
-+    if (cmdline.toBool("distro-default"))
-+    {
-+        distro_default = TRUE;
-+        skip_host = TRUE;
-+    }
-+    if (cmdline.toBool("generic"))
-+    {
-+        generic = TRUE;
-+        //skip_host = TRUE;
-+    }
-+    if (cmdline.toBool("table_list"))
-+    {
-+        tablestring = QString(cmdline.toString("table_list"));
-+        table_list = tablestring.split(",", QString::SkipEmptyParts);
-+    }
-+    else
-+        table_list << "settings" <<"keybindings" <<"jumppoints" ;
-+
-+    if (cmdline.toString("outfile").isEmpty())
-+    {
-+        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing --outfile option\n");
-+        return GENERIC_EXIT_INVALID_CMDLINE;
-+    }
-+
-+    QString export_filename = cmdline.toString("outfile");
-+
-+    records = gCoreContext->export_settings(src_hostname,groupname,
-+                                            table_list, skip_host);
-+
-+    QDomElement exported_xml = doc.createElement("exported_xml");
-+    doc.appendChild(exported_xml);
-+
-+    QMap<QString,int> record_count;
-+    QMap<QString,QMap<QString,QString>  >::iterator i;
-+    for (i = records.begin(); i != records.end(); ++i )
-+    {
-+            QDomElement record = doc.createElement("record");
-+            exported_xml.appendChild(record);
-+
-+            //loop over all values in the record
-+            QMap<QString,QString> value_pair = i.value();
-+            QMap<QString, QString>::iterator y;
-+            //because we don't know the name of the key, we loop over it
-+            for (y = value_pair.begin(); y != value_pair.end(); ++y)
-+           {
-+                //add key/pair to xml document
-+                QDomElement tag = doc.createElement(y.key());
-+                record.appendChild(tag);
-+                QDomText  t;
-+                if ( distro_default == TRUE )
-+                {   // If exporting distro_default then change hostname + table
-+                    if ( y.key() == "hostname" )
-+                    {   //check for global values here, empty value means global
-+                        if ( y.value().isEmpty() )
-+                            t = doc.createTextNode(y.value());
-+                        else
-+                            t = doc.createTextNode("distro_default");
-+                    }
-+                    else if ( y.key() == "table")
-+                        t = doc.createTextNode(y.value()+"_distro_default");
-+                    else
-+                        t = doc.createTextNode(y.value());
-+                }
-+
-+                else if ( generic == TRUE )
-+                {   // If exporting generic then change hostname
-+                    if ( y.key() == "hostname" )
-+                    {   //check for global values here, empty value means global
-+                        if ( y.value().isEmpty() )
-+                            t = doc.createTextNode(y.value());
-+                        else
-+                            t = doc.createTextNode("REPLACE_ME");
-+                    }
-+                    else
-+                       t = doc.createTextNode(y.value());
-+               }
-+               else
-+                   t = doc.createTextNode(y.value());
-+
-+               tag.appendChild(t);
-+                //create record counts
-+                if ( y.key() == "table" )
-+                {
-+                    if ( record_count.contains( y.value()) )
-+                    {
-+                        int record_num = record_count[y.value()];
-+                        record_count[y.value()] = ++record_num;
-+                    }
-+                    else
-+                        record_count[y.value()] = 1;
-+                }
-+           }
-+     }
-+     QFile file( export_filename );
-+
-+     if( !file.open(QIODevice::WriteOnly) )
-+            return -1;
-+
-+     QTextStream ts( &file );
-+     ts << doc.toString();
-+     file.close();
-+     QMap<QString, int >::iterator rc_it;
-+     for ( rc_it = record_count.begin(); rc_it != record_count.end(); ++rc_it)
-+     {
-+            QString table = rc_it.key();
-+            int rc_count = rc_it.value();
-+            QString out_string = QString ("Exported table %1: %2 records")
-+                                                            .arg(table)
-+                                                            .arg(rc_count);
-+            cout << out_string.toLocal8Bit().constData()  << endl;
-+     }
-+    return GENERIC_EXIT_OK;
-+}; // end export_settings
-+
-+
-+static int ChangeHostname(const MythUtilCommandLineParser &cmdline)
-+{
-+
-+    QString old_hostname;
-+    QString new_hostname;
-+
-+
-+    if (cmdline.toBool("oldhost"))
-+        old_hostname = cmdline.toString("oldhost");
-+
-+    if (cmdline.toBool("newhost"))
-+        new_hostname = cmdline.toString("newhost");
-+
-+    if (old_hostname.isEmpty())
-+    {
-+        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --old-host option\n");
-+        return GENERIC_EXIT_INVALID_CMDLINE;
-+    }
-+
-+    if (new_hostname.isEmpty())
-+    {
-+        LOG(VB_STDIO|VB_FLUSH, LOG_ERR, "Missing or empty --new-host option\n");
-+        return GENERIC_EXIT_INVALID_CMDLINE;
-+    }
-+
-+    gCoreContext->change_hostname(old_hostname, new_hostname);
-+
-+    return GENERIC_EXIT_OK;
-+}; //end ChangeHostname
-+
-+void registerSettingsUtils(UtilMap &utilMap)
-+{
-+    utilMap["savesettings"]             = &SaveSettings;
-+    utilMap["deletesettings"]           = &DeleteSettings;
-+    utilMap["restoresettings"]          = &RestoreSettings;
-+    utilMap["copysettings"]             = &CopySettings;
-+    utilMap["diffsettings"]             = &DiffSettings;
-+    utilMap["listgroups"]               = &ListGroups;
-+    utilMap["importsettings"]           = &ImportSettings;
-+    utilMap["exportsettings"]           = &ExportSettings;
-+    utilMap["changehostname"]           = &ChangeHostname;
-+}
-+
-+/* vim: set expandtab tabstop=4 shiftwidth=4: */
-\ No newline at end of file
-diff --git a/mythtv/programs/mythutil/settingsutils.h b/mythtv/programs/mythutil/settingsutils.h
-new file mode 100644
-index 0000000..413496c
---- /dev/null
-+++ b/mythtv/programs/mythutil/settingsutils.h
-@@ -0,0 +1,3 @@
-+#include "mythutil.h"
-+
-+void registerSettingsUtils(UtilMap &utilMap);
diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythbackend b/abs/core/mythtv/stable-0.25/mythtv/mythbackend
deleted file mode 100644
index 93773a2..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/mythbackend
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID /usr/bin/mythbackend`
-case "$1" in
-  start)
-    stat_busy "Starting MythTV Backend"
-    [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit
-    [ -z "$PID" ] && /usr/bin/mythbackend -d -l /var/log/mythbackend.log -v important 
-    if [ $? -gt 0 ]; then
-      stat_fail
-    else
-      echo $PID > /var/run/mythbackend.pid
-      add_daemon mythbackend
-      stat_done
-    fi
-    ;;
-  stop)
-    stat_busy "Stopping MythTV Backend"
-    [ ! -z "$PID" ]  && kill $PID &>/dev/null
-    if [ $? -gt 0 ]; then
-      stat_fail
-    else
-      rm_daemon mythbackend
-      stat_done
-    fi
-    ;;
-  restart)
-    $0 stop
-    sleep 1s 
-    $0 start
-    ;;
-  *)
-    echo "usage: $0 {start|stop|restart}"
-esac
-exit 0
diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythbackend.lr b/abs/core/mythtv/stable-0.25/mythtv/mythbackend.lr
deleted file mode 100644
index 4f218bc..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/mythbackend.lr
+++ /dev/null
@@ -1,9 +0,0 @@
-/var/log/mythtv/mythbackend.log {
-	copytruncate
-	daily
-	size 10M
-	missingok
-	rotate 7
-	compress
-	notifempty
-}
diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythbackend.sh b/abs/core/mythtv/stable-0.25/mythtv/mythbackend.sh
deleted file mode 100644
index e7a7b70..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/mythbackend.sh
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/bin/bash
-#
-#	/etc/rc.d/init.d/mythbackend
-#
-# Starts the mythbackend as a daemon
-#
-# chkconfig: 345 90 10
-# description: Starts the mythbackend process as a daemon after the XWindows \
-#              system is started, in runlevel 5. This allows scheduled \
-#              recordings to occur without manual intervention.
-# processname: mythbackend
-
-# Copyright (c) by Michael Thomson <linux at m-thomson dot net>
-# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-
-# Default values to use if none are supplied in the config file.
-# User who should start the mythbackend processes
-MBE_USER="root"
-# Directory holding the mythbackend binary
-MBE_LOCATION="/usr/local/bin/"
-# Name of mythbackend binary
-MBE_PROG="mythbackend"
-# Full path to mythbackend log file
-MBE_LOGFILE="/var/log/mythtv/mythbackend.log"
-
-# Source function library.
-. /etc/init.d/functions
-
-# Source config file if available
-if [ -f "/etc/sysconfig/mythbackend" ]; then
-  . /etc/sysconfig/mythbackend
-fi
-
-test -x ${MBE_LOCATION}${MBE_PROG} || exit 0
-
-RETVAL=0
-
-#
-#	See how we were called.
-#
-
-start() {
-	# Check if mythbackend is already running
-	if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then
-	    echo -n "Starting ${MBE_PROG}: "
-	    # /usr/local/bin/mythbackend -d -l /some/log/file
-	    #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
-	    ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
-	    RETVAL=$?
-	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG}
-	    echo
-	fi
-	return $RETVAL
-}
-
-stop() {
-	echo -n "Stopping ${MBE_PROG}: "
-	killproc ${MBE_LOCATION}${MBE_PROG}
-	RETVAL=$?
-	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG}
-	echo
-        return $RETVAL
-}
-
-
-restart() {
-	stop
-	start
-}	
-
-reload() {
-	restart
-}	
-
-status_at() {
- 	status ${MBE_LOCATION}${MBE_PROG}
-}
-
-case "$1" in
-start)
-	start
-	;;
-stop)
-	stop
-	;;
-reload|restart)
-	restart
-	;;
-condrestart)
-	if [ -f /var/lock/subsys/${MBE_PROG} ]; then
-	    restart
-	fi
-	;;
-status)
-	status_at
-	;;
-*)
-	echo "Usage: $0 {start|stop|restart|condrestart|status}"
-	exit 1
-esac
-
-exit $?
-exit $RETVAL
diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythfrontend.lr b/abs/core/mythtv/stable-0.25/mythtv/mythfrontend.lr
deleted file mode 100644
index 1580533..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/mythfrontend.lr
+++ /dev/null
@@ -1,9 +0,0 @@
-/var/log/mythtv/mythfrontend.log {
-	copytruncate
-	daily
-	size 10M
-	missingok
-	rotate 7
-	compress
-	notifempty
-}
diff --git a/abs/core/mythtv/stable-0.25/mythtv/mythtv.install b/abs/core/mythtv/stable-0.25/mythtv/mythtv.install
deleted file mode 100644
index 5d4614d..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/mythtv.install
+++ /dev/null
@@ -1,25 +0,0 @@
-# arg 1:  the new package version
-post_install() {
-        gen_is_xml.py
-        gen_lib_xml.py
-}
-
-pre_upgrade() {
-        /bin/true
-}
-
-post_upgrade() {
-        post_install
-        /usr/share/mythtv/metadata/Movie/tmdb3_db_update.py
-}
-
-
-# arg 1:  the old package version
-post_remove() {
-        /bin/true
-
-}
-
-op=$1
-shift
-$op $*
diff --git a/abs/core/mythtv/stable-0.25/mythtv/pretty b/abs/core/mythtv/stable-0.25/mythtv/pretty
deleted file mode 100644
index 7e0ab21..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/pretty
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-if [ -f /usr/share/mythtv/contrib/user_jobs/mythlink.pl ]
-then
-        su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythlink.pl --link /myth/pretty"
-elif [ -f /usr/share/mythtv/contrib/user_jobs/mythrename.pl ]
-then
-        su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythrename.pl --link /myth/pretty"
-fi
-
diff --git a/abs/core/mythtv/stable-0.25/mythtv/smolt_jump.patch b/abs/core/mythtv/stable-0.25/mythtv/smolt_jump.patch
deleted file mode 100644
index 76f884c..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/smolt_jump.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- programs/mythfrontend/networkcontrol.cpp.orig	2010-11-08 23:07:04.000000000 +0000
-+++ programs/mythfrontend/networkcontrol.cpp	2010-11-08 23:08:06.000000000 +0000
-@@ -88,6 +88,7 @@
-     jumpMap["zoneminderliveview"]    = "ZoneMinder Live View";
-     jumpMap["zoneminderevents"]      = "ZoneMinder Events";
-     jumpMap["snapshot"]              = "ScreenShot";
-+    jumpMap["mythsmolt"]             = "MythSmolt";
- 
-     jumpMap["channelrecpriority"]    = "Channel Recording Priorities";
-     jumpMap["viewscheduled"]         = "Manage Recordings / Fix Conflicts";
diff --git a/abs/core/mythtv/stable-0.25/mythtv/tmdb3.py b/abs/core/mythtv/stable-0.25/mythtv/tmdb3.py
deleted file mode 100755
index 829f744..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/tmdb3.py
+++ /dev/null
@@ -1,278 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# ----------------------
-# Name: tmdb3.py
-# Python Script
-# Author: Raymond Wagner
-# Purpose: This python script is intended to translate lookups between the
-#          TheMovieDB.org V3 API and MythTV's internal metadata format.
-#               http://www.mythtv.org/wiki/MythVideo_Grabber_Script_Format
-#               http://help.themoviedb.org/kb/api/about-3
-#-----------------------
-__title__ = "TheMovieDB.org V3"
-__author__ = "Raymond Wagner"
-__version__ = "0.3.6"
-# 0.1.0 Initial version
-# 0.2.0 Add language support, move cache to home directory
-# 0.3.0 Enable version detection to allow use in MythTV
-# 0.3.1 Add --test parameter for proper compatibility with mythmetadatalookup
-# 0.3.2 Add --area parameter to allow country selection for release date and
-#       parental ratings
-# 0.3.3 Use translated title if available
-# 0.3.4 Add support for finding by IMDB under -D (simulate previous version)
-# 0.3.5 Add debugging mode
-# 0.3.6 Add handling for TMDB site and library returning null results in
-#       search. This should only need to be a temporary fix, and should be
-#       resolved upstream.
-
-from optparse import OptionParser
-import sys
-
-def buildSingle(inetref, opts):
-    from MythTV.tmdb3 import Movie
-    from MythTV import VideoMetadata
-    from lxml import etree
-
-    import re
-    if re.match('^0[0-9]{6}$', inetref):
-        movie = Movie.fromIMDB(inetref)
-    else:
-        movie = Movie(inetref)
-
-    tree = etree.XML(u'<metadata></metadata>')
-    mapping = [['runtime',      'runtime'],     ['title',       'originaltitle'],
-               ['releasedate',  'releasedate'], ['tagline',     'tagline'],
-               ['description',  'overview'],    ['homepage',    'homepage'],
-               ['userrating',   'userrating'],  ['popularity',  'popularity'],
-               ['budget',       'budget'],      ['revenue',     'revenue']]
-    m = VideoMetadata()
-    for i,j in mapping:
-        if getattr(movie, j):
-            setattr(m, i, getattr(movie, j))
-
-    if movie.title:
-        m.title = movie.title
-
-    releases = movie.releases.items()
-
-    if opts.country:
-        try:
-            # resort releases with selected country at top to ensure it
-            # is selected by the metadata libraries
-            index = zip(*releases)[0].index(opts.country)
-            releases.insert(0, releases.pop(index))
-        except ValueError:
-            pass
-        else:
-            m.releasedate = releases[0][1].releasedate
-
-    m.inetref = str(movie.id)
-    if movie.collection:
-        m.collectionref = str(movie.collection.id)
-    if movie.releasedate:
-        m.year = movie.releasedate.year
-    for country, release in releases:
-        if release.certification:
-            m.certifications[country] = release.certification
-    for genre in movie.genres:
-        m.categories.append(genre.name)
-    for studio in movie.studios:
-        m.studios.append(studio.name)
-    for country in movie.countries:
-        m.countries.append(country.name)
-    for cast in movie.cast:
-        d = {'name':cast.name, 'character':cast.character, 'department':'Actors',
-             'job':'Actor', 'url':'http://www.themoviedb.org/people/{0}'.format(cast.id)}
-        if cast.profile: d['thumb'] = cast.profile.geturl()
-        m.people.append(d)
-    for crew in movie.crew:
-        d = {'name':crew.name, 'job':crew.job, 'department':crew.department,
-             'url':'http://www.themoviedb.org/people/{0}'.format(crew.id)}
-        if crew.profile: d['thumb'] = crew.profile.geturl()
-        m.people.append(d)
-    for backdrop in movie.backdrops:
-        m.images.append({'type':'fanart', 'url':backdrop.geturl(),
-                        'thumb':backdrop.geturl(backdrop.sizes()[0])})
-    for poster in movie.posters:
-        m.images.append({'type':'coverart', 'url':poster.geturl(),
-                        'thumb':poster.geturl(poster.sizes()[0])})
-    tree.append(m.toXML())
-    sys.stdout.write(etree.tostring(tree, encoding='UTF-8', pretty_print=True,
-                                    xml_declaration=True))
-    sys.exit()
-
-def buildList(query, opts):
-    # TEMPORARY FIX:
-    # replace all dashes from queries to work around search behavior
-    # as negative to all text that comes afterwards
-    query = query.replace('-',' ')
-
-    from MythTV.tmdb3 import searchMovie
-    from MythTV import VideoMetadata
-    from lxml import etree
-    results = searchMovie(query)
-    tree = etree.XML(u'<metadata></metadata>')
-    mapping = [['runtime',      'runtime'],     ['title',       'originaltitle'],
-               ['releasedate',  'releasedate'], ['tagline',     'tagline'],
-               ['description',  'overview'],    ['homepage',    'homepage'],
-               ['userrating',   'userrating'],  ['popularity',  'popularity']]
-
-    count = 0
-    for res in results:
-        if res is None:
-            continue
-
-        m = VideoMetadata()
-        for i,j in mapping:
-            if getattr(res, j):
-                setattr(m, i, getattr(res, j))
-        m.inetref = str(res.id)
-
-        if res.title:
-            m.title = res.title
-
-        #TODO:
-        # should releasedate and year be pulled from the country-specific data
-        # or should it be left to the default information to cut down on
-        # traffic from searches
-        if res.releasedate:
-            m.year = res.releasedate.year
-        if res.backdrop:
-            b = res.backdrop
-            m.images.append({'type':'fanart', 'url':b.geturl(),
-                             'thumb':b.geturl(b.sizes()[0])})
-        if res.poster:
-            p = res.poster
-            m.images.append({'type':'coverart', 'url':p.geturl(),
-                             'thumb':p.geturl(p.sizes()[0])})
-        tree.append(m.toXML())
-        count += 1
-        if count >= 60:
-            # page limiter, dont want to overload the server
-            break
-
-    sys.stdout.write(etree.tostring(tree, encoding='UTF-8', pretty_print=True,
-                                    xml_declaration=True))
-    sys.exit(0)
-
-def buildCollection(inetref, opts):
-    from MythTV.tmdb3 import Collection
-    from MythTV import VideoMetadata
-    from lxml import etree
-    collection = Collection(inetref)
-    tree = etree.XML(u'<metadata></metadata>')
-    m = VideoMetadata()
-    m.collectionref = str(collection.id)
-    m.title = collection.name
-    if collection.backdrop:
-        b = collection.backdrop
-        m.images.append({'type':'fanart', 'url':b.geturl(),
-                  'thumb':b.geturl(b.sizes()[0])})
-    if collection.poster:
-        p = collection.poster
-        m.images.append({'type':'coverart', 'url':p.geturl(),
-                  'thumb':p.geturl(p.sizes()[0])})
-    tree.append(m.toXML())
-    sys.stdout.write(etree.tostring(tree, encoding='UTF-8', pretty_print=True,
-                                    xml_declaration=True))
-    sys.exit()
-
-def buildVersion():
-    from lxml import etree
-    version = etree.XML(u'<grabber></grabber>')
-    etree.SubElement(version, "name").text = __title__
-    etree.SubElement(version, "author").text = __author__
-    etree.SubElement(version, "thumbnail").text = 'tmdb.png'
-    etree.SubElement(version, "command").text = 'tmdb3.py'
-    etree.SubElement(version, "type").text = 'movie'
-    etree.SubElement(version, "description").text = \
-                                'Search and metadata downloads for themoviedb.org'
-    etree.SubElement(version, "version").text = __version__
-    sys.stdout.write(etree.tostring(version, encoding='UTF-8', pretty_print=True,
-                                    xml_declaration=True))
-    sys.exit(0)
-
-def performSelfTest():
-    err = 0
-    try:
-        import MythTV
-    except:
-        err = 1
-        print ("Failed to import MythTV bindings. Check your `configure` output "
-               "to make sure installation was not disabled due to external "
-               "dependencies")
-    try:
-        import MythTV.tmdb3
-    except:
-        err = 1
-        print ("Failed to import PyTMDB3 library. This should have been included "
-               "with the python MythTV bindings.")
-    try:
-        import lxml
-    except:
-        err = 1
-        print "Failed to import python lxml library."
-
-    if not err:
-        print "Everything appears in order."
-    sys.exit(err)
-
-def main():
-    parser = OptionParser()
-
-    parser.add_option('-v', "--version", action="store_true", default=False,
-                      dest="version", help="Display version and author")
-    parser.add_option('-t', "--test", action="store_true", default=False,
-                      dest="test", help="Perform self-test for dependencies.")
-    parser.add_option('-M', "--movielist", action="store_true", default=False,
-                      dest="movielist", help="Get Movies matching search.")
-    parser.add_option('-D', "--moviedata", action="store_true", default=False,
-                      dest="moviedata", help="Get Movie data.")
-    parser.add_option('-C', "--collection", action="store_true", default=False,
-                      dest="collectiondata", help="Get Collection data.")
-    parser.add_option('-l', "--language", metavar="LANGUAGE", default=u'en',
-                      dest="language", help="Specify language for filtering.")
-    parser.add_option('-a', "--area", metavar="COUNTRY", default=u'US',
-                      dest="country", help="Specify country for custom data.")
-    parser.add_option('--debug', action="store_true", default=False,
-                      dest="debug", help=("Disable caching and enable raw "
-                                          "data output."))
-
-    opts, args = parser.parse_args()
-
-    if opts.version:
-        buildVersion()
-
-    if opts.test:
-        performSelfTest()
-
-    from MythTV.tmdb3 import set_key, set_cache, set_locale
-    set_key('c27cb71cff5bd76e1a7a009380562c62')
-
-    if opts.debug:
-        import MythTV.tmdb3
-        MythTV.tmdb3.request.DEBUG = True
-        set_cache(engine='null')
-    else:
-        set_cache(engine='file', filename='~/.mythtv/pytmdb3.cache')
-
-    if opts.language:
-        set_locale(language=opts.language, fallthrough=True)
-    if opts.country:
-        set_locale(country=opts.country, fallthrough=True)
-
-    if (len(args) != 1) or (args[0] == ''):
-        sys.stdout.write('ERROR: tmdb3.py requires exactly one non-empty argument')
-        sys.exit(1)
-
-    if opts.movielist:
-        buildList(args[0], opts)
-
-    if opts.moviedata:
-        buildSingle(args[0], opts)
-
-    if opts.collectiondata:
-        buildCollection(args[0], opts)
-
-if __name__ == '__main__':
-    main()
diff --git a/abs/core/mythtv/stable-0.25/mythtv/tmdb3_db_update.py b/abs/core/mythtv/stable-0.25/mythtv/tmdb3_db_update.py
deleted file mode 100755
index 22fc635..0000000
--- a/abs/core/mythtv/stable-0.25/mythtv/tmdb3_db_update.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python2
-
-# This script will configure the myth db to use tmdb3.py
-
-from socket import gethostname
-from MythTV import MythDB
-mythdb = MythDB()
-localhostname = gethostname()
-import sys, os
-
-# Function to set db setting.  This setting is set in mythtv-setup.
-def dbSettingChange():
-    if mythdb.settings.NULL.MovieGrabber == u'metadata/Movie/tmdb3.py':
-        print 'The MythTV database setting MovieGrabber is already set to tmdb3.py.'
-    else:
-        mythdb.settings.NULL.MovieGrabber = u'metadata/Movie/tmdb3.py'
-        print 'The MythTV database setting MovieGrabber has been updated to tmdb3.py'
-    try:
-        os.remove("/home/mythtv/.mythtv/pytmdb3.cache")
-        print 'tmdb3 cache at /home/mythtv/.mythtv/pytmdb3.cache removed.'
-    except OSError:
-        print "tmdb3 cache at /home/mythtv/.mythtv/pytmdb3.cache doesn't exist."
-        pass
-    return
-
-#taken from systemconfig.py
-#this is how you populate the dict
-systemconfig = {}
-file_name = "/etc/systemconfig"
-try:
-    config_file = open(file_name)
-except:
-    print file_name + ' could not be opened'
-    sys.exit(1)
-
-for line in config_file:
-    line = line.strip()
-    if line and line[0] is not "#" and line[-1] is not "=":
-        var, val = line.rsplit("=", 1)
-        val = val.strip('"')
-        systemconfig[var.strip()] = val.strip()
-
-#this is how you reference a value from mv_hostype.py
-if (systemconfig.get("SystemType") == "Standalone"):
-    dbSettingChange()
-elif systemconfig.get("SystemType") == "Master_backend":
-    dbSettingChange()
diff --git a/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD b/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD
deleted file mode 100644
index 9882ad8..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/PKGBUILD
+++ /dev/null
@@ -1,77 +0,0 @@
-pkgname=mythweb
-pkgver=0.25
-pkgrel=9
-
-commit_hash=`cat ../git_src/git_hash_web`
-
-pkgdesc="Web interface for MythTV's backend, $commit_hash"
-url="http://www.mythtv.org"
-license="GPL"
-arch=('i686' 'x86_64')
-
-depends=('mythtv>=0.25' 'lighttpd' 'php' 'supplemental-web')
-groups=('mythtv-extras')
-install=mythweb.install
-#http://code.mythtv.org/trac/ticket/10504
-#patches=(schedules.php.patch  sorting.php.patch  tv-schedules.php.patch)
-patches=(schedules.php.patch   tv-schedules.php.patch)
-source=(`echo ${patches[@]:0}` mythweb.include mythweb_gen_light.conf)
-
-build() {
-
-   if [ -e ${srcdir}/mythweb ]
-      then
-          rm -rf ${srcdir}/mythweb
-      fi
-
-      cd ${startdir}
-      msg "copy in myth web src"
-      cp -rp ../git_src/mythweb $srcdir
-      cd ${srcdir}/${pkgbase}
-
-
-
-    msg "The local files are updated."
-
-
-	cd $srcdir/mythweb
-
-
-
-	echo "--------------------------applying patches----------------------------------------------------"
-	for i in `echo ${patches[@]:0} `
-	do
-		echo applying $i
-		echo "-----------------------------"
-		patch -Np0  -i ${srcdir}/$i  || return 1
-	done
-	echo "--------------------------done applying patches-----------------------------------------------"
-
-	[ "$CARCH" = "i686"   ] && ARCH="i686"
-	[ "$CARCH" = "x86_64" ] && ARCH="x86-64"
-}
-
-package() {
-    DOCROOT=/data/srv/httpd/mythweb
-	mkdir -p $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
-        rsync -arp --exclude .git --delete-excluded  $srcdir/mythweb/* $pkgdir/$DOCROOT
-	rm $pkgdir/$DOCROOT/README
-	chown -R http:http $pkgdir/$DOCROOT
-	chmod g+rw $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
-
-        # mythweb modules_path fix for 0.24
-        # http://code.mythtv.org/trac/ticket/9255
-        cd ${pkgdir}/${DOCROOT}
-        ln -s modules modules_path
-
-    #install conf files for lighttpd
-    mkdir -p $pkgdir/etc/lighttpd
-    install -D -m 644 $srcdir/mythweb.include          $pkgdir/etc/lighttpd/
-    #gen_light_conf
-    install -D -m0744 ${srcdir}/mythweb_gen_light.conf ${pkgdir}/etc/gen_light_conf.d/mythweb.conf
-
-}
-md5sums=('392e570594859c026ac12194920246d8'
-         '515e29fda503c199888a91553e1815a0'
-         '7645a6399434cbba35639713ac5d88e0'
-         'df190116b3aba35720fb6631885f973f')
diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb.include b/abs/core/mythtv/stable-0.25/mythweb/mythweb.include
deleted file mode 100644
index 18e9be1..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/mythweb.include
+++ /dev/null
@@ -1,8 +0,0 @@
-alias.url += ( "/mythweb" => "/data/srv/httpd/mythweb/")
-
-url.rewrite-once = (
-"^/{1,2}mythweb/(css|data|images|js|themes|skins|[a-z_]+\.(php|pl)).*" => "$0",
-"^/{1,2}mythweb/(pl(/.*)?)$" => "/mythweb/mythweb.pl/$1",
-"^/{1,2}mythweb/(.+)$"       => "/mythweb/mythweb.php/$1",
-"^/{1,2}mythweb/(.*)$"       => "/mythweb/mythweb.php"
-)
\ No newline at end of file
diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb.install b/abs/core/mythtv/stable-0.25/mythweb/mythweb.install
deleted file mode 100644
index 0073499..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/mythweb.install
+++ /dev/null
@@ -1,18 +0,0 @@
-post_install() {
- gen_light_include.py
-  /sbin/sv hup /service/lighttpd
-}
-post_upgrade() {
-  post_install
-
-}
-
-post_remove() {
- gen_light_include.py
- echo
- echo "==> Forcing a re-read of lighttpd's configuration file."
- echo ""
-  /sbin/sv hup /service/lighttpd
-#--
-
-}
diff --git a/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf b/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf
deleted file mode 100644
index ddf0d2f..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/mythweb_gen_light.conf
+++ /dev/null
@@ -1 +0,0 @@
-include "/etc/lighttpd/mythweb.include"
diff --git a/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch b/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch
deleted file mode 100644
index 1d41711..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/schedules.php.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-*** modules/tv/tmpl/default/schedules.php.old	2011-04-03 06:05:31.000000000 -0500
---- modules/tv/tmpl/default/schedules.php	2012-03-27 05:37:40.000000000 -0500
-***************
-*** 90,95 ****
---- 90,100 ----
-  </tr>
-  </thead>
-  <?php
-+         // Hack:  Disable warnings about "Creating default
-+         // object from empty value" from below line
-+         // "$schedule->channel->name = '[ '.t('Any').' ]';"
-+         ini_set('error_reporting', E_ERROR);
-+ 
-          $prev_group = '';
-          $cur_group  = '';
-          foreach ($the_schedules as $schedule) {
diff --git a/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch b/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch
deleted file mode 100644
index 2f76216..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/sorting.php.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** includes/sorting.php.old	2011-04-03 06:05:31.000000000 -0500
---- includes/sorting.php	2012-03-27 05:05:51.000000000 -0500
-***************
-*** 123,129 ****
-      function by_user_choice(&$a, &$b) {
-          foreach ($GLOBALS['user_sort_choice'] as $sort) {
-              $function = 'by_'.$sort['field'];
-!             $response = $function(&$a, &$b);
-          // Identical response, go on to the next sort choice
-              if (!$response)
-                  continue;
---- 123,129 ----
-      function by_user_choice(&$a, &$b) {
-          foreach ($GLOBALS['user_sort_choice'] as $sort) {
-              $function = 'by_'.$sort['field'];
-!             $response = $function($a, $b);
-          // Identical response, go on to the next sort choice
-              if (!$response)
-                  continue;
diff --git a/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch b/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch
deleted file mode 100644
index 29e4ccb..0000000
--- a/abs/core/mythtv/stable-0.25/mythweb/tv-schedules.php.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-*** modules/tv/schedules.php.orig	2012-06-05 09:05:32.935946957 +0200
---- modules/tv/schedules.php	2012-06-05 09:05:36.633022229 +0200
-***************
-*** 47,52 ****
---- 47,56 ----
-      if (count($the_schedules))
-          sort_programs($the_schedules, 'schedules_sortby');
-  
-+ 			  // Hack:  Disable warnings about "Creating default
-+ 			  // object from empty value" from below line
-+ 			  // "$schedule->channel->name = '[ '.t('Any').' ]';"
-+ 			  ini_set('error_reporting', E_ERROR);
-  // Load the class for this page
-      require_once tmpl_dir.'schedules.php';
-  
-- 
cgit v0.12