Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(605)

Side by Side Diff: base/file_util_win.cc

Issue 269083: More CopyDirectory tests and fixes... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/file_util_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/file_util.h" 5 #include "base/file_util.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <shellapi.h> 8 #include <shellapi.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 #include <time.h> 10 #include <time.h>
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 file_operation.fFlags |= FOF_NORECURSION | FOF_FILESONLY; 168 file_operation.fFlags |= FOF_NORECURSION | FOF_FILESONLY;
169 169
170 return (SHFileOperation(&file_operation) == 0); 170 return (SHFileOperation(&file_operation) == 0);
171 } 171 }
172 172
173 bool CopyDirectory(const FilePath& from_path, const FilePath& to_path, 173 bool CopyDirectory(const FilePath& from_path, const FilePath& to_path,
174 bool recursive) { 174 bool recursive) {
175 if (recursive) 175 if (recursive)
176 return ShellCopy(from_path, to_path, true); 176 return ShellCopy(from_path, to_path, true);
177 177
178 // The following code assumes that from path is a directory.
179 DCHECK(DirectoryExists(from_path));
180
178 // Instead of creating a new directory, we copy the old one to include the 181 // Instead of creating a new directory, we copy the old one to include the
179 // security information of the folder as part of the copy. 182 // security information of the folder as part of the copy.
180 if (!PathExists(to_path)) { 183 if (!PathExists(to_path)) {
181 // Except that Vista fails to do that, and instead do a recursive copy if 184 // Except that Vista fails to do that, and instead do a recursive copy if
182 // the target directory doesn't exist. 185 // the target directory doesn't exist.
183 if (win_util::GetWinVersion() >= win_util::WINVERSION_VISTA) 186 if (win_util::GetWinVersion() >= win_util::WINVERSION_VISTA)
184 CreateDirectory(to_path); 187 CreateDirectory(to_path);
185 else 188 else
186 ShellCopy(from_path, to_path, false); 189 ShellCopy(from_path, to_path, false);
187 } 190 }
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 ::CloseHandle(file_mapping_); 803 ::CloseHandle(file_mapping_);
801 if (file_ != INVALID_HANDLE_VALUE) 804 if (file_ != INVALID_HANDLE_VALUE)
802 ::CloseHandle(file_); 805 ::CloseHandle(file_);
803 806
804 data_ = NULL; 807 data_ = NULL;
805 file_mapping_ = file_ = INVALID_HANDLE_VALUE; 808 file_mapping_ = file_ = INVALID_HANDLE_VALUE;
806 length_ = INVALID_FILE_SIZE; 809 length_ = INVALID_FILE_SIZE;
807 } 810 }
808 811
809 } // namespace file_util 812 } // namespace file_util
OLDNEW
« no previous file with comments | « base/file_util_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698