mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
129d87fe23
Summary: While EdenFS does not use a separate privhelper process on Windows, it still defines a stub PrivHelper class. However, this class was previously defined in a separate win/utils/Stub.h header file, which led to awkward `#ifdef`s to include the correct platform-specific header file. This diff moves the definition of the dummy PrivHelper class in Windows into the same `PrivHelper.h` header file used on POSIX platforms. This results in a few more `ifdef`s in the PrivHelper files, but fewer `ifdef`s in the calling code, and will make it easier to start unifying more of the `EdenMain` logic on Windows and non-Windows platforms. Reviewed By: xavierd Differential Revision: D21332568 fbshipit-source-id: c63bf2b4a8b7e767d7db7dcda28675f735c23bf8
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This software may be used and distributed according to the terms of the
|
|
* GNU General Public License version 2.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
namespace folly {
|
|
class File;
|
|
}
|
|
|
|
namespace facebook {
|
|
namespace eden {
|
|
|
|
class PrivHelperServer;
|
|
class UserInfo;
|
|
class PrivHelper;
|
|
|
|
/**
|
|
* Fork a separate privileged helper process, for performing mounts.
|
|
*
|
|
* This function should be very early on during program initialization, before
|
|
* any other threads are forked. After it is called UserInfo::dropPrivileges()
|
|
* should be called to return the desired user privileges.
|
|
*/
|
|
std::unique_ptr<PrivHelper> startPrivHelper(const UserInfo& userInfo);
|
|
|
|
#ifndef _WIN32
|
|
|
|
/**
|
|
* Start a privhelper process using a custom PrivHelperServer class.
|
|
*
|
|
* This is really only intended for use in unit tests.
|
|
*/
|
|
std::unique_ptr<PrivHelper> startPrivHelper(
|
|
PrivHelperServer* server,
|
|
const UserInfo& userInfo);
|
|
|
|
/**
|
|
* Create a PrivHelper client object using the specified connection rather than
|
|
* forking a new privhelper server process.
|
|
*
|
|
* This is primarily intended for use in unit tests.
|
|
*/
|
|
std::unique_ptr<PrivHelper> createTestPrivHelper(folly::File&& conn);
|
|
|
|
#endif // !_WIN32
|
|
|
|
} // namespace eden
|
|
} // namespace facebook
|