-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Summary: This changes `folly/portability/Windows.h` so that the posix functions in the Microsoft Windows Universal C Runtime (UCRT) are declared. Before this change `folly/portability/Windows.h` would include `windows.h` from the UCRT so that its posix functions would **not** be declared and they would instead be declared by headers in `folly/portability`. Now folly only declares posix functions missing from the Windows SDK (e.g., `sysconf`). Folly's posix functions that have the same behavior as the ones the UCRT are removed. Removed declarations: - creat - open - mktemp - chmod - umask - access - chdir - close - dup - dup2 - getcwd - isatty - lseek - read - rmdir - pipe - write This is the 3rd phase in a 3-phase change to remove folly's global definitions of the posix functions that conflict with windows CRT. The 1st phase created namespaces for folly's posix functions. The 2nd phase updates callsites to use the qualified name of folly's `open`, `close`, `read`, `write`, and `pipe` functions. The 3rd and final phase removes folly's globally defined posix functions and have windows CRT define them again. **What is the reason for this change?** Folly's global definitions of posix functions on Windows causes `#include` order issues if folly is not included first. For example, when `gtest/gtest.h` is included before folly, gtest includes `windows.h` and that declares `open`, `read`, and `chdir`, which creates ambiguous references to folly's `open`, `read`, and `chdir`. Another example is where posix functions go undeclared when `folly/portability/windows.h` is included without other portability headers (e.g., `folly/portability/unistd.h`). `folly/portability/windows.h` includes `windows.h` in a way that only underscore versions of the posix functions are available (e.g., `_open`, `_close`). These issues create friction for windows development. **Background: What is the purpose of `folly::portability::{fcntl,stdlib,sysstat,unistd}`?** It is a portability layer to make posix functions available and behave consistently across platforms. Some posix functions don't exist on windows (e.g., `sysconf`). Some other posix functions, folly changes to adapt behavior across platforms. For example, on windows folly defines `open`, `read`, `write`, and `close` functions to work with sockets. Folly makes these functions available in the global scope for convenience. Reviewed By: Orvid Differential Revision: D65255065 fbshipit-source-id: f47f0768e56f1e6f185f07458c5a443ed485a75f
- Loading branch information
1 parent
d2265fd
commit 974ac40
Showing
8 changed files
with
53 additions
and
126 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters