LCOV - app.info - ipc/chromium/src/base/platform_file_posix.cc

LCOV - code coverage report
| Current view: | directory - ipc/chromium/src/base - platform_file_posix.cc (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 30 | 0 | 0.0 %
| Date: | 2012-07-07 | Functions: | 1 | 0 | 0.0 %

           1                 : // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
           2                 : // Use of this source code is governed by a BSD-style license that can be
           3                 : // found in the LICENSE file.
           4                 :
           5                 : #include "base/platform_file.h"
           6                 :
           7                 : #include <sys/stat.h>
           8                 : #include <fcntl.h>
           9                 : #include <errno.h>
          10                 : #ifdef ANDROID
          11                 : #include <linux/stat.h>
          12                 : #endif
          13                 :
          14                 : #include "base/logging.h"
          15                 : #include "base/string_util.h"
          16                 :
          17                 : namespace base {
          18                 :
          19                 : // TODO(erikkay): does it make sense to support PLATFORM_FILE_EXCLUSIVE_* here?
          20               0 : PlatformFile CreatePlatformFile(const std::wstring& name,
          21                 :                                 int flags,
          22                 :                                 bool* created) {
          23               0 :   int open_flags = 0;
          24               0 :   if (flags & PLATFORM_FILE_CREATE)
          25               0 :     open_flags = O_CREAT | O_EXCL;
          26                 :
          27               0 :   if (flags & PLATFORM_FILE_CREATE_ALWAYS) {
          28               0 :     DCHECK(!open_flags);
          29               0 :     open_flags = O_CREAT | O_TRUNC;
          30                 :   }
          31                 :
          32               0 :   if (!open_flags && !(flags & PLATFORM_FILE_OPEN) &&
          33               0 :       !(flags & PLATFORM_FILE_OPEN_ALWAYS)) {
          34               0 :     NOTREACHED();
          35               0 :     errno = ENOTSUP;
          36               0 :     return kInvalidPlatformFileValue;
          37                 :   }
          38                 :
          39               0 :   if (flags & PLATFORM_FILE_WRITE && flags & PLATFORM_FILE_READ) {
          40               0 :     open_flags |= O_RDWR;
          41               0 :   } else if (flags & PLATFORM_FILE_WRITE) {
          42               0 :     open_flags |= O_WRONLY;
          43               0 :   } else if (!(flags & PLATFORM_FILE_READ)) {
          44               0 :     NOTREACHED();
          45                 :   }
          46                 :
          47                 :   DCHECK(O_RDONLY == 0);
          48                 :
          49               0 :   int descriptor = open(WideToUTF8(name).c_str(), open_flags,
          50               0 :                         S_IRUSR | S_IWUSR);
          51                 :
          52               0 :   if (flags & PLATFORM_FILE_OPEN_ALWAYS) {
          53               0 :     if (descriptor > 0) {
          54               0 :       if (created)
          55               0 :         *created = false;
          56                 :     } else {
          57               0 :       open_flags |= O_CREAT;
          58               0 :       descriptor = open(WideToUTF8(name).c_str(), open_flags,
          59               0 :                         S_IRUSR | S_IWUSR);
          60               0 :       if (created && descriptor > 0)
          61               0 :         *created = true;
          62                 :     }
          63                 :   }
          64                 :
          65               0 :   return descriptor;
          66                 : }
          67                 :
          68                 : }  // namespace base

Generated by: LCOV version 1.7