VirtualBox

Changeset 71314 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Mar 13, 2018 3:51:14 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121258
Message:

GuestControl: Added and implemented IGuestSession::userHome and IGuestSession::userDocuments attributes. Untested.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp

    r69500 r71314  
    55
    66/*
    7  * Copyright (C) 2013-2017 Oracle Corporation
     7 * Copyright (C) 2013-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    625625#ifdef DEBUG
    626626    VGSvcVerbose(4, "Renaming '%s' to '%s' returned rc=%Rrc\n", szSource, szDest, rc);
     627#endif
     628    return rc;
     629}
     630
     631
     632static int vgsvcGstCtrlSessionHandlePathUserDocuments(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     633{
     634    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     635    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
     636
     637    char szPath[RTPATH_MAX];
     638    int rc = RTPathUserDocuments(szPath, sizeof(szPath));
     639
     640    /* Report back in any case. */
     641    int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
     642                                        szPath, strlen(szPath) + 1 /* Include terminating zero */);
     643    if (RT_FAILURE(rc2))
     644        VGSvcError("Failed to report user documents, rc=%Rrc\n", rc2);
     645    if (RT_SUCCESS(rc))
     646        rc = rc2;
     647
     648#ifdef DEBUG
     649    VGSvcVerbose(4, "User documents is '%s', rc=%Rrc\n", szPath, rc);
     650#endif
     651    return rc;
     652}
     653
     654
     655static int vgsvcGstCtrlSessionHandlePathUserHome(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     656{
     657    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     658    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
     659
     660    char szPath[RTPATH_MAX];
     661    int rc = RTPathUserHome(szPath, sizeof(szPath));
     662
     663    /* Report back in any case. */
     664    int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
     665                                        szPath, strlen(szPath) + 1 /* Include terminating zero */);
     666    if (RT_FAILURE(rc2))
     667        VGSvcError("Failed to report user home, rc=%Rrc\n", rc2);
     668    if (RT_SUCCESS(rc))
     669        rc = rc2;
     670
     671#ifdef DEBUG
     672    VGSvcVerbose(4, "User home is '%s', rc=%Rrc\n", szPath, rc);
    627673#endif
    628674    return rc;
     
    10261072            break;
    10271073
     1074        case HOST_PATH_USER_DOCUMENTS:
     1075            if (fImpersonated)
     1076                rc = vgsvcGstCtrlSessionHandlePathUserDocuments(pSession, pHostCtx);
     1077            else
     1078                rc = VERR_NOT_SUPPORTED;
     1079            break;
     1080
     1081        case HOST_PATH_USER_HOME:
     1082            if (fImpersonated)
     1083                rc = vgsvcGstCtrlSessionHandlePathUserHome(pSession, pHostCtx);
     1084            else
     1085                rc = VERR_NOT_SUPPORTED;
     1086            break;
     1087
    10281088        default:
    10291089            rc = VbglR3GuestCtrlMsgSkip(pHostCtx->uClientID);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette