changeset 1404:56f311dc23f6

Changes to get the library building with Watcom on OS/2. These changes mean that VisualAge 3.0 will no longer build the library. Please use version 3.6 or higher.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 29 Nov 2011 15:25:41 +0000
parents 20c6d0c50c94
children b7aaf06e9367
files compat.h dw.h makefile.wpm os2/dirent.c os2/dw.c os2/dw.lnk os2/dwcompat.lnk platform/dirent.h win/dw.c
diffstat 9 files changed, 410 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/compat.h	Mon Nov 28 05:49:27 2011 +0000
+++ b/compat.h	Tue Nov 29 15:25:41 2011 +0000
@@ -60,8 +60,10 @@
 #define INCL_DEV
 #define INCL_DOSERRORS
 
-#if (defined(__IBMC__) || defined(_System)) && !defined(API)
-#define API _System
+#ifdef __OS2__
+# if (defined(__IBMC__) || defined(__WATCOMC__) || defined(_System)) && !defined(API)
+# define API _System
+# endif
 #endif
 
 #ifndef API
--- a/dw.h	Mon Nov 28 05:49:27 2011 +0000
+++ b/dw.h	Tue Nov 29 15:25:41 2011 +0000
@@ -67,8 +67,10 @@
 #if defined(__OS2__) || (defined(__WIN32__) && !defined(GDK_WINDOWING_WIN32)) || defined(__MAC__) || (defined(WINNT) && !defined(GDK_WINDOWING_WIN32)) || defined(__EMX__)
 /* OS/2, Windows or MacOS */
 
-#if (defined(__IBMC__) || defined(_System)) && !defined(API)
-#define API _System
+#ifdef __OS2__
+# if (defined(__IBMC__) || defined(__WATCOMC__) || defined(_System)) && !defined(API)
+# define API _System
+# endif
 #endif
 
 /* Used internally */
--- a/makefile.wpm	Mon Nov 28 05:49:27 2011 +0000
+++ b/makefile.wpm	Tue Nov 29 15:25:41 2011 +0000
@@ -5,20 +5,41 @@
 #===================================================================
 OS22_H = $(%WATCOM)\h\os2
 CFLAGS  = -i=os2 -i=$(OS22_H) -bt=OS2 -zq -d2 -bd
+TKPATH=C:\Toolkit
+TLKTLIB = $(TKPATH)\LIB
 
 .SUFFIXES:
 .SUFFIXES: .obj .c
 .c.obj: .AUTODEPEND
 	wcc386 $(CFLAGS) $*.c
 
-all:	dw.dll dwcompat.dll
+all:	dw.dll dwcompat.dll dwtest.exe
 
-dwcompat.dll: compat.obj
-	wlink name dwcompat.dll system os2v2_pm d a library so32dll,tcp32dll option symf f $[@
+dwcompat.dll: dirent.obj compat.obj
+	wlink @os2\dwcompat.lnk name dwcompat.dll system os2v2_dll d a library $(TLKTLIB)\so32dll,$(TLKTLIB)\tcp32dll option implib=dwcompat option symf f $[@ f compat
+	copy dwcompat.lib lib
+
+dirent.obj:
+	wcc386 $(CFLAGS) os2\dirent.c
 
 dw.dll: dw.obj
-	wlink name dw.dll system os2v2_pm d a option symf f $[@
+	wlink @os2\dw.lnk name dw.dll system os2v2_dll d a option implib=dw option symf f $[@
+	copy dw.lib lib
 
 dw.obj: os2\dw.c
 	wcc386 $(CFLAGS) os2\dw.c
 
+dwtest.exe: dwtest.obj
+	wlink name dwtest.exe system os2v2_pm d a library lib\dw.lib option symf f $[@
+
+dwtest.obj:
+	wcc386 /DOS2 -i=os2 -i=$(OS22_H) -bt=OS2 -zq -d2 dwtest.c
+
+clean:
+	@if exist *.obj del *.obj
+	@if exist *.sym del *.sym
+	@if exist *.lib del *.lib
+	@if exist *.dll del *.dll
+	@if exist *.exe del *.exe
+	@if exist lib\*.lib del lib\*.lib
+
--- a/os2/dirent.c	Mon Nov 28 05:49:27 2011 +0000
+++ b/os2/dirent.c	Tue Nov 29 15:25:41 2011 +0000
@@ -8,6 +8,12 @@
 #include "compat.h"
 #include <errno.h>
 
+#ifdef __WATCOMC__
+#include "platform\dirent.h"
+typedef struct _dirdescr DIRW;
+#define DIR DIRW
+#endif
+
 # define FFBUF	FILEFINDBUF3
 # define Word	ULONG
   /*
--- a/os2/dw.c	Mon Nov 28 05:49:27 2011 +0000
+++ b/os2/dw.c	Tue Nov 29 15:25:41 2011 +0000
@@ -1789,7 +1789,8 @@
             }
         }
         break;
-    }
+	}
+    return (MRESULT)FALSE;
 }
 
 #define CALENDAR_BORDER 3
@@ -2247,7 +2248,7 @@
       {
          if(tmp->message == WM_COMMAND)
          {
-            int (* API clickfunc)(HWND, void *) = (int (* API)(HWND, void *))tmp->signalfunction;
+            int (API * clickfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction;
 
             /* Make sure it's the right window, and the right ID */
             if(tmp->window == handle)
@@ -2786,7 +2787,7 @@
             {
                if((mp2 && tmp->message == WM_SETFOCUS) || (!mp2 && tmp->message == WM_USER+1))
                {
-                  int (* API setfocusfunc)(HWND, void *) = (int (* API)(HWND, void *))tmp->signalfunction;
+                  int (API * setfocusfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction;
 
                   if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd)
                   {
@@ -2798,7 +2799,7 @@
             break;
          case WM_TIMER:
             {
-               int (* API timerfunc)(void *) = (int (* API)(void *))tmp->signalfunction;
+               int (API * timerfunc)(void *) = (int (API *)(void *))tmp->signalfunction;
                if(tmp->id == (int)mp1)
                {
                   if(!timerfunc(tmp->data))
@@ -2810,7 +2811,7 @@
             break;
          case WM_SIZE:
             {
-               int (* API sizefunc)(HWND, int, int, void *) = (int (* API)(HWND, int, int, void *))tmp->signalfunction;
+               int (API * sizefunc)(HWND, int, int, void *) = (int (API *)(HWND, int, int, void *))tmp->signalfunction;
 
                if((hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd) && SHORT1FROMMP(mp2) && SHORT2FROMMP(mp2))
                {
@@ -2822,7 +2823,7 @@
          case WM_BUTTON1DOWN:
             {
                POINTS pts = (*((POINTS*)&mp1));
-               int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))tmp->signalfunction;
+               int (API * buttonfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction;
 
                if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window)
                {
@@ -2849,7 +2850,7 @@
          case WM_BUTTON1UP:
             {
                POINTS pts = (*((POINTS*)&mp1));
-               int (* API buttonfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))tmp->signalfunction;
+               int (API * buttonfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction;
 
                if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window)
                {
@@ -2875,7 +2876,7 @@
             break;
          case WM_MOUSEMOVE:
             {
-               int (* API motionfunc)(HWND, int, int, int, void *) = (int (* API)(HWND, int, int, int, void *))tmp->signalfunction;
+               int (API * motionfunc)(HWND, int, int, int, void *) = (int (API *)(HWND, int, int, int, void *))tmp->signalfunction;
 
                if(hWnd == tmp->window || WinWindowFromID(tmp->window, FID_CLIENT) == hWnd || WinQueryCapture(HWND_DESKTOP) == tmp->window)
                {
@@ -2896,7 +2897,7 @@
             break;
          case WM_CHAR:
             {
-               int (* API keypressfunc)(HWND, char, int, int, void *) = (int (* API)(HWND, char, int, int, void *))tmp->signalfunction;
+               int (API * keypressfunc)(HWND, char, int, int, void *) = (int (API *)(HWND, char, int, int, void *))tmp->signalfunction;
 
                if((hWnd == tmp->window || _toplevel_window(hWnd) == tmp->window) && !(SHORT1FROMMP(mp1) & KC_KEYUP))
                {
@@ -2927,7 +2928,7 @@
             break;
          case WM_CLOSE:
             {
-               int (* API closefunc)(HWND, void *) = (int (* API)(HWND, void *))tmp->signalfunction;
+               int (API * closefunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction;
 
                if(hWnd == tmp->window || hWnd == WinWindowFromID(tmp->window, FID_CLIENT))
                {
@@ -2942,7 +2943,7 @@
             {
                HPS hps;
                DWExpose exp;
-               int (* API exposefunc)(HWND, DWExpose *, void *) = (int (* API)(HWND, DWExpose *, void *))tmp->signalfunction;
+               int (API * exposefunc)(HWND, DWExpose *, void *) = (int (API *)(HWND, DWExpose *, void *))tmp->signalfunction;
                RECTL  rc;
 
                if(hWnd == tmp->window)
@@ -2961,7 +2962,7 @@
             break;
          case WM_COMMAND:
             {
-               int (* API clickfunc)(HWND, void *) = (int (* API)(HWND, void *))tmp->signalfunction;
+               int (API * clickfunc)(HWND, void *) = (int (API *)(HWND, void *))tmp->signalfunction;
                ULONG command = COMMANDMSG(&msg)->cmd;
 
                if(tmp->id && command == tmp->id)
@@ -2996,7 +2997,7 @@
                {
                case CN_ENTER:
                   {
-                     int (* API containerselectfunc)(HWND, char *, void *) = (int (* API)(HWND, char *, void *))tmp->signalfunction;
+                     int (API * containerselectfunc)(HWND, char *, void *) = (int (API *)(HWND, char *, void *))tmp->signalfunction;
                      char *text = NULL;
 
                      if(mp2)
@@ -3017,7 +3018,7 @@
                   break;
                case CN_EXPANDTREE:
                   {
-                     int (* API treeexpandfunc)(HWND, HTREEITEM, void *) = (int (* API)(HWND, HTREEITEM, void *))tmp->signalfunction;
+                     int (API * treeexpandfunc)(HWND, HTREEITEM, void *) = (int (API *)(HWND, HTREEITEM, void *))tmp->signalfunction;
 
                      if(tmp->window == notifyhwnd)
                      {
@@ -3028,7 +3029,7 @@
                   break;
                case CN_CONTEXTMENU:
                   {
-                     int (* API containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (* API)(HWND, char *, int, int, void *, void *))tmp->signalfunction;
+                     int (API * containercontextfunc)(HWND, char *, int, int, void *, void *) = (int (API *)(HWND, char *, int, int, void *, void *))tmp->signalfunction;
                      char *text = NULL;
                      void *user = NULL;
                      LONG x,y;
@@ -3093,7 +3094,7 @@
 
                               if(pci && pre->fEmphasisMask & CRA_CURSORED && (pci->rc.flRecordAttr & CRA_CURSORED))
                               {
-                                 int (* API treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (* API)(HWND, HTREEITEM, char *, void *, void *))tmp->signalfunction;
+                                 int (API * treeselectfunc)(HWND, HTREEITEM, char *, void *, void *) = (int (API *)(HWND, HTREEITEM, char *, void *, void *))tmp->signalfunction;
 
                                  if(dw_window_get_data(tmp->window, "_dw_container"))
                                     result = treeselectfunc(tmp->window, 0, (char *)pci->rc.pszIcon, tmp->data, 0);
@@ -3127,7 +3128,7 @@
 
                      if(strncmp(classbuf, "#38", 4) == 0)
                      {
-                        int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))tmp->signalfunction;
+                        int (API * valuechangedfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction;
 
                         if(tmp->window == hWnd || tmp->window == notifyhwnd)
                         {
@@ -3145,7 +3146,7 @@
                      }
                      else
                      {
-                        int (* API listboxselectfunc)(HWND, int, void *) = (int (* API )(HWND, int, void *))tmp->signalfunction;
+                        int (API * listboxselectfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction;
                         static int _recursing = 0;
 
                         if(_recursing == 0 && (tmp->window == notifyhwnd || (!id && tmp->window == (HWND)mp2)))
@@ -3183,7 +3184,7 @@
                   break;
                case SLN_SLIDERTRACK:
                   {
-                     int (* API valuechangedfunc)(HWND, int, void *) = (int (* API)(HWND, int, void *))tmp->signalfunction;
+                     int (API * valuechangedfunc)(HWND, int, void *) = (int (API *)(HWND, int, void *))tmp->signalfunction;
 
                      if(origmsg == WM_CONTROL)
                      {
@@ -3227,7 +3228,7 @@
 
                      if(psn && tmp->window == psn->hwndBook)
                      {
-                        int (* API switchpagefunc)(HWND, unsigned long, void *) = (int (* API)(HWND, unsigned long, void *))tmp->signalfunction;
+                        int (API * switchpagefunc)(HWND, unsigned long, void *) = (int (API *)(HWND, unsigned long, void *))tmp->signalfunction;
 
                         result = switchpagefunc(tmp->window, psn->ulPageIdNew, tmp->data);
                         tmp = NULL;
@@ -3341,7 +3342,7 @@
 {
    int result = -1;
    static int command_active = 0;
-   void (* API windowfunc)(PVOID) = 0L;
+   void (API * windowfunc)(PVOID) = 0L;
 
    if(!command_active)
    {
@@ -3491,7 +3492,7 @@
       }
       return MRFROMSHORT(FALSE);
    case WM_USER:
-      windowfunc = (void (* API)(void *))mp1;
+      windowfunc = (void (API *)(void *))mp1;
 
       if(windowfunc)
          windowfunc((void *)mp2);
@@ -3898,11 +3899,11 @@
    case WM_USER:
       {
             SignalHandler *tmp = (SignalHandler *)mp1;
-         int (* API clickfunc)(HWND, void *) = NULL;
+         int (API * clickfunc)(HWND, void *) = NULL;
 
          if(tmp)
          {
-            clickfunc = (int (* API)(HWND, void *))tmp->signalfunction;
+            clickfunc = (int (API *)(HWND, void *))tmp->signalfunction;
 
             clickfunc(tmp->window, tmp->data);
          }
@@ -4268,10 +4269,14 @@
 void API dw_debug(char *format, ...)
 {
    va_list args;
-   char outbuf[1024];
+   char outbuf[1025] = { 0 };
 
    va_start(args, format);
+#if defined(__IBMC__)
    vsprintf(outbuf, format, args);
+#else
+   vsnprintf(outbuf, 1024, format, args);
+#endif
    va_end(args);
 
    if(_PmPrintfString)
@@ -4298,11 +4303,15 @@
 int API dw_messagebox(char *title, int flags, char *format, ...)
 {
    va_list args;
-   char outbuf[1024];
+   char outbuf[1025] = { 0 };
    int rc;
 
    va_start(args, format);
+#if defined(__IBMC__)
    vsprintf(outbuf, format, args);
+#else
+   vsnprintf(outbuf, 1024, format, args);
+#endif
    va_end(args);
 
    rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, (PSZ)outbuf, (PSZ)title, 0, flags | MB_MOVEABLE);
@@ -10092,10 +10101,10 @@
 {
    HAB thishab = WinInitialize(0);
    HMQ thishmq = WinCreateMsgQueue(dwhab, 0);
-   void (* API threadfunc)(void *) = NULL;
+   void (API * threadfunc)(void *) = NULL;
    void **tmp = (void **)data;
 
-   threadfunc = (void (* API)(void *))tmp[0];
+   threadfunc = (void (API *)(void *))tmp[0];
    threadfunc(tmp[1]);
 
    free(tmp);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os2/dw.lnk	Tue Nov 29 15:25:41 2011 +0000
@@ -0,0 +1,298 @@
+option DESCRIPTION 'Dynamic Windows for OS/2'
+segment type DATA NONSHARED LOADONCALL
+
+export dw_init.10=dw_init
+export dw_main.11=dw_main
+export dw_exit.12=dw_exit
+export dw_beep.13=dw_beep
+export dw_messagebox.14=dw_messagebox
+export dw_debug.15=dw_debug
+
+export dw_environment_query.16=dw_environment_query
+export dw_exec.17=dw_exec
+export dw_browse.18=dw_browse
+export dw_file_browse.19=dw_file_browse
+export dw_user_dir.20=dw_user_dir
+export dw_flush.21=dw_flush
+export dw_free.22=dw_free
+export dw_main_sleep.23=dw_main_sleep
+export dw_main_iteration.24=dw_main_iteration
+export dw_app_dir.25=dw_app_dir
+
+export dw_box_new.40=dw_box_new
+export dw_groupbox_new.41=dw_groupbox_new
+export dw_box_pack_start.42=dw_box_pack_start
+export dw_box_pack_end.43=dw_box_pack_end
+export dw_box_pack_at_index.44=dw_box_pack_at_index
+
+export dw_mdi_new.46=dw_mdi_new
+
+export dw_window_new.50=dw_window_new
+export dw_window_show.51=dw_window_show
+export dw_window_hide.52=dw_window_hide
+export dw_window_destroy.53=dw_window_destroy
+export dw_window_set_font.54=dw_window_set_font
+export dw_window_set_color.55=dw_window_set_color
+export dw_window_set_pos.56=dw_window_set_pos
+export dw_window_set_size.57=dw_window_set_size
+export dw_window_set_pos_size.58=dw_window_set_pos_size
+export dw_window_get_pos_size.59=dw_window_get_pos_size
+export dw_window_set_style.60=dw_window_set_style
+export dw_window_set_icon.61=dw_window_set_icon
+export dw_window_set_bitmap.62=dw_window_set_bitmap
+export dw_window_get_text.63=dw_window_get_text
+export dw_window_set_text.64=dw_window_set_text
+export dw_window_disable.65=dw_window_disable
+export dw_window_enable.66=dw_window_enable
+export dw_window_capture.67=dw_window_capture
+export dw_window_release.68=dw_window_release
+export dw_window_reparent.69=dw_window_reparent
+export dw_window_function.70=dw_window_function
+export dw_window_from_id.71=dw_window_from_id
+export dw_window_set_border.72=dw_window_set_border
+export dw_window_minimize.73=dw_window_minimize
+export dw_window_set_pointer.74=dw_window_set_pointer
+export dw_window_default.75=dw_window_default
+export dw_window_raise.76=dw_window_raise
+export dw_window_lower.77=dw_window_lower
+export dw_window_click_default.78=dw_window_click_default
+export dw_window_redraw.79=dw_window_redraw
+export dw_bitmap_new.80=dw_bitmap_new
+export dw_window_set_bitmap_from_data.81=dw_window_set_bitmap_from_data
+export dw_window_get_font.82=dw_window_get_font
+export dw_window_set_tooltip.83=dw_window_set_tooltip
+
+export dw_button_new.90=dw_button_new
+export dw_bitmapbutton_new.91=dw_bitmapbutton_new
+export dw_bitmapbutton_new_from_file.92=dw_bitmapbutton_new_from_file
+export dw_bitmapbutton_new_from_data.93=dw_bitmapbutton_new_from_data
+
+export dw_text_new.100=dw_text_new
+export dw_status_text_new.101=dw_status_text_new
+
+export dw_entryfield_new.110=dw_entryfield_new
+export dw_entryfield_password_new.111=dw_entryfield_password_new
+
+export dw_combobox_new.120=dw_combobox_new
+
+export dw_radiobutton_new.130=dw_radiobutton_new
+
+export dw_listbox_new.140=dw_listbox_new
+export dw_listbox_append.141=dw_listbox_append
+export dw_listbox_clear.142=dw_listbox_clear
+export dw_listbox_count.143=dw_listbox_count
+export dw_listbox_set_top.144=dw_listbox_set_top
+export dw_listbox_select.145=dw_listbox_select
+export dw_listbox_delete.146=dw_listbox_delete
+export dw_listbox_get_text.147=dw_listbox_get_text
+export dw_listbox_set_text.148=dw_listbox_set_text
+export dw_listbox_selected.149=dw_listbox_selected
+export dw_listbox_selected_multi.150=dw_listbox_selected_multi
+export dw_listbox_list_append.151=dw_listbox_list_append
+export dw_listbox_insert.152=dw_listbox_insert
+
+export dw_percent_new.160=dw_percent_new
+export dw_percent_set_pos.162=dw_percent_set_pos
+
+export dw_mle_new.170=dw_mle_new
+export dw_mle_import.171=dw_mle_import
+export dw_mle_export.172=dw_mle_export
+export dw_mle_get_size.173=dw_mle_get_size
+export dw_mle_delete.174=dw_mle_delete
+export dw_mle_clear.175=dw_mle_clear
+export dw_mle_freeze.176=dw_mle_freeze
+export dw_mle_thaw.177=dw_mle_thaw
+export dw_mle_set_cursor.178=dw_mle_set_cursor
+export dw_mle_set_visible.179=dw_mle_set_visible
+export dw_mle_search.180=dw_mle_search
+export dw_mle_set_editable.181=dw_mle_set_editable
+export dw_mle_set_word_wrap.182=dw_mle_set_word_wrap
+
+export dw_spinbutton_new.190=dw_spinbutton_new
+export dw_spinbutton_set_pos.191=dw_spinbutton_set_pos
+export dw_spinbutton_set_limits.192=dw_spinbutton_set_limits
+export dw_entryfield_set_limit.193=dw_entryfield_set_limit
+export dw_spinbutton_get_pos.194=dw_spinbutton_get_pos
+
+export dw_checkbox_new.200=dw_checkbox_new
+export dw_checkbox_get.201=dw_checkbox_get
+export dw_checkbox_set.202=dw_checkbox_set
+
+export dw_icon_load.210=dw_icon_load
+export dw_icon_free.211=dw_icon_free
+export dw_icon_load_from_file.212=dw_icon_load_from_file
+export dw_icon_load_from_data.213=dw_icon_load_from_data
+
+export dw_container_new.220=dw_container_new
+export dw_container_setup.221=dw_container_setup
+export dw_container_alloc.222=dw_container_alloc
+export dw_container_set_item.223=dw_container_set_item
+export dw_container_set_row_title.224=dw_container_set_row_title
+export dw_container_insert.225=dw_container_insert
+export dw_container_clear.226=dw_container_clear
+export dw_container_query_start.228=dw_container_query_start
+export dw_container_query_next.229=dw_container_query_next
+export dw_container_delete.230=dw_container_delete
+export dw_container_scroll.231=dw_container_scroll
+export dw_container_set_column_width.232=dw_container_set_column_width
+export dw_container_cursor.233=dw_container_cursor
+export dw_container_optimize.234=dw_container_optimize
+export dw_container_delete_row.235=dw_container_delete_row
+export dw_container_change_item.236=dw_container_change_item
+export dw_container_get_column_type.237=dw_container_get_column_type
+export dw_container_change_row_title.238=dw_container_change_row_title
+export dw_container_set_stripe.239=dw_container_set_stripe
+
+export dw_filesystem_setup.240=dw_filesystem_setup
+export dw_filesystem_set_item.241=dw_filesystem_set_item
+export dw_filesystem_set_file.242=dw_filesystem_set_file
+export dw_filesystem_change_item.243=dw_filesystem_change_item
+export dw_filesystem_change_file.244=dw_filesystem_change_file
+export dw_filesystem_get_column_type.245=dw_filesystem_get_column_type
+
+export dw_screen_width.250=dw_screen_width
+export dw_screen_height.251=dw_screen_height
+
+export dw_color_depth_get.260=dw_color_depth_get
+export dw_color_foreground_set.261=dw_color_foreground_set
+export dw_color_background_set.262=dw_color_background_set
+export dw_color_choose.263=dw_color_choose
+
+export dw_notebook_new.270=dw_notebook_new
+export dw_notebook_page_new.271=dw_notebook_page_new
+export dw_notebook_page_destroy.272=dw_notebook_page_destroy
+export dw_notebook_page_set_text.273=dw_notebook_page_set_text
+export dw_notebook_page_set_status_text.274=dw_notebook_page_set_status_text
+export dw_notebook_page_set.275=dw_notebook_page_set
+export dw_notebook_page_get.276=dw_notebook_page_get
+export dw_notebook_pack.277=dw_notebook_pack
+
+export dw_menu_new.280=dw_menu_new
+export dw_menubar_new.281=dw_menubar_new
+export dw_menu_append_item.282=dw_menu_append_item
+export dw_menu_item_set_check.283=dw_menu_item_set_check
+export dw_menu_popup.284=dw_menu_popup
+export dw_menu_destroy.285=dw_menu_destroy
+export dw_menu_item_set_state.286=dw_menu_item_set_state
+
+export dw_pointer_query_pos.290=dw_pointer_query_pos
+export dw_pointer_set_pos.291=dw_pointer_set_pos
+
+export dw_mutex_new.300=dw_mutex_new
+export dw_mutex_close.301=dw_mutex_close
+export dw_mutex_lock.302=dw_mutex_lock
+export dw_mutex_unlock.303=dw_mutex_unlock
+export dw_mutex_trylock.304=dw_mutex_trylock
+
+export dw_event_new.310=dw_event_new
+export dw_event_reset.311=dw_event_reset
+export dw_event_post.312=dw_event_post
+export dw_event_wait.313=dw_event_wait
+export dw_event_close.314=dw_event_close
+
+export dw_thread_new.320=dw_thread_new
+export dw_thread_end.321=dw_thread_end
+export dw_thread_id.322=dw_thread_id
+
+export dw_render_new.330=dw_render_new
+export dw_draw_point.331=dw_draw_point
+export dw_draw_line.332=dw_draw_line
+export dw_draw_rect.333=dw_draw_rect
+export dw_draw_text.334=dw_draw_text
+export dw_draw_polygon.335=dw_draw_polygon
+export dw_draw_arc.336=dw_draw_arc
+
+export dw_pixmap_bitblt.340=dw_pixmap_bitblt
+export dw_pixmap_new.341=dw_pixmap_new
+export dw_pixmap_grab.342=dw_pixmap_grab
+export dw_pixmap_destroy.343=dw_pixmap_destroy
+export dw_pixmap_new_from_file.344=dw_pixmap_new_from_file
+export dw_pixmap_new_from_data.345=dw_pixmap_new_from_data
+export dw_pixmap_set_transparent_color.346=dw_pixmap_set_transparent_color
+export dw_pixmap_set_font.347=dw_pixmap_set_font
+export dw_pixmap_stretch_bitblt.348=dw_pixmap_stretch_bitblt
+
+export dw_dialog_new.350=dw_dialog_new
+export dw_dialog_dismiss.351=dw_dialog_dismiss
+export dw_dialog_wait.352=dw_dialog_wait
+
+export dw_signal_connect.360=dw_signal_connect
+export dw_signal_disconnect_by_window.361=dw_signal_disconnect_by_window
+export dw_signal_disconnect_by_data.362=dw_signal_disconnect_by_data
+export dw_signal_disconnect_by_name.363=dw_signal_disconnect_by_name
+
+export dw_timer_connect.365=dw_timer_connect
+export dw_timer_disconnect.366=dw_timer_disconnect
+
+export dw_tree_new.370=dw_tree_new
+export dw_tree_insert.371=dw_tree_insert
+export dw_tree_clear.372=dw_tree_clear
+export dw_tree_item_delete.373=dw_tree_item_delete
+export dw_tree_item_change.374=dw_tree_item_change
+export dw_tree_item_expand.375=dw_tree_item_expand
+export dw_tree_item_collapse.376=dw_tree_item_collapse
+export dw_tree_item_select.377=dw_tree_item_select
+export dw_tree_item_set_data.378=dw_tree_item_set_data
+export dw_tree_insert_after.379=dw_tree_insert_after
+export dw_tree_item_get_data.380=dw_tree_item_get_data
+export dw_tree_get_title.381=dw_tree_get_title
+export dw_tree_get_parent.382=dw_tree_get_parent
+
+export dw_font_text_extents_get.385=dw_font_text_extents_get
+export dw_font_choose.386=dw_font_choose
+export dw_font_set_default.387=dw_font_set_default
+
+export dw_slider_new.390=dw_slider_new
+export dw_slider_get_pos.391=dw_slider_get_pos
+export dw_slider_set_pos.392=dw_slider_set_pos
+
+export dw_window_set_data.400=dw_window_set_data
+export dw_window_get_data.401=dw_window_get_data
+
+export dw_splitbar_new.410=dw_splitbar_new
+export dw_splitbar_set.411=dw_splitbar_set
+export dw_splitbar_get.412=dw_splitbar_get
+
+export dw_module_load.420=dw_module_load
+export dw_module_symbol.421=dw_module_symbol
+export dw_module_close.422=dw_module_close
+
+export dw_scrollbar_new.430=dw_scrollbar_new
+export dw_scrollbar_get_pos.431=dw_scrollbar_get_pos
+export dw_scrollbar_set_pos.432=dw_scrollbar_set_pos
+export dw_scrollbar_set_range.433=dw_scrollbar_set_range
+
+export dw_taskbar_insert.440=dw_taskbar_insert
+export dw_taskbar_delete.441=dw_taskbar_delete
+
+export dw_named_memory_new.450=dw_named_memory_new
+export dw_named_memory_get.451=dw_named_memory_get
+export dw_named_memory_free.452=dw_named_memory_free
+
+export dw_named_event_new.460=dw_named_event_new
+export dw_named_event_get.461=dw_named_event_get
+export dw_named_event_reset.462=dw_named_event_reset
+export dw_named_event_post.463=dw_named_event_post
+export dw_named_event_wait.464=dw_named_event_wait
+export dw_named_event_close.465=dw_named_event_close
+
+export dw_html_new.470=dw_html_new
+export dw_html_action.471=dw_html_action
+export dw_html_raw.472=dw_html_raw
+export dw_html_url.473=dw_html_url
+
+export dw_calendar_new.480=dw_calendar_new
+export dw_calendar_set_date.481=dw_calendar_set_date
+export dw_calendar_get_date.482=dw_calendar_get_date
+
+export dw_clipboard_get_text.490=dw_clipboard_get_text
+export dw_clipboard_set_text.491=dw_clipboard_set_text
+
+export dw_scrollbox_new.500=dw_scrollbox_new
+export dw_scrollbox_get_pos.501=dw_scrollbox_get_pos
+export dw_scrollbox_get_range.502=dw_scrollbox_get_range
+
+export dw_print_new.510=dw_print_new
+export dw_print_run.511=dw_print_run
+export dw_print_cancel.512=dw_print_cancel
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os2/dwcompat.lnk	Tue Nov 29 15:25:41 2011 +0000
@@ -0,0 +1,28 @@
+option DESCRIPTION 'Dynamic Windows Compatibility Module for OS/2'
+segment type DATA NONSHARED LOADONCALL
+
+export makedir.20=makedir
+export vargs.21=vargs
+export setfileinfo.22=setfileinfo
+export drivefree.23=drivefree
+export isdrive.24=isdrive
+export drivesize.25=drivesize
+export getfsname.26=getfsname
+
+export _opendir.30=_opendir
+export _openxdir.31=_openxdir
+export _readdir.32=_readdir
+export _seekdir.33=_seekdir
+export _telldir.34=_telldir
+export _closedir.35=_closedir
+
+export fsopen.40=fsopen
+export fsclose.41=fsclose
+export fsgets.42=fsgets
+export fsseek.43=fsseek
+
+export locale_init.50=locale_init
+export locale_string.51=locale_string
+
+export nice_strformat.60=nice_strformat
+export initdir.61=initdir
--- a/platform/dirent.h	Mon Nov 28 05:49:27 2011 +0000
+++ b/platform/dirent.h	Tue Nov 29 15:25:41 2011 +0000
@@ -26,6 +26,13 @@
 # define A_ARCHIVE 0x20
 #endif
 
+#ifdef __WATCOMC__
+#undef DIR
+#undef direct
+#undef dirent
+#define DIR DIRW
+#endif
+
 struct dirent {
     int            d_ino;                 /* Dummy */
     int            d_reclen;		  /* Dummy, same as d_namlen */
--- a/win/dw.c	Mon Nov 28 05:49:27 2011 +0000
+++ b/win/dw.c	Tue Nov 29 15:25:41 2011 +0000
@@ -3998,7 +3998,7 @@
 int API dw_messagebox(char *title, int flags, char *format, ...)
 {
    va_list args;
-   char outbuf[1024];
+   char outbuf[1025] = { 0 };
    int rc;
 
    va_start(args, format);