From 4fe15a8e99893f785cbac62dca727f4f9c2bc6c7 Mon Sep 17 00:00:00 2001 From: ksherlock Date: Wed, 19 May 2010 23:47:32 +0000 Subject: [PATCH] git-svn-id: https://profuse.googlecode.com/svn/branches/v2@230 aa027e90-d47c-11dd-86d7-074df07e0730 --- File/File.cpp | 10 ++++++++++ File/File.h | 2 ++ 2 files changed, 12 insertions(+) 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: