Index: /trunk/src/VBox/Additions/os2/VBoxSF/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/Makefile.kmk	(revision 75460)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/Makefile.kmk	(revision 75461)
@@ -210,4 +210,5 @@
 #
 PROGRAMS += VBoxSFUtil
+ifdef VBOX_USE_WATCOM_FOR_OS2
 VBoxSFUtil_TEMPLATE = DUMMY
 VBoxSFUtil_TOOL     = OPENWATCOM
@@ -216,4 +217,7 @@
 VBoxSFUtil_INCS     = $(PATH_TOOL_OPENWATCOM)/h/os2
 VBoxSFUtil_LDFLAGS  = -bcl=os2v2
+else
+VBoxSFUtil_TEMPLATE = VBoxGuestR3Exe
+endif
 VBoxSFUtil_SOURCES  = \
 	VBoxSFUtil.cpp \
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp	(revision 75460)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSF.cpp	(revision 75461)
@@ -880,5 +880,5 @@
             if (cRefs)
             {
-                /* If there are no zero drives, unlink it from the list and release
+                /* If there are now zero drives, unlink it from the list and release
                    the list reference.  This should almost always drop end up with us
                    destroying the folder.*/
@@ -897,4 +897,5 @@
                 vboxSfOs2DestroyFolder(pFolder);
             }
+            rc = NO_ERROR;
         }
         else
@@ -1136,5 +1137,5 @@
             else
             {
-                LogRel(("FS32_FSINFO: VbglR0SfFsInfo/SHFL_INFO_VOLUME failed: %Rrc\n", rc));
+                LogRel(("FS32_FSINFO: VbglR0SfFsInfo/SHFL_INFO_VOLUME failed: %Rrc\n", vrc));
                 rc = ERROR_GEN_FAILURE;
             }
@@ -1459,5 +1460,5 @@
         if (RT_SUCCESS(vrc))
             rc = NO_ERROR;
-        else if (rc == VERR_FILE_NOT_FOUND)
+        else if (vrc == VERR_FILE_NOT_FOUND)
             rc = vboxSfOs2ConvertStatusToOs2(vrc, ERROR_ACCESS_DENIED);
 
@@ -1758,5 +1759,5 @@
                 pbSrc++;
                 cbGetEasLeft--;
-                if (cbName + 1 > cbGetEasLeft)
+                if (cbName + 1U > cbGetEasLeft)
                 {
                     cbDstList = pbSrc - 1 - (uint8_t *)pEaOp->fpGEAList;
@@ -2006,5 +2007,5 @@
         }
         else
-            rc = vboxSfOs2ConvertStatusToOs2(rc, ERROR_FILE_NOT_FOUND);
+            rc = vboxSfOs2ConvertStatusToOs2(vrc, ERROR_FILE_NOT_FOUND);
         VbglR0PhysHeapFree(pParams);
     }
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 75460)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFile.cpp	(revision 75461)
@@ -212,5 +212,5 @@
             }
         }
-        else if (rc == VERR_ALREADY_EXISTS)
+        else if (vrc == VERR_ALREADY_EXISTS)
             rc = ERROR_ACCESS_DENIED;
         else
@@ -748,5 +748,5 @@
                     *pcb = cbActual;
                     pSfFsi->sfi_positionl = offRead + cbActual;
-                    if (pSfFsi->sfi_sizel < offRead + cbActual)
+                    if ((uint64_t)pSfFsi->sfi_sizel < offRead + cbActual)
                         pSfFsi->sfi_sizel = offRead + cbActual;
                     pSfFsi->sfi_tstamp   |= ST_SREAD | ST_PREAD;
@@ -774,5 +774,5 @@
         *pcb = cbActual;
         pSfFsi->sfi_positionl = offRead + cbActual;
-        if (pSfFsi->sfi_sizel < offRead + cbActual)
+        if ((uint64_t)pSfFsi->sfi_sizel < offRead + cbActual)
             pSfFsi->sfi_sizel = offRead + cbActual;
         pSfFsi->sfi_tstamp   |= ST_SREAD | ST_PREAD;
@@ -822,5 +822,5 @@
                     *pcb = cbActual;
                     pSfFsi->sfi_positionl = offWrite + cbActual;
-                    if (pSfFsi->sfi_sizel < offWrite + cbActual)
+                    if ((uint64_t)pSfFsi->sfi_sizel < offWrite + cbActual)
                         pSfFsi->sfi_sizel = offWrite + cbActual;
                     pSfFsi->sfi_tstamp   |= ST_SWRITE | ST_PWRITE;
@@ -848,5 +848,5 @@
         *pcb = cbActual;
         pSfFsi->sfi_positionl = offWrite + cbActual;
-        if (pSfFsi->sfi_sizel < offWrite + cbActual)
+        if ((uint64_t)pSfFsi->sfi_sizel < offWrite + cbActual)
             pSfFsi->sfi_sizel = offWrite + cbActual;
         pSfFsi->sfi_tstamp   |= ST_SWRITE | ST_PWRITE;
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 75460)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFFind.cpp	(revision 75461)
@@ -74,7 +74,6 @@
         if (uCp == '.')
         {
-            for (uint32_t cuc = 0; ; cuc++)
-            {
-                RTUNICP uCp;
+            for (cuc = 0; ; cuc++)
+            {
                 RTStrGetCpEx(&pszCursor, &uCp);
                 if (!uCp)
@@ -237,5 +236,5 @@
      */
     EAOP    EaOp;
-    PEAOP   pEaOpUser;
+    PEAOP   pEaOpUser = NULL; /* Shut up gcc */
     switch (uLevel)
     {
Index: /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFUtil.cpp
===================================================================
--- /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFUtil.cpp	(revision 75460)
+++ /trunk/src/VBox/Additions/os2/VBoxSF/VBoxSFUtil.cpp	(revision 75461)
@@ -38,4 +38,5 @@
 #include <stdlib.h>
 #define INCL_BASE
+#define OS2EMX_PLAIN_CHAR
 #include <os2.h>
 
@@ -79,5 +80,5 @@
     else
     {
-        fprintf(stderr, "syntax error: Shared folder name '%s' is too %s!\n", cchFolder >= 1 ? "long" : "short");
+        fprintf(stderr, "syntax error: Shared folder name '%s' is too %s!\n", pszFolder, cchFolder >= 1 ? "long" : "short");
         return 2;
     }
@@ -92,5 +93,5 @@
         return 0;
     }
-    fprintf(stderr, "error: DosFSAttach failed: %u\n", rc);
+    fprintf(stderr, "error: DosFSAttach failed: %lu\n", rc);
     return 1;
 }
@@ -123,10 +124,12 @@
         rc = DosQueryPathInfo(argv[i], FIL_STANDARD, &u.Lvl1r1, sizeof(u.Lvl1r1));
         printf("%s: FIL_STANDARD/%#x -> %u\n", argv[i], sizeof(u.Lvl1r1), rc);
+#define D(x) (*(uint16_t *)&(x))
+#define T(x) (*(uint16_t *)&(x))
         if (rc == NO_ERROR)
         {
             printf("  Lvl1r1: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl1r1.fdateCreation, u.Lvl1r1.ftimeCreation,  u.Lvl1r1.fdateLastWrite, u.Lvl1r1.ftimeLastWrite,
-                   u.Lvl1r1.fdateLastAccess, u.Lvl1r1.ftimeLastAccess);
-            printf("  Lvl1r1:  attrib=%#x size=%u alloc=%u\n", u.Lvl1r1.attrFile, u.Lvl1r1.cbFile, u.Lvl1r1.cbFileAlloc);
+                   D(u.Lvl1r1.fdateCreation), T(u.Lvl1r1.ftimeCreation),  D(u.Lvl1r1.fdateLastWrite), T(u.Lvl1r1.ftimeLastWrite),
+                   D(u.Lvl1r1.fdateLastAccess), T(u.Lvl1r1.ftimeLastAccess));
+            printf("  Lvl1r1:  attrib=%#x size=%lu alloc=%lu\n", u.Lvl1r1.attrFile, u.Lvl1r1.cbFile, u.Lvl1r1.cbFileAlloc);
 
         }
@@ -138,7 +141,7 @@
         {
             printf("  Lvl1r3: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl1r3.fdateCreation, u.Lvl1r3.ftimeCreation,  u.Lvl1r3.fdateLastWrite, u.Lvl1r3.ftimeLastWrite,
-                   u.Lvl1r3.fdateLastAccess, u.Lvl1r3.ftimeLastAccess);
-            printf("  Lvl1r3:  attrib=%#x size=%u alloc=%u\n", u.Lvl1r3.attrFile, u.Lvl1r3.cbFile, u.Lvl1r3.cbFileAlloc);
+                   D(u.Lvl1r3.fdateCreation), T(u.Lvl1r3.ftimeCreation), D(u.Lvl1r3.fdateLastWrite), T(u.Lvl1r3.ftimeLastWrite),
+                   D(u.Lvl1r3.fdateLastAccess), T(u.Lvl1r3.ftimeLastAccess));
+            printf("  Lvl1r3:  attrib=%#lx size=%lu alloc=%lu\n", u.Lvl1r3.attrFile, u.Lvl1r3.cbFile, u.Lvl1r3.cbFileAlloc);
 
         }
@@ -150,7 +153,7 @@
         {
             printf("   Lvl11: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl11.fdateCreation, u.Lvl11.ftimeCreation,  u.Lvl11.fdateLastWrite, u.Lvl11.ftimeLastWrite,
-                   u.Lvl11.fdateLastAccess, u.Lvl11.ftimeLastAccess);
-            printf("   Lvl11:  attrib=%#x size=%llu alloc=%llu\n", u.Lvl11.attrFile, u.Lvl11.cbFile, u.Lvl11.cbFileAlloc);
+                   D(u.Lvl11.fdateCreation), T(u.Lvl11.ftimeCreation), D(u.Lvl11.fdateLastWrite), T(u.Lvl11.ftimeLastWrite),
+                   D(u.Lvl11.fdateLastAccess), T(u.Lvl11.ftimeLastAccess));
+            printf("   Lvl11:  attrib=%#lx size=%llu alloc=%llu\n", u.Lvl11.attrFile, u.Lvl11.cbFile, u.Lvl11.cbFileAlloc);
         }
 
@@ -161,7 +164,7 @@
         {
             printf("    Lvl2: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl2r2.fdateCreation, u.Lvl2r2.ftimeCreation,  u.Lvl2r2.fdateLastWrite, u.Lvl2r2.ftimeLastWrite,
-                   u.Lvl2r2.fdateLastAccess, u.Lvl2r2.ftimeLastAccess);
-            printf("    Lvl2:  attrib=%#x size=%u alloc=%u cbList=%#x\n",
+                   D(u.Lvl2r2.fdateCreation), T(u.Lvl2r2.ftimeCreation),  D(u.Lvl2r2.fdateLastWrite), T(u.Lvl2r2.ftimeLastWrite),
+                   D(u.Lvl2r2.fdateLastAccess), T(u.Lvl2r2.ftimeLastAccess));
+            printf("    Lvl2:  attrib=%#x size=%lu alloc=%lu cbList=%#lx\n",
                    u.Lvl2r2.attrFile, u.Lvl2r2.cbFile, u.Lvl2r2.cbFileAlloc, u.Lvl2r4.cbList);
         }
@@ -173,7 +176,7 @@
         {
             printf("    Lvl2: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl2r4.fdateCreation, u.Lvl2r4.ftimeCreation,  u.Lvl2r4.fdateLastWrite, u.Lvl2r4.ftimeLastWrite,
-                   u.Lvl2r4.fdateLastAccess, u.Lvl2r4.ftimeLastAccess);
-            printf("    Lvl2:  attrib=%#x size=%u alloc=%u cbList=%#x\n",
+                   D(u.Lvl2r4.fdateCreation), T(u.Lvl2r4.ftimeCreation),  D(u.Lvl2r4.fdateLastWrite), T(u.Lvl2r4.ftimeLastWrite),
+                   D(u.Lvl2r4.fdateLastAccess), T(u.Lvl2r4.ftimeLastAccess));
+            printf("    Lvl2:  attrib=%#lx size=%lu alloc=%lu cbList=%#lx\n",
                    u.Lvl2r4.attrFile, u.Lvl2r4.cbFile, u.Lvl2r4.cbFileAlloc, u.Lvl2r4.cbList);
         }
@@ -185,7 +188,7 @@
         {
             printf("   Lvl12: creation=%u:%u write=%u:%u access=%u:%u\n",
-                   u.Lvl12.fdateCreation, u.Lvl12.ftimeCreation,  u.Lvl12.fdateLastWrite, u.Lvl12.ftimeLastWrite,
-                   u.Lvl12.fdateLastAccess, u.Lvl12.ftimeLastAccess);
-            printf("   Lvl12:  attrib=%#x size=%llu alloc=%llu cbList=%#x\n",
+                   D(u.Lvl12.fdateCreation), T(u.Lvl12.ftimeCreation),  D(u.Lvl12.fdateLastWrite), T(u.Lvl12.ftimeLastWrite),
+                   D(u.Lvl12.fdateLastAccess), T(u.Lvl12.ftimeLastAccess));
+            printf("   Lvl12:  attrib=%#lx size=%llu alloc=%llu cbList=%#lx\n",
                    u.Lvl12.attrFile, u.Lvl12.cbFile, u.Lvl12.cbFileAlloc, u.Lvl12.cbList);
         }
@@ -237,5 +240,5 @@
             BYTE  cchName;
             char  szName[10];
-        } Gea2List, const Gea2ListOrg = { sizeof(Gea2List), 0, sizeof(".LONGNAME") - 1, ".LONGNAME" };
+        } Gea2List, Gea2ListOrg = { sizeof(Gea2List), 0, sizeof(".LONGNAME") - 1, ".LONGNAME" };
         EAOP2 EaOp;
         EaOp.fpGEA2List = (PGEA2LIST)memcpy(&Gea2List, &Gea2ListOrg, sizeof(Gea2List));
@@ -247,5 +250,5 @@
         printf("%s: FIL_QUERYEASFROMLIST -> %u\n", argv[i], rc);
         if (rc == NO_ERROR)
-            printf("  Lvl3: FeaList.cbList=%#x oError=%#x\n", u.FeaList.cbList, EaOp.oError);
+            printf("  Lvl3: FeaList.cbList=%#lx oError=%#lx\n", u.FeaList.cbList, EaOp.oError);
 
         EaOp.fpGEA2List = (PGEA2LIST)memcpy(&Gea2List, &Gea2ListOrg, sizeof(Gea2List));
@@ -266,5 +269,5 @@
         printf("%s: FIL_QUERYALLEAS/4 -> %u\n", argv[i], rc);
         if (rc == NO_ERROR)
-            printf("  Lvl4: FeaList.cbList=%#x oError=%#x\n", u.FeaList.cbList, EaOp.oError);
+            printf("  Lvl4: FeaList.cbList=%#lx oError=%#lx\n", u.FeaList.cbList, EaOp.oError);
 
         EaOp.fpGEA2List = (PGEA2LIST)memcpy(&Gea2List, &Gea2ListOrg, sizeof(Gea2List));
@@ -285,5 +288,5 @@
         printf("%s: FIL_QUERYALLEAS/8 -> %u\n", argv[i], rc);
         if (rc == NO_ERROR)
-            printf("  Lvl8: FeaList.cbList=%#x oError=%#x\n", u.FeaList.cbList, EaOp.oError);
+            printf("  Lvl8: FeaList.cbList=%#lx oError=%#lx\n", u.FeaList.cbList, EaOp.oError);
 
         EaOp.fpGEA2List = (PGEA2LIST)memcpy(&Gea2List, &Gea2ListOrg, sizeof(Gea2List));
@@ -420,5 +423,5 @@
             memset(pbBuf, 0xf6, cbBuf);
             APIRET rc = DosFindFirst(pszArg, &hDir, fAttribs, pbBuf, cbBuf, &cMatches, uLevel);
-            printf("DosFindFirst -> %u hDir=%p cMatches=%#x\n", rc, hDir, cMatches);
+            printf("DosFindFirst -> %lu hDir=%#lx cMatches=%#lx\n", rc, hDir, cMatches);
             if (rc == NO_ERROR)
             {
@@ -434,5 +437,5 @@
                             {
                                 PFILEFINDBUF3 pBuf = (PFILEFINDBUF3)pbTmp;
-                                printf("#%u: nx=%#x sz=%#x at=%#x nm=%#x:%s\n",
+                                printf("#%u: nx=%#lx sz=%#lx at=%#lx nm=%#x:%s\n",
                                        iMatch, pBuf->oNextEntryOffset, pBuf->cbFile, pBuf->attrFile, pBuf->cchName, pBuf->achName);
                                 if (strlen(pBuf->achName) != pBuf->cchName)
@@ -443,5 +446,5 @@
                             {
                                 PFILEFINDBUF3L pBuf = (PFILEFINDBUF3L)pbTmp;
-                                printf("#%u: nx=%#x sz=%#llx at=%#x nm=%#x:%s\n",
+                                printf("#%u: nx=%#lx sz=%#llx at=%#lx nm=%#x:%s\n",
                                        iMatch, pBuf->oNextEntryOffset, pBuf->cbFile, pBuf->attrFile, pBuf->cchName, pBuf->achName);
                                 if (strlen(pBuf->achName) != pBuf->cchName)
@@ -452,5 +455,5 @@
                             {
                                 PFILEFINDBUF4 pBuf = (PFILEFINDBUF4)pbTmp;
-                                printf("#%u: nx=%#x sz=%#x at=%#x nm=%#x:%s\n",
+                                printf("#%u: nx=%#lx sz=%#lx at=%#lx nm=%#x:%s\n",
                                        iMatch, pBuf->oNextEntryOffset, pBuf->cbFile, pBuf->attrFile, pBuf->cchName, pBuf->achName);
                                 if (strlen(pBuf->achName) != pBuf->cchName)
@@ -461,5 +464,5 @@
                             {
                                 PFILEFINDBUF4L pBuf = (PFILEFINDBUF4L)pbTmp;
-                                printf("#%u: nx=%#x sz=%#llx at=%#x nm=%#x:%s\n",
+                                printf("#%u: nx=%#lx sz=%#llx at=%#lx nm=%#x:%s\n",
                                        iMatch, pBuf->oNextEntryOffset, pBuf->cbFile, pBuf->attrFile, pBuf->cchName, pBuf->achName);
                                 if (strlen(pBuf->achName) != pBuf->cchName)
@@ -477,9 +480,9 @@
                     cMatches = cMaxMatches;
                     rc = DosFindNext(hDir, pbBuf, cbBuf, &cMatches);
-                    printf("DosFindNext -> %u hDir=%p cMatches=%#x\n", rc, hDir, cMatches);
+                    printf("DosFindNext -> %lu hDir=%#lx cMatches=%#lx\n", rc, hDir, cMatches);
                 } while (rc == NO_ERROR);
 
                 rc = DosFindClose(hDir);
-                printf("DosFindClose -> %u\n", rc);
+                printf("DosFindClose -> %lu\n", rc);
             }
         }
@@ -494,5 +497,5 @@
     {
         APIRET rc = DosCreateDir(argv[i], NULL);
-        printf("DosCreateDir -> %u for '%s'\n", rc, argv[i]);
+        printf("DosCreateDir -> %lu for '%s'\n", rc, argv[i]);
     }
     return 0;
@@ -517,5 +520,5 @@
             return vboxSfOs2UtilMkDir(argc - i, argv + i);
 
-        fprintf(stderr,  "Unknown command/option: %u\n", pszArg);
+        fprintf(stderr,  "Unknown command/option: %s\n", pszArg);
         return 2;
     }
