projects
/
folly.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow SSLSessionCallbacks to be used on SSL* that isn't attached to AsyncSSLSocket
[folly.git]
/
folly
/
File.cpp
diff --git
a/folly/File.cpp
b/folly/File.cpp
index 98f935cc87362a51eef36d59dc379a096a48439c..3c53573355fc6a9d2dec13e50d36a323d83680e2 100644
(file)
--- a/
folly/File.cpp
+++ b/
folly/File.cpp
@@
-1,5
+1,5
@@
/*
/*
- * Copyright 201
3
Facebook, Inc.
+ * Copyright 201
5
Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-14,15
+14,16
@@
* limitations under the License.
*/
* limitations under the License.
*/
-#include
"folly/File.h"
+#include
<folly/File.h>
#include <fcntl.h>
#include <unistd.h>
#include <fcntl.h>
#include <unistd.h>
+#include <sys/file.h>
-#include
"folly/Exception.h"
-#include
"folly/FileUtil.h"
-#include
"folly/Format.h"
-#include
"folly/ScopeGuard.h"
+#include
<folly/Exception.h>
+#include
<folly/FileUtil.h>
+#include
<folly/Format.h>
+#include
<folly/ScopeGuard.h>
#include <system_error>
#include <system_error>
@@
-52,7
+53,13
@@
File::File(const char* name, int flags, mode_t mode)
ownsFd_ = true;
}
ownsFd_ = true;
}
-File::File(File&& other)
+File::File(const std::string& name, int flags, mode_t mode)
+ : File(name.c_str(), flags, mode) {}
+
+File::File(StringPiece name, int flags, mode_t mode)
+ : File(name.str(), flags, mode) {}
+
+File::File(File&& other) noexcept
: fd_(other.fd_)
, ownsFd_(other.ownsFd_) {
other.release();
: fd_(other.fd_)
, ownsFd_(other.ownsFd_) {
other.release();
@@
-65,7
+72,11
@@
File& File::operator=(File&& other) {
}
File::~File() {
}
File::~File() {
- closeNoThrow(); // ignore error
+ auto fd = fd_;
+ if (!closeNoThrow()) { // ignore most errors
+ DCHECK_NE(errno, EBADF) << "closing fd " << fd << ", it may already "
+ << "have been closed. Another time, this might close the wrong FD.";
+ }
}
/* static */ File File::temporary() {
}
/* static */ File File::temporary() {
@@
-80,7
+91,7
@@
File::~File() {
return File(fd, true);
}
return File(fd, true);
}
-int File::release() {
+int File::release()
noexcept
{
int released = fd_;
fd_ = -1;
ownsFd_ = false;
int released = fd_;
fd_ = -1;
ownsFd_ = false;