• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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/files/file.h"
6 
7 // TODO(rvargas): remove this (needed for kInvalidPlatformFileValue).
8 #include "base/platform_file.h"
9 
10 namespace base {
11 
Info()12 File::Info::Info()
13     : size(0),
14       is_directory(false),
15       is_symbolic_link(false) {
16 }
17 
~Info()18 File::Info::~Info() {
19 }
20 
File()21 File::File()
22     : file_(kInvalidPlatformFileValue),
23       error_(FILE_OK),
24       created_(false),
25       async_(false) {
26 }
27 
28 #if !defined(OS_NACL)
File(const FilePath & name,uint32 flags)29 File::File(const FilePath& name, uint32 flags)
30     : file_(kInvalidPlatformFileValue),
31       error_(FILE_OK),
32       created_(false),
33       async_(false) {
34   if (name.ReferencesParent()) {
35     error_ = FILE_ERROR_ACCESS_DENIED;
36     return;
37   }
38   CreateBaseFileUnsafe(name, flags);
39 }
40 #endif
41 
File(RValue other)42 File::File(RValue other)
43     : file_(other.object->TakePlatformFile()),
44       error_(other.object->error()),
45       created_(other.object->created()),
46       async_(other.object->async_) {
47 }
48 
~File()49 File::~File() {
50   Close();
51 }
52 
operator =(RValue other)53 File& File::operator=(RValue other) {
54   if (this != other.object) {
55     Close();
56     SetPlatformFile(other.object->TakePlatformFile());
57     error_ = other.object->error();
58     created_ = other.object->created();
59     async_ = other.object->async_;
60   }
61   return *this;
62 }
63 
64 }  // namespace base
65