Index: /trunk/include/VBox/GuestHost/SharedClipboard-transfers.h
===================================================================
--- /trunk/include/VBox/GuestHost/SharedClipboard-transfers.h	(revision 82464)
+++ /trunk/include/VBox/GuestHost/SharedClipboard-transfers.h	(revision 82465)
@@ -111,28 +111,6 @@
 #define SHCL_OBJ_CF_DIRECTORY             (0x00000004)
 
-/** Open/create action to do if object exists
- *  and if the object does not exists.
- *  REPLACE file means atomically DELETE and CREATE.
- *  OVERWRITE file means truncating the file to 0 and
- *  setting new size.
- *  When opening an existing directory REPLACE and OVERWRITE
- *  actions are considered invalid, and cause returning
- *  FILE_EXISTS with NIL handle.
- */
-#define SHCL_OBJ_CF_ACT_MASK_IF_EXISTS      (0x000000F0)
-#define SHCL_OBJ_CF_ACT_MASK_IF_NEW         (0x00000F00)
-
-/** What to do if object exists. */
-#define SHCL_OBJ_CF_ACT_OPEN_IF_EXISTS      (0x00000000)
-#define SHCL_OBJ_CF_ACT_FAIL_IF_EXISTS      (0x00000010)
-#define SHCL_OBJ_CF_ACT_REPLACE_IF_EXISTS   (0x00000020)
-#define SHCL_OBJ_CF_ACT_OVERWRITE_IF_EXISTS (0x00000030)
-
-/** What to do if object does not exist. */
-#define SHCL_OBJ_CF_ACT_CREATE_IF_NEW       (0x00000000)
-#define SHCL_OBJ_CF_ACT_FAIL_IF_NEW         (0x00000100)
-
 /** Read/write requested access for the object. */
-#define SHCL_OBJ_CF_ACCESS_MASK_RW          (0x00003000)
+#define SHCL_OBJ_CF_ACCESS_MASK_RW          (0x00001000)
 
 /** No access requested. */
@@ -140,8 +118,4 @@
 /** Read access requested. */
 #define SHCL_OBJ_CF_ACCESS_READ             (0x00001000)
-/** Write access requested. */
-#define SHCL_OBJ_CF_ACCESS_WRITE            (0x00002000)
-/** Read/Write access requested. */
-#define SHCL_OBJ_CF_ACCESS_READWRITE        (SHCL_OBJ_CF_ACCESS_READ | SHCL_OBJ_CF_ACCESS_WRITE)
 
 /** Requested share access for the object. */
@@ -164,15 +138,8 @@
 /** Read access requested. */
 #define SHCL_OBJ_CF_ACCESS_ATTR_READ        (0x00010000)
-/** Write access requested. */
-#define SHCL_OBJ_CF_ACCESS_ATTR_WRITE       (0x00020000)
-/** Read/Write access requested. */
-#define SHCL_OBJ_CF_ACCESS_ATTR_READWRITE   (SHCL_OBJ_CF_ACCESS_ATTR_READ | SHCL_OBJ_CF_ACCESS_ATTR_WRITE)
-
-/** The file is opened in append mode. Ignored if SHCL_OBJ_CF_ACCESS_WRITE is not set. */
-#define SHCL_OBJ_CF_ACCESS_APPEND           (0x00040000)
 
 /** @} */
 
-/** Result of an open/create request.
+/** Result of an open request.
  *  Along with handle value the result code
  *  identifies what has happened while
@@ -186,10 +153,4 @@
     /** Path to file exists, but the last component does not. */
     SHCL_CREATERESULT_FILE_NOT_FOUND,
-    /** File already exists and either has been opened or not. */
-    SHCL_CREATERESULT_FILE_EXISTS,
-    /** New file was created. */
-    SHCL_CREATERESULT_FILE_CREATED,
-    /** Existing file was replaced or overwritten. */
-    SHCL_CREATERESULT_FILE_REPLACED,
     /** Blow the type up to 32-bit. */
     SHCL_CREATERESULT_32BIT_HACK = 0x7fffffff
Index: /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp
===================================================================
--- /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp	(revision 82464)
+++ /trunk/src/VBox/GuestHost/SharedClipboard/clipboard-transfers.cpp	(revision 82465)
@@ -815,87 +815,57 @@
     if (pTransfer->State.enmSource == SHCLSOURCE_LOCAL)
     {
-        /*
-         * Make sure the transfer direction matches the open/create parameters.
-         */
-        if (pTransfer->State.enmDir == SHCLTRANSFERDIR_FROM_REMOTE)
-        {
-            if (pOpenCreateParms->fCreate & SHCL_OBJ_CF_ACCESS_READ) /* Read access wanted? */
+        PSHCLOBJHANDLEINFO pInfo
+            = (PSHCLOBJHANDLEINFO)RTMemAllocZ(sizeof(SHCLOBJHANDLEINFO));
+        if (pInfo)
+        {
+            rc = ShClTransferObjHandleInfoInit(pInfo);
+            if (RT_SUCCESS(rc))
             {
-                AssertMsgFailed(("Is not a write transfer, but object open flags are set to read access (0x%x)\n",
-                                 pOpenCreateParms->fCreate)); /* Should never happen. */
-                rc = VERR_INVALID_PARAMETER;
-            }
-        }
-        else if (pTransfer->State.enmDir == SHCLTRANSFERDIR_TO_REMOTE)
-        {
-            if (pOpenCreateParms->fCreate & SHCL_OBJ_CF_ACCESS_WRITE) /* Write access wanted? */
-            {
-                AssertMsgFailed(("Is not a read transfer, but object open flags are set to write access (0x%x)\n",
-                                 pOpenCreateParms->fCreate)); /* Should never happen. */
-                rc = VERR_INVALID_PARAMETER;
-            }
-        }
-        else
-        {
-            AssertFailed();
-            rc = VERR_NOT_SUPPORTED;
-        }
-
-        if (RT_SUCCESS(rc))
-        {
-            PSHCLOBJHANDLEINFO pInfo
-                = (PSHCLOBJHANDLEINFO)RTMemAllocZ(sizeof(SHCLOBJHANDLEINFO));
-            if (pInfo)
-            {
-                rc = ShClTransferObjHandleInfoInit(pInfo);
+
+                /* Only if this is a read transfer (locally) we're able to actually write to files
+                 * (we're reading from the source). */
+                const bool fWritable = pTransfer->State.enmDir == SHCLTRANSFERDIR_FROM_REMOTE;
+
+                uint64_t fOpen;
+                rc = shClConvertFileCreateFlags(fWritable,
+                                                pOpenCreateParms->fCreate, pOpenCreateParms->ObjInfo.Attr.fMode,
+                                                SHCLOBJHANDLE_INVALID, &fOpen);
                 if (RT_SUCCESS(rc))
                 {
-
-                    /* Only if this is a read transfer (locally) we're able to actually write to files
-                     * (we're reading from the source). */
-                    const bool fWritable = pTransfer->State.enmDir == SHCLTRANSFERDIR_FROM_REMOTE;
-
-                    uint64_t fOpen;
-                    rc = shClConvertFileCreateFlags(fWritable,
-                                                    pOpenCreateParms->fCreate, pOpenCreateParms->ObjInfo.Attr.fMode,
-                                                    SHCLOBJHANDLE_INVALID, &fOpen);
+                    rc = shClTransferResolvePathAbs(pTransfer, pOpenCreateParms->pszPath, 0 /* fFlags */,
+                                                    &pInfo->pszPathLocalAbs);
                     if (RT_SUCCESS(rc))
                     {
-                        rc = shClTransferResolvePathAbs(pTransfer, pOpenCreateParms->pszPath, 0 /* fFlags */,
-                                                        &pInfo->pszPathLocalAbs);
+                        rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen);
                         if (RT_SUCCESS(rc))
                         {
-                            rc = RTFileOpen(&pInfo->u.Local.hFile, pInfo->pszPathLocalAbs, fOpen);
-                            if (RT_SUCCESS(rc))
-                            {
-                                LogRel2(("Shared Clipboard: Opened file '%s'\n", pInfo->pszPathLocalAbs));
-                            }
-                            else
-                                LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc));
+                            LogRel2(("Shared Clipboard: Opened file '%s'\n", pInfo->pszPathLocalAbs));
                         }
+                        else
+                            LogRel(("Shared Clipboard: Error opening file '%s', rc=%Rrc\n", pInfo->pszPathLocalAbs, rc));
                     }
                 }
-
-                if (RT_SUCCESS(rc))
-                {
-                    pInfo->hObj    = pTransfer->uObjHandleNext++;
-                    pInfo->enmType = SHCLOBJTYPE_FILE;
-
-                    RTListAppend(&pTransfer->lstObj, &pInfo->Node);
-                    pTransfer->cObjHandles++;
-
-                    LogFlowFunc(("cObjHandles=%RU32\n", pTransfer->cObjHandles));
-
-                    *phObj = pInfo->hObj;
-                }
-                else
-                {
-                    ShClTransferObjHandleInfoDestroy(pInfo);
-                    RTMemFree(pInfo);
-                }
+            }
+
+            if (RT_SUCCESS(rc))
+            {
+                pInfo->hObj    = pTransfer->uObjHandleNext++;
+                pInfo->enmType = SHCLOBJTYPE_FILE;
+
+                RTListAppend(&pTransfer->lstObj, &pInfo->Node);
+                pTransfer->cObjHandles++;
+
+                LogFlowFunc(("cObjHandles=%RU32\n", pTransfer->cObjHandles));
+
+                *phObj = pInfo->hObj;
             }
             else
-                rc = VERR_NO_MEMORY;
-        }
+            {
+                ShClTransferObjHandleInfoDestroy(pInfo);
+                RTMemFree(pInfo);
+            }
+        }
+        else
+            rc = VERR_NO_MEMORY;
     }
     else if (pTransfer->State.enmSource == SHCLSOURCE_REMOTE)
@@ -3098,4 +3068,5 @@
     {
         default:
+            RT_FALL_THROUGH();
         case SHCL_OBJ_CF_ACCESS_NONE:
         {
@@ -3116,23 +3087,4 @@
             break;
         }
-
-        case SHCL_OBJ_CF_ACCESS_WRITE:
-        {
-            fOpen |= RTFILE_O_WRITE;
-            LogFlowFunc(("SHCL_OBJ_CF_ACCESS_WRITE\n"));
-            break;
-        }
-
-        case SHCL_OBJ_CF_ACCESS_READWRITE:
-        {
-            fOpen |= RTFILE_O_READWRITE;
-            LogFlowFunc(("SHCL_OBJ_CF_ACCESS_READWRITE\n"));
-            break;
-        }
-    }
-
-    if (fShClFlags & SHCL_OBJ_CF_ACCESS_APPEND)
-    {
-        fOpen |= RTFILE_O_APPEND;
     }
 
@@ -3140,4 +3092,5 @@
     {
         default:
+            RT_FALL_THROUGH();
         case SHCL_OBJ_CF_ACCESS_ATTR_NONE:
         {
@@ -3151,18 +3104,4 @@
             fOpen |= RTFILE_O_ACCESS_ATTR_READ;
             LogFlowFunc(("SHCL_OBJ_CF_ACCESS_ATTR_READ\n"));
-            break;
-        }
-
-        case SHCL_OBJ_CF_ACCESS_ATTR_WRITE:
-        {
-            fOpen |= RTFILE_O_ACCESS_ATTR_WRITE;
-            LogFlowFunc(("SHCL_OBJ_CF_ACCESS_ATTR_WRITE\n"));
-            break;
-        }
-
-        case SHCL_OBJ_CF_ACCESS_ATTR_READWRITE:
-        {
-            fOpen |= RTFILE_O_ACCESS_ATTR_READWRITE;
-            LogFlowFunc(("SHCL_OBJ_CF_ACCESS_ATTR_READWRITE\n"));
             break;
         }
@@ -3192,78 +3131,4 @@
             LogFlowFunc(("SHCL_OBJ_CF_ACCESS_DENYALL\n"));
             break;
-    }
-
-    /* Open/Create action mask */
-    switch ((fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_EXISTS))
-    {
-        case SHCL_OBJ_CF_ACT_OPEN_IF_EXISTS:
-            if (SHCL_OBJ_CF_ACT_CREATE_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_OPEN_CREATE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_OPEN_IF_EXISTS and SHCL_OBJ_CF_ACT_CREATE_IF_NEW\n"));
-            }
-            else if (SHCL_OBJ_CF_ACT_FAIL_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_OPEN;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_OPEN_IF_EXISTS and SHCL_OBJ_CF_ACT_FAIL_IF_NEW\n"));
-            }
-            else
-            {
-                LogFlowFunc(("invalid open/create action combination\n"));
-                rc = VERR_INVALID_PARAMETER;
-            }
-            break;
-        case SHCL_OBJ_CF_ACT_FAIL_IF_EXISTS:
-            if (SHCL_OBJ_CF_ACT_CREATE_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_CREATE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_FAIL_IF_EXISTS and SHCL_OBJ_CF_ACT_CREATE_IF_NEW\n"));
-            }
-            else
-            {
-                LogFlowFunc(("invalid open/create action combination\n"));
-                rc = VERR_INVALID_PARAMETER;
-            }
-            break;
-        case SHCL_OBJ_CF_ACT_REPLACE_IF_EXISTS:
-            if (SHCL_OBJ_CF_ACT_CREATE_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_CREATE_REPLACE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_REPLACE_IF_EXISTS and SHCL_OBJ_CF_ACT_CREATE_IF_NEW\n"));
-            }
-            else if (SHCL_OBJ_CF_ACT_FAIL_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_OPEN | RTFILE_O_TRUNCATE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_REPLACE_IF_EXISTS and SHCL_OBJ_CF_ACT_FAIL_IF_NEW\n"));
-            }
-            else
-            {
-                LogFlowFunc(("invalid open/create action combination\n"));
-                rc = VERR_INVALID_PARAMETER;
-            }
-            break;
-        case SHCL_OBJ_CF_ACT_OVERWRITE_IF_EXISTS:
-            if (SHCL_OBJ_CF_ACT_CREATE_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_CREATE_REPLACE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_OVERWRITE_IF_EXISTS and SHCL_OBJ_CF_ACT_CREATE_IF_NEW\n"));
-            }
-            else if (SHCL_OBJ_CF_ACT_FAIL_IF_NEW == (fShClFlags & SHCL_OBJ_CF_ACT_MASK_IF_NEW))
-            {
-                fOpen |= RTFILE_O_OPEN | RTFILE_O_TRUNCATE;
-                LogFlowFunc(("SHCL_OBJ_CF_ACT_OVERWRITE_IF_EXISTS and SHCL_OBJ_CF_ACT_FAIL_IF_NEW\n"));
-            }
-            else
-            {
-                LogFlowFunc(("invalid open/create action combination\n"));
-                rc = VERR_INVALID_PARAMETER;
-            }
-            break;
-        default:
-        {
-            rc = VERR_INVALID_PARAMETER;
-            LogFlowFunc(("SHCL_OBJ_CF_ACT_MASK_IF_EXISTS - invalid parameter\n"));
-            break;
-        }
     }
 
