OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <propvarutil.h> | 8 #include <propvarutil.h> |
9 #include <shellapi.h> | 9 #include <shellapi.h> |
10 #include <shlobj.h> | 10 #include <shlobj.h> |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 PLOG(WARNING) << "Failed to get long path name for " << temp_name; | 493 PLOG(WARNING) << "Failed to get long path name for " << temp_name; |
494 return false; | 494 return false; |
495 } | 495 } |
496 | 496 |
497 std::wstring temp_file_str; | 497 std::wstring temp_file_str; |
498 temp_file_str.assign(temp_name, path_len); | 498 temp_file_str.assign(temp_name, path_len); |
499 *temp_file = FilePath(temp_file_str); | 499 *temp_file = FilePath(temp_file_str); |
500 return true; | 500 return true; |
501 } | 501 } |
502 | 502 |
503 bool CreateNewTempDirectory(const FilePath::StringType& prefix, | 503 bool CreateTemporaryDirInDir(const FilePath& base_dir, |
504 FilePath* new_temp_path) { | 504 const FilePath::StringType& prefix, |
505 FilePath system_temp_dir; | 505 FilePath* new_dir) { |
506 if (!GetTempDir(&system_temp_dir)) | |
507 return false; | |
508 | |
509 FilePath path_to_create; | 506 FilePath path_to_create; |
510 srand(static_cast<uint32>(time(NULL))); | 507 srand(static_cast<uint32>(time(NULL))); |
511 | 508 |
512 int count = 0; | 509 int count = 0; |
513 while (count < 50) { | 510 while (count < 50) { |
514 // Try create a new temporary directory with random generated name. If | 511 // Try create a new temporary directory with random generated name. If |
515 // the one exists, keep trying another path name until we reach some limit. | 512 // the one exists, keep trying another path name until we reach some limit. |
516 path_to_create = system_temp_dir; | 513 path_to_create = base_dir; |
| 514 |
517 std::wstring new_dir_name; | 515 std::wstring new_dir_name; |
518 new_dir_name.assign(prefix); | 516 new_dir_name.assign(prefix); |
519 new_dir_name.append(IntToWString(rand() % kint16max)); | 517 new_dir_name.append(IntToWString(rand() % kint16max)); |
| 518 |
520 path_to_create = path_to_create.Append(new_dir_name); | 519 path_to_create = path_to_create.Append(new_dir_name); |
521 | |
522 if (::CreateDirectory(path_to_create.value().c_str(), NULL)) | 520 if (::CreateDirectory(path_to_create.value().c_str(), NULL)) |
523 break; | 521 break; |
524 count++; | 522 count++; |
525 } | 523 } |
526 | 524 |
527 if (count == 50) { | 525 if (count == 50) { |
528 return false; | 526 return false; |
529 } | 527 } |
530 | 528 |
531 *new_temp_path = path_to_create; | 529 *new_dir = path_to_create; |
532 return true; | 530 return true; |
533 } | 531 } |
534 | 532 |
| 533 bool CreateNewTempDirectory(const FilePath::StringType& prefix, |
| 534 FilePath* new_temp_path) { |
| 535 FilePath system_temp_dir; |
| 536 if (!GetTempDir(&system_temp_dir)) |
| 537 return false; |
| 538 |
| 539 return CreateTemporaryDirInDir(system_temp_dir, prefix, new_temp_path); |
| 540 } |
| 541 |
535 bool CreateDirectory(const FilePath& full_path) { | 542 bool CreateDirectory(const FilePath& full_path) { |
536 // If the path exists, we've succeeded if it's a directory, failed otherwise. | 543 // If the path exists, we've succeeded if it's a directory, failed otherwise. |
537 const wchar_t* full_path_str = full_path.value().c_str(); | 544 const wchar_t* full_path_str = full_path.value().c_str(); |
538 DWORD fileattr = ::GetFileAttributes(full_path_str); | 545 DWORD fileattr = ::GetFileAttributes(full_path_str); |
539 if (fileattr != INVALID_FILE_ATTRIBUTES) { | 546 if (fileattr != INVALID_FILE_ATTRIBUTES) { |
540 if ((fileattr & FILE_ATTRIBUTE_DIRECTORY) != 0) { | 547 if ((fileattr & FILE_ATTRIBUTE_DIRECTORY) != 0) { |
541 DLOG(INFO) << "CreateDirectory(" << full_path_str << "), " << | 548 DLOG(INFO) << "CreateDirectory(" << full_path_str << "), " << |
542 "directory already exists."; | 549 "directory already exists."; |
543 return true; | 550 return true; |
544 } else { | 551 } else { |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 } | 877 } |
871 | 878 |
872 bool HasFileBeenModifiedSince(const FileEnumerator::FindInfo& find_info, | 879 bool HasFileBeenModifiedSince(const FileEnumerator::FindInfo& find_info, |
873 const base::Time& cutoff_time) { | 880 const base::Time& cutoff_time) { |
874 long result = CompareFileTime(&find_info.ftLastWriteTime, | 881 long result = CompareFileTime(&find_info.ftLastWriteTime, |
875 &cutoff_time.ToFileTime()); | 882 &cutoff_time.ToFileTime()); |
876 return result == 1 || result == 0; | 883 return result == 1 || result == 0; |
877 } | 884 } |
878 | 885 |
879 } // namespace file_util | 886 } // namespace file_util |
OLD | NEW |