--- libs/libmyth/dbsettings.cpp.db	2005-03-04 19:00:39.000000000 -0500
+++ libs/libmyth/dbsettings.cpp	2006-04-15 16:59:24.000000000 -0400
@@ -48,6 +48,7 @@
 protected:
     TransientLabel    *info;
     TransientLineEdit *dbHostName;
+    TransientLineEdit *dbPort;
     TransientLineEdit *dbName;
     TransientLineEdit *dbUserName;
     TransientLineEdit *dbPassword;
@@ -130,6 +131,13 @@
                                         "the machine hosting the database. "
                                         "This information is required."));
     addChild(dbHostName);
+
+    dbPort = new TransientLineEdit(true);
+    dbPort->setLabel(QObject::tr("Host Port"));
+    dbPort->setHelpText(QObject::tr("The port number the database is running "
+                                    "on, if it's not the default database "
+                                    "port."));
+    addChild(dbPort);
     
     dbName = new TransientLineEdit(true);
     dbName->setLabel(QObject::tr("Database"));
@@ -245,6 +253,10 @@
     dbHostName->setValue(params.dbHostName);
     if (params.dbHostName.isEmpty())
         dbHostName->setLabel("* " + dbHostName->getLabel());
+
+    if (params.dbPort)
+        dbPort->setValue(QString::number(params.dbPort));
+
     dbUserName->setValue(params.dbUserName);
     if (params.dbUserName.isEmpty())
         dbUserName->setLabel("* " + dbUserName->getLabel());
@@ -279,6 +291,7 @@
     DatabaseParams params = gContext->GetDatabaseParams();
     
     params.dbHostName    = dbHostName->getValue();
+    params.dbPort        = dbPort->getValue().toInt();
     params.dbUserName    = dbUserName->getValue();
     params.dbPassword    = dbPassword->getValue();
     params.dbName        = dbName->getValue();
--- libs/libmyth/mythcontext.cpp.db	2006-01-25 05:22:57.000000000 -0500
+++ libs/libmyth/mythcontext.cpp	2006-04-15 17:01:10.000000000 -0400
@@ -590,8 +590,12 @@
     
     VERBOSE(VB_IMPORTANT, QString("Writing settings file %1").arg(path));
     QTextStream s(f);
-    s << "DBHostName=" << params.dbHostName << endl
-      << "DBUserName=" << params.dbUserName << endl
+    s << "DBHostName=" << params.dbHostName << endl;
+
+    if (params.dbPort)
+      s << "DBPort=" << params.dbPort << endl;
+
+    s << "DBUserName=" << params.dbUserName << endl
       << "DBPassword=" << params.dbPassword << endl
       << "DBName="     << params.dbName     << endl
       << "DBType="     << params.dbType     << endl
@@ -752,6 +756,8 @@
         
         params.dbHostName = getResponse("Database host name:",
                                         params.dbHostName);
+        params.dbPort = intResponse("Database non-default port:",
+                                    params.dbPort);
         params.dbName     = getResponse("Database name:",
                                         params.dbName);
         params.dbUserName = getResponse("Database user name:",
@@ -2730,6 +2736,7 @@
     DatabaseParams params;
     
     params.dbHostName = d->m_settings->GetSetting("DBHostName", "localhost");
+    params.dbPort     = d->m_settings->GetNumSetting("DBPort", 0);
     params.dbUserName = d->m_settings->GetSetting("DBUserName", "mythtv");
     params.dbPassword = d->m_settings->GetSetting("DBPassword", "mythtv");
     params.dbName     = d->m_settings->GetSetting("DBName",     "mythconverg");
@@ -2766,6 +2773,7 @@
     
     // only rewrite file if it has changed
     if (params.dbHostName   != cur_params.dbHostName          ||
+        params.dbPort       != cur_params.dbPort              ||
         params.dbUserName   != cur_params.dbUserName          ||
         params.dbPassword   != cur_params.dbPassword          ||
         params.dbName       != cur_params.dbName              ||
--- libs/libmyth/mythcontext.h.db	2006-01-21 23:29:43.000000000 -0500
+++ libs/libmyth/mythcontext.h	2006-04-15 16:45:22.000000000 -0400
@@ -130,6 +130,7 @@
 struct DatabaseParams
 {
     QString dbHostName;         ///< database server
+    int     dbPort;             ///< database port
     QString dbUserName;         ///< DB user name 
     QString dbPassword;         ///< DB password
     QString dbName;             ///< database name
--- libs/libmyth/mythdbcon.cpp.db	2006-02-03 17:24:39.000000000 -0500
+++ libs/libmyth/mythdbcon.cpp	2006-04-15 16:51:12.000000000 -0400
@@ -55,6 +55,8 @@
         m_db->setUserName(dbparms.dbUserName);
         m_db->setPassword(dbparms.dbPassword);
         m_db->setHostName(dbparms.dbHostName);
+        if (dbparms.dbPort)
+            m_db->setPort(dbparms.dbPort);
         connected = m_db->open();
 
         if (!connected && dbparms.wolEnabled)
