diff -ruN qt-x11-commercial-src-4.1.4-sco6/configure qt-x11-commercial-src-4.1.4-sco5_and_6/configure
--- qt-x11-commercial-src-4.1.4-sco6/configure	2006-06-19 06:50:54.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/configure	2006-08-07 15:52:58.000000000 -0400
@@ -1604,11 +1604,20 @@
         "
         ;;
      SCO_SV:*)
-        #PLATFORM=sco-g++
-        PLATFORM=sco-cc
-        PLATFORM_NOTES="
-            - Also available for SCO OpenServer: sco-g++
-        "
+	case $UNAME_VERSION in
+		5*)
+			PLATFORM=sco5-g++-fsupth
+		        PLATFORM_NOTES="
+		           - Also available for SCO OpenServer: sco-cc
+			"
+		;;
+		6*)
+			PLATFORM=sco-cc
+		        PLATFORM_NOTES="
+		           - Also available for SCO OpenServer: sco5-g++-fsupth
+			"
+		;;
+	esac
         ;;
      UNIX_SV:*)
         PLATFORM=unixware-g++
diff -ruN qt-x11-commercial-src-4.1.4-sco6/mkspecs/sco5-g++-fsupth/qmake.conf qt-x11-commercial-src-4.1.4-sco5_and_6/mkspecs/sco5-g++-fsupth/qmake.conf
--- qt-x11-commercial-src-4.1.4-sco6/mkspecs/sco5-g++-fsupth/qmake.conf	1969-12-31 19:00:00.000000000 -0500
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/mkspecs/sco5-g++-fsupth/qmake.conf	2006-08-07 15:54:58.000000000 -0400
@@ -0,0 +1,78 @@
+#
+# qmake configuration for sco-g++
+#
+# Written for SCO OpenServer 5.0.6 with Skunkware's compiler
+#
+
+MAKEFILE_GENERATOR	= UNIX
+TEMPLATE		= app
+CONFIG			+= qt warn_on release link_prl
+QT			+= core gui
+
+QMAKE_CC		= gcc
+QMAKE_LEX		= flex
+QMAKE_LEXFLAGS		=
+QMAKE_YACC		= yacc
+QMAKE_YACCFLAGS		= -d
+QMAKE_CFLAGS		=
+QMAKE_CFLAGS_DEPS	= -M
+QMAKE_CFLAGS_WARN_ON	= -Wall -W
+QMAKE_CFLAGS_WARN_OFF	= -w
+QMAKE_CFLAGS_RELEASE	= -O2
+QMAKE_CFLAGS_DEBUG	= -g
+QMAKE_CFLAGS_SHLIB	= -fPIC
+QMAKE_CFLAGS_YACC	= -Wno-unused -Wno-parentheses
+
+QMAKE_CXX		= g++
+QMAKE_CXXFLAGS		= $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS	= $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON	= $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF	= $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE	= $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG	= $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB	= $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC	= $$QMAKE_CFLAGS_YACC
+
+QMAKE_INCDIR		=
+QMAKE_LIBDIR		=
+QMAKE_INCDIR_X11	=
+QMAKE_LIBDIR_X11	=
+QMAKE_INCDIR_QT		= $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT		= $$[QT_INSTALL_LIBS]
+QMAKE_INCDIR_OPENGL	=
+QMAKE_LIBDIR_OPENGL	=
+
+QMAKE_LINK		= g++
+QMAKE_LINK_SHLIB	= g++
+QMAKE_LFLAGS		=
+QMAKE_LFLAGS_RELEASE	=
+QMAKE_LFLAGS_DEBUG	=
+QMAKE_LFLAGS_SHLIB	= -G
+QMAKE_LFLAGS_PLUGIN	= $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME	= -h$$LITERAL_WHITESPACE
+QMAKE_RPATH		=
+
+QMAKE_LIBS		=
+QMAKE_LIBS_DYNLOAD	= -ldl
+QMAKE_LIBS_X11		= -lXext -lX11 -lsocket -lm
+
+QMAKE_LIBS_OPENGL	= -lGLU -lGL
+QMAKE_LIBS_OPENGL_QT	= -lGL
+QMAKE_LIBS_THREAD	= -lgthreads -lmalloc
+
+QMAKE_MOC		= $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC		= $$[QT_INSTALL_BINS]/uic
+
+QMAKE_AR		= ar cqs
+QMAKE_RANLIB		=
+
+QMAKE_TAR		= tar -cf
+QMAKE_GZIP		= gzip -9f
+
+QMAKE_COPY		= cp -f
+QMAKE_MOVE		= mv -f
+QMAKE_DEL_FILE		= rm -f
+QMAKE_DEL_DIR		= rmdir
+QMAKE_CHK_DIR_EXISTS	= test -d
+QMAKE_MKDIR		= mkdir -p
+load(qt_config)
diff -ruN qt-x11-commercial-src-4.1.4-sco6/mkspecs/sco5-g++-fsupth/qplatformdefs.h qt-x11-commercial-src-4.1.4-sco5_and_6/mkspecs/sco5-g++-fsupth/qplatformdefs.h
--- qt-x11-commercial-src-4.1.4-sco6/mkspecs/sco5-g++-fsupth/qplatformdefs.h	1969-12-31 19:00:00.000000000 -0500
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/mkspecs/sco5-g++-fsupth/qplatformdefs.h	2006-08-07 15:57:50.000000000 -0400
@@ -0,0 +1,99 @@
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// This is to have PATH_MAX defined in <limits.h>
+#ifndef _IBCS2
+#  define _IBCS2
+#endif
+
+#include <unistd.h>
+
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#include <dlfcn.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/shm.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+/* SCO OpenServer 5.0.6 does not have native threads,
+ * we use the LGPL'd FSUPthreads 3.5 library which is on
+ * most systems, and is the same library MySQL uses
+ * to acheive threading. It's not 100% POSIX conformant
+ * so we need to define this to work-around some minor
+ * issues */
+#define QT_FSU_PTHREADS		1
+
+#define QT_FOPEN                ::fopen
+#define QT_FSEEK                ::fseek
+#define QT_FTELL                ::ftell
+#define QT_FGETPOS              ::fgetpos
+#define QT_FSETPOS              ::fsetpos
+#define QT_FPOS_T               fpos_t
+#define QT_OFF_T                off_t
+
+#define QT_STATBUF		struct stat
+#define QT_STATBUF4TSTAT	struct stat
+#define QT_STAT			::stat
+#define QT_FSTAT		::fstat
+#define QT_LSTAT		::lstat
+#define QT_STAT_REG		S_IFREG
+#define QT_STAT_DIR		S_IFDIR
+#define QT_STAT_MASK		S_IFMT
+#define QT_STAT_LNK		S_IFLNK
+#define QT_SOCKET_CONNECT	::connect
+#define QT_SOCKET_BIND		::bind
+#define QT_FILENO		fileno
+#define QT_OPEN			::open
+#define QT_CLOSE		::close
+#define QT_TRUNCATE		::truncate
+#define QT_FTRUNCATE		::ftruncate
+#define QT_LSEEK		::lseek
+#define QT_READ			::read
+#define QT_WRITE		::write
+#define QT_ACCESS		::access
+#define QT_GETCWD		::getcwd
+#define QT_CHDIR		::chdir
+#define QT_MKDIR		::mkdir
+#define QT_RMDIR		::rmdir
+#define QT_OPEN_RDONLY		O_RDONLY
+#define QT_OPEN_WRONLY		O_WRONLY
+#define QT_OPEN_RDWR		O_RDWR
+#define QT_OPEN_CREAT		O_CREAT
+#define QT_OPEN_TRUNC		O_TRUNC
+#define QT_OPEN_APPEND		O_APPEND
+
+#define QT_SIGNAL_RETTYPE	void
+#define QT_SIGNAL_ARGS		int
+#define QT_SIGNAL_IGNORE	SIG_IGN
+
+#define QT_SOCKLEN_T		int
+
+#define QT_SNPRINTF		::snprintf
+#define QT_VSNPRINTF		::vsnprintf
+
+
+#endif // QPLATFORMDEFS_H
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/3rdparty/sqlite/os_unix.c qt-x11-commercial-src-4.1.4-sco5_and_6/src/3rdparty/sqlite/os_unix.c
--- qt-x11-commercial-src-4.1.4-sco6/src/3rdparty/sqlite/os_unix.c	2006-06-19 06:50:54.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/3rdparty/sqlite/os_unix.c	2006-08-07 15:52:58.000000000 -0400
@@ -1399,6 +1399,9 @@
 */
 static int inMutex = 0;
 #ifdef SQLITE_UNIX_THREADS
+#if defined(_SCO_ELF) && !defined(PTHREAD_MUTEX_INITIALIZER)
+#define PTHREAD_MUTEX_INITIALIZER { { NULL, NULL }, 0, NULL, 0 }
+#endif
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 #endif
 
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/corelib/io/qfsfileengine.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/io/qfsfileengine.cpp
--- qt-x11-commercial-src-4.1.4-sco6/src/corelib/io/qfsfileengine.cpp	2006-06-19 06:50:54.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/io/qfsfileengine.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -40,6 +40,12 @@
 #  endif
 #endif
 
+#ifdef Q_OS_SCO
+#  ifndef S_ISSOCK
+#    define S_ISSOCK(x) false
+#  endif
+#endif
+
 /*! \class QFSFileEngine
     \brief The QFSFileEngine class implements Qt's default file engine.
     \since 4.1
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/corelib/thread/qthread_unix.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/thread/qthread_unix.cpp
--- qt-x11-commercial-src-4.1.4-sco6/src/corelib/thread/qthread_unix.cpp	2006-06-19 06:50:55.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/thread/qthread_unix.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -30,7 +30,10 @@
 
 #include "qthread_p.h"
 
+#ifndef QT_FSU_PTHREADS
 #include <sched.h>
+#endif
+
 #include <errno.h>
 #include <string.h>
 
@@ -49,11 +52,36 @@
 }
 #endif
 
+#ifdef QT_FSU_PTHREADS
+/* FSU PThreads has a typo for PTHREAD_ONCE_INIT */
+#  ifdef PTHREAD_ONCE_INIT
+#    undef PTHREAD_ONCE_INIT
+#  endif
+#  define PTHREAD_QUEUE_INIT { NULL, NULL }
+#  ifdef _POSIX_THREADS_PRIO_PROTECT
+#    define PTHREAD_MUTEX_INIT { PTHREAD_QUEUE_INIT, 0, NULL, 0, 0, 0, 0 }
+#  else
+#    define PTHREAD_MUTEX_INIT { PTHREAD_QUEUE_INIT, 0, NULL, 0 }
+#  endif
+#  define PTHREAD_ONCE_INIT { 0, 0, PTHREAD_MUTEX_INIT }
+#  define PTHREAD_CANCEL_DISABLE 0
+#  define PTHREAD_CREATE_DETACHED 1
+#  define PTHREAD_EXPLICIT_SCHED PTHREAD_INHERIT_SCHED
+#  define pthread_setcancelstate(a,b) do { } while(0);
+#  define pthread_testcancel() do { } while(0);
+#else
+#endif
+
 static pthread_once_t current_thread_key_once = PTHREAD_ONCE_INIT;
 static pthread_key_t current_thread_key;
+
+#ifdef QT_FSU_PTHREADS
+static void create_current_thread_key(void *arg)
+{ (void)arg; pthread_key_create(&current_thread_key, NULL); }
+#else
 static void create_current_thread_key()
 { pthread_key_create(&current_thread_key, NULL); }
-
+#endif
 
 void QThreadPrivate::createEventDispatcher(QThreadData *data)
 {
@@ -150,7 +178,14 @@
 QThread *QThread::currentThread()
 {
     pthread_once(&current_thread_key_once, create_current_thread_key);
-    QThread *current = reinterpret_cast<QThread *>(pthread_getspecific(current_thread_key));
+#ifndef QT_FSU_PTHREADS
+    QThread *current = reinterpret_cast<QThread *>
+	(pthread_getspecific(current_thread_key));
+#else
+    void *tempvar = NULL;
+    pthread_getspecific(current_thread_key, &tempvar);
+    QThread *current = reinterpret_cast<QThread *>(tempvar);
+#endif
     if (!current && QThreadPrivate::adoptCurrentThreadEnabled) {
         current = QThreadPrivate::adoptCurrentThread();
     }
@@ -251,7 +286,12 @@
 
     pthread_attr_t attr;
     pthread_attr_init(&attr);
+#ifdef QT_FSU_PTHREADS
+    int detachstate = PTHREAD_CREATE_DETACHED;
+    pthread_attr_setdetachstate(&attr, &detachstate);
+#else
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+#endif
 
     d->priority = priority;
 
@@ -266,12 +306,17 @@
     default:
         {
             int sched_policy;
+
+#ifndef QT_FSU_PTHREADS
             if (pthread_attr_getschedpolicy(&attr, &sched_policy) != 0) {
                 // failed to get the scheduling policy, don't bother
                 // setting the priority
                 qWarning("QThread: cannot determine default scheduler policy");
                 break;
             }
+#else
+            sched_policy = pthread_attr_getsched(&attr);
+#endif
 
             int prio_min = sched_get_priority_min(sched_policy);
             int prio_max = sched_get_priority_max(sched_policy);
@@ -299,11 +344,16 @@
                 break;
             }
 
+#ifdef QT_FSU_PTHREADS
+            pthread_attr_setsched(&attr, prio);
+#else
             sched_param sp;
             sp.sched_priority = prio;
 
-            pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
             pthread_attr_setschedparam(&attr, &sp);
+#endif
+            pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
+
             break;
         }
     }
@@ -469,7 +519,7 @@
 
     // copied from start() with a few modifications:
 
-#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
+#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && !defined(QT_FSU_PTHREADS) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
     int sched_policy;
     sched_param param;
 
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/corelib/tools/qlocale.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/tools/qlocale.cpp
--- qt-x11-commercial-src-4.1.4-sco6/src/corelib/tools/qlocale.cpp	2006-06-19 06:50:55.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/corelib/tools/qlocale.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -32,6 +32,9 @@
 #   include "qt_windows.h"
 #   include <time.h>
 #endif
+#if defined(Q_OS_SCO)
+#   include <time.h>
+#endif
 #if !defined(QWS) && defined(Q_OS_MAC)
 #   include "private/qcore_mac_p.h"
 #endif
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/gui/kernel/qapplication_x11.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/src/gui/kernel/qapplication_x11.cpp
--- qt-x11-commercial-src-4.1.4-sco6/src/gui/kernel/qapplication_x11.cpp	2006-08-07 15:52:43.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/gui/kernel/qapplication_x11.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -1146,7 +1146,9 @@
 
 #define XK_MISCELLANY
 #define XK_LATIN1
+#ifndef Q_OS_SCO
 #define XK_KOREAN
+#endif
 #define XK_XKB_KEYS
 #include <X11/keysymdef.h>
 
@@ -4214,12 +4216,16 @@
     // International input method support keys
 
     // International & multi-key character composition
+#ifndef Q_OS_SCO
     XK_ISO_Level3_Shift,        Qt::Key_AltGr,
+#endif
     XK_Multi_key,		Qt::Key_Multi_key,
     XK_Codeinput,		Qt::Key_Codeinput,
+#ifndef Q_OS_SCO
     XK_SingleCandidate,		Qt::Key_SingleCandidate,
     XK_MultipleCandidate,	Qt::Key_MultipleCandidate,
     XK_PreviousCandidate,	Qt::Key_PreviousCandidate,
+#endif
 
     // Misc Functions
     XK_Mode_switch,		Qt::Key_Mode_switch,
@@ -4249,8 +4255,10 @@
     //XK_Zen_Koho,		Qt::Key_Zen_Koho,
     //XK_Mae_Koho,		Qt::Key_Mae_Koho,
     XK_Kanji_Bangou,		Qt::Key_Codeinput,
+#ifndef Q_OS_SCO
     XK_Zen_Koho,		Qt::Key_MultipleCandidate,
     XK_Mae_Koho,		Qt::Key_PreviousCandidate,
+#endif
 
 #ifdef XK_KOREAN
     // Korean keyboard support
@@ -4278,6 +4286,7 @@
 #endif  // XK_KOREAN
 
     // dead keys
+#ifndef Q_OS_SCO
     XK_dead_grave,              Qt::Key_Dead_Grave,
     XK_dead_acute,              Qt::Key_Dead_Acute,
     XK_dead_circumflex,         Qt::Key_Dead_Circumflex,
@@ -4295,6 +4304,7 @@
     XK_dead_voiced_sound,       Qt::Key_Dead_Voiced_Sound,
     XK_dead_semivoiced_sound,   Qt::Key_Dead_Semivoiced_Sound,
     XK_dead_belowdot,           Qt::Key_Dead_Belowdot,
+#endif
     XK_dead_hook,               Qt::Key_Dead_Hook,
     XK_dead_horn,               Qt::Key_Dead_Horn,
 
@@ -4687,7 +4697,14 @@
             code = translateKeySym(key);
         }
         modifiers |= Qt::KeypadModifier;
-    } else if (text.length() == 1 && text.unicode()->unicode() > 0x1f && text.unicode()->unicode() != 0x7f && !(key >= XK_dead_grave && key <= XK_dead_horn)) {
+    } else if (text.length() == 1 && text.unicode()->unicode() > 0x1f 
+	       && text.unicode()->unicode() != 0x7f &&
+#ifdef Q_OS_SCO
+              !(key >= XK_dead_hook && key <= XK_dead_horn)
+#else 
+	      !(key >= XK_dead_grave && key <= XK_dead_horn)
+#endif
+	      ) {
         code = text.unicode()->toUpper().unicode();
     } else {
         // any other keys
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/gui/kernel/qwidget.h qt-x11-commercial-src-4.1.4-sco5_and_6/src/gui/kernel/qwidget.h
--- qt-x11-commercial-src-4.1.4-sco6/src/gui/kernel/qwidget.h	2006-06-19 06:50:56.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/gui/kernel/qwidget.h	2006-08-07 15:52:58.000000000 -0400
@@ -404,8 +404,12 @@
     void showMaximized();
     void showFullScreen();
     void showNormal();
-
     bool close();
+#ifdef Q_OS_SCO
+#  ifdef raise
+#    undef raise
+#  endif
+#endif
     void raise();
     void lower();
 
diff -ruN qt-x11-commercial-src-4.1.4-sco6/src/network/qhostinfo_unix.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/src/network/qhostinfo_unix.cpp
--- qt-x11-commercial-src-4.1.4-sco6/src/network/qhostinfo_unix.cpp	2006-06-19 06:50:47.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/src/network/qhostinfo_unix.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -40,6 +40,10 @@
 # define QT_SOCKOPTLEN_T QT_SOCKLEN_T
 #endif
 
+#ifdef Q_OS_SCO
+typedef long in_addr_t;
+#endif
+
 //#define QHOSTINFO_DEBUG
     
 QHostInfo QHostInfoAgent::fromName(const QString &hostName)
diff -ruN qt-x11-commercial-src-4.1.4-sco6/tools/qtestlib/src/qtestcase.cpp qt-x11-commercial-src-4.1.4-sco5_and_6/tools/qtestlib/src/qtestcase.cpp
--- qt-x11-commercial-src-4.1.4-sco6/tools/qtestlib/src/qtestcase.cpp	2006-08-07 15:52:43.000000000 -0400
+++ qt-x11-commercial-src-4.1.4-sco5_and_6/tools/qtestlib/src/qtestcase.cpp	2006-08-07 15:52:58.000000000 -0400
@@ -38,12 +38,12 @@
 #ifdef Q_OS_WIN
 #include <windows.h> // for Sleep
 #endif
+#if defined(Q_OS_SCO) || defined(Q_OS_UNIXWARE)
+#include <unistd.h>
+#endif
 #ifdef Q_OS_UNIX
 #include <time.h>
 #endif
-#ifdef Q_OS_UNIXWARE
-#include <unistd.h>
-#endif
 
 /*!
    \namespace QTest
@@ -1321,7 +1321,7 @@
 
 #if defined(Q_OS_WIN)
     Sleep(uint(ms));
-#elif defined(Q_OS_UNIXWARE)
+#elif defined(Q_OS_UNIXWARE) || defined(Q_OS_SCO)
     usleep(uint(ms)*1000);
 #else
     struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };

