diff --git a/File/File.cpp b/File/File.cpp index 7ce27f0..d1d3e49 100644 --- a/File/File.cpp +++ b/File/File.cpp @@ -71,11 +71,21 @@ void File::close() void File::adopt(File &f) { + if (&f == this) return; + close(); _fd = f._fd; f._fd = -1; } +void File::adopt(int fd) +{ + if (fd == _fd) return; + close(); + _fd = fd; +} + + void File::swap(File &f) { std::swap(_fd, f._fd); diff --git a/File/File.h b/File/File.h index 6278666..5ada61d 100644 --- a/File/File.h +++ b/File/File.h @@ -26,6 +26,8 @@ class File { void close(); void adopt(File &f); + void adopt(int fd); + void swap(File &f); private: