2 * Copyright 2016 Facebook, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <folly/portability/Stdlib.h>
23 #include <folly/portability/Fcntl.h>
24 #include <folly/portability/SysStat.h>
25 #include <folly/portability/Windows.h>
28 char* mktemp(char* tn) { return _mktemp(tn); }
30 // While yes, this is for a directory, due to this being windows,
31 // a file and directory can't have the same name, resulting in this
32 // still working just fine.
33 char* mkdtemp(char* tn) {
35 auto len = strlen(tn);
38 strcpy(tn + len - 6, "XXXXXX");
40 if (ptr == nullptr || *ptr == '\0') {
43 ret = mkdir(ptr, 0700);
44 if (ret != 0 && errno != EEXIST) {
51 int mkstemp(char* tn) {
53 auto len = strlen(tn);
56 strcpy(tn + len - 6, "XXXXXX");
58 if (ptr == nullptr || *ptr == '\0') {
61 ret = open(ptr, O_RDWR | O_EXCL | O_CREAT, S_IRUSR | S_IWUSR);
62 if (ret == -1 && errno != EEXIST) {
69 char* realpath(const char* path, char* resolved_path) {
70 // I sure hope the caller gave us _MAX_PATH space in the buffer....
71 return _fullpath(resolved_path, path, _MAX_PATH);