diff options
Diffstat (limited to 'sandbox/win/sandbox_poc/pocdll/utils.h')
-rw-r--r-- | sandbox/win/sandbox_poc/pocdll/utils.h | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/sandbox/win/sandbox_poc/pocdll/utils.h b/sandbox/win/sandbox_poc/pocdll/utils.h deleted file mode 100644 index 0a6ad377fd..0000000000 --- a/sandbox/win/sandbox_poc/pocdll/utils.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SANDBOX_SANDBOX_POC_POCDLL_UTILS_H__ -#define SANDBOX_SANDBOX_POC_POCDLL_UTILS_H__ - -#include <stdio.h> -#include <io.h> - -#include "base/macros.h" - -// Class to convert a HANDLE to a FILE *. The FILE * is closed when the -// object goes out of scope -class HandleToFile { - public: - HandleToFile() { - file_ = NULL; - }; - - // Note: c_file_handle_ does not need to be closed because fclose does it. - ~HandleToFile() { - if (file_) { - fflush(file_); - fclose(file_); - } - }; - - // Translates a HANDLE (handle) to a FILE * opened with the mode "mode". - // The return value is the FILE * or NULL if there is an error. - FILE* Translate(HANDLE handle, const char *mode) { - if (file_) { - return NULL; - } - - HANDLE new_handle; - BOOL result = ::DuplicateHandle(::GetCurrentProcess(), - handle, - ::GetCurrentProcess(), - &new_handle, - 0, // Don't ask for a specific - // desired access. - FALSE, // Not inheritable. - DUPLICATE_SAME_ACCESS); - - if (!result) { - return NULL; - } - - int c_file_handle = _open_osfhandle(reinterpret_cast<LONG_PTR>(new_handle), - 0); // No flags - if (-1 == c_file_handle) { - return NULL; - } - - file_ = _fdopen(c_file_handle, mode); - return file_; - }; - private: - // the FILE* returned. We need to closed it at the end. - FILE* file_; - - DISALLOW_COPY_AND_ASSIGN(HandleToFile); -}; - -#endif // SANDBOX_SANDBOX_POC_POCDLL_UTILS_H__ |