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

Side by Side Diff: client/crash_report_database_mac.mm

Issue 987693004: Mac 10.6 SDK compatibility (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Define __STDC_FORMAT_MACROS Created 5 years, 9 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
« no previous file with comments | « client/crash_report_database.h ('k') | client/crash_report_database_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Crashpad Authors. All rights reserved. 1 // Copyright 2015 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 105
106 bool Initialize(); 106 bool Initialize();
107 107
108 // CrashReportDatabase: 108 // CrashReportDatabase:
109 OperationStatus PrepareNewCrashReport(NewReport** report) override; 109 OperationStatus PrepareNewCrashReport(NewReport** report) override;
110 OperationStatus FinishedWritingCrashReport(NewReport* report, 110 OperationStatus FinishedWritingCrashReport(NewReport* report,
111 UUID* uuid) override; 111 UUID* uuid) override;
112 OperationStatus ErrorWritingCrashReport(NewReport* report) override; 112 OperationStatus ErrorWritingCrashReport(NewReport* report) override;
113 OperationStatus LookUpCrashReport(const UUID& uuid, 113 OperationStatus LookUpCrashReport(const UUID& uuid,
114 Report* report) override; 114 Report* report) override;
115 OperationStatus GetPendingReports( 115 OperationStatus GetPendingReports(std::vector<Report>* reports) override;
116 std::vector<const Report>* reports) override; 116 OperationStatus GetCompletedReports(std::vector<Report>* reports) override;
117 OperationStatus GetCompletedReports(
118 std::vector<const Report>* reports) override;
119 OperationStatus GetReportForUploading(const UUID& uuid, 117 OperationStatus GetReportForUploading(const UUID& uuid,
120 const Report** report) override; 118 const Report** report) override;
121 OperationStatus RecordUploadAttempt(const Report* report, 119 OperationStatus RecordUploadAttempt(const Report* report,
122 bool successful, 120 bool successful,
123 const std::string& id) override; 121 const std::string& id) override;
124 OperationStatus SkipReportUpload(const UUID& uuid) override; 122 OperationStatus SkipReportUpload(const UUID& uuid) override;
125 123
126 private: 124 private:
127 //! \brief A private extension of the Report class that maintains bookkeeping 125 //! \brief A private extension of the Report class that maintains bookkeeping
128 //! information of the database. 126 //! information of the database.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 Report* report); 166 Report* report);
169 167
170 //! \brief Reads the metadata from all the reports in a database subdirectory. 168 //! \brief Reads the metadata from all the reports in a database subdirectory.
171 //! Invalid reports are skipped. 169 //! Invalid reports are skipped.
172 //! 170 //!
173 //! \param[in] path The database subdirectory path. 171 //! \param[in] path The database subdirectory path.
174 //! \param[out] reports An empty vector of reports, which will be filled. 172 //! \param[out] reports An empty vector of reports, which will be filled.
175 //! 173 //!
176 //! \return The operation status code. 174 //! \return The operation status code.
177 static OperationStatus ReportsInDirectory(const base::FilePath& path, 175 static OperationStatus ReportsInDirectory(const base::FilePath& path,
178 std::vector<const Report>* reports); 176 std::vector<Report>* reports);
179 177
180 178
181 //! \brief Creates a database xattr name from the short constant name. 179 //! \brief Creates a database xattr name from the short constant name.
182 //! 180 //!
183 //! \param[in] name The short name of the extended attribute. 181 //! \param[in] name The short name of the extended attribute.
184 //! 182 //!
185 //! \return The long name of the extended attribute. 183 //! \return The long name of the extended attribute.
186 static std::string XattrName(const base::StringPiece& name); 184 static std::string XattrName(const base::StringPiece& name);
187 185
188 base::FilePath base_dir_; 186 base::FilePath base_dir_;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 *report = Report(); 310 *report = Report();
313 report->file_path = path; 311 report->file_path = path;
314 if (!ReadReportMetadataLocked(path, report)) 312 if (!ReadReportMetadataLocked(path, report))
315 return kDatabaseError; 313 return kDatabaseError;
316 314
317 return kNoError; 315 return kNoError;
318 } 316 }
319 317
320 CrashReportDatabase::OperationStatus 318 CrashReportDatabase::OperationStatus
321 CrashReportDatabaseMac::GetPendingReports( 319 CrashReportDatabaseMac::GetPendingReports(
322 std::vector<const CrashReportDatabase::Report>* reports) { 320 std::vector<CrashReportDatabase::Report>* reports) {
323 return ReportsInDirectory(base_dir_.Append(kUploadPendingDirectory), reports); 321 return ReportsInDirectory(base_dir_.Append(kUploadPendingDirectory), reports);
324 } 322 }
325 323
326 CrashReportDatabase::OperationStatus 324 CrashReportDatabase::OperationStatus
327 CrashReportDatabaseMac::GetCompletedReports( 325 CrashReportDatabaseMac::GetCompletedReports(
328 std::vector<const CrashReportDatabase::Report>* reports) { 326 std::vector<CrashReportDatabase::Report>* reports) {
329 return ReportsInDirectory(base_dir_.Append(kCompletedDirectory), reports); 327 return ReportsInDirectory(base_dir_.Append(kCompletedDirectory), reports);
330 } 328 }
331 329
332 CrashReportDatabase::OperationStatus 330 CrashReportDatabase::OperationStatus
333 CrashReportDatabaseMac::GetReportForUploading(const UUID& uuid, 331 CrashReportDatabaseMac::GetReportForUploading(const UUID& uuid,
334 const Report** report) { 332 const Report** report) {
335 base::FilePath report_path = LocateCrashReport(uuid); 333 base::FilePath report_path = LocateCrashReport(uuid);
336 if (report_path.empty()) 334 if (report_path.empty())
337 return kReportNotFound; 335 return kReportNotFound;
338 336
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 } 446 }
449 } 447 }
450 448
451 return base::FilePath(); 449 return base::FilePath();
452 } 450 }
453 451
454 // static 452 // static
455 base::ScopedFD CrashReportDatabaseMac::ObtainReportLock( 453 base::ScopedFD CrashReportDatabaseMac::ObtainReportLock(
456 const base::FilePath& path) { 454 const base::FilePath& path) {
457 int fd = HANDLE_EINTR(open(path.value().c_str(), 455 int fd = HANDLE_EINTR(open(path.value().c_str(),
458 O_RDONLY | O_EXLOCK | O_CLOEXEC | O_NONBLOCK)); 456 O_RDONLY | O_EXLOCK | O_NONBLOCK));
459 PLOG_IF(ERROR, fd < 0) << "open lock " << path.value(); 457 PLOG_IF(ERROR, fd < 0) << "open lock " << path.value();
460 return base::ScopedFD(fd); 458 return base::ScopedFD(fd);
461 } 459 }
462 460
463 // static 461 // static
464 bool CrashReportDatabaseMac::ReadReportMetadataLocked( 462 bool CrashReportDatabaseMac::ReadReportMetadataLocked(
465 const base::FilePath& path, Report* report) { 463 const base::FilePath& path, Report* report) {
466 std::string uuid_string; 464 std::string uuid_string;
467 if (ReadXattr(path, XattrName(kXattrUUID), 465 if (ReadXattr(path, XattrName(kXattrUUID),
468 &uuid_string) != XattrStatus::kOK || 466 &uuid_string) != XattrStatus::kOK ||
(...skipping 30 matching lines...) Expand all
499 &report->upload_attempts) == XattrStatus::kOtherError) { 497 &report->upload_attempts) == XattrStatus::kOtherError) {
500 return false; 498 return false;
501 } 499 }
502 500
503 return true; 501 return true;
504 } 502 }
505 503
506 // static 504 // static
507 CrashReportDatabase::OperationStatus CrashReportDatabaseMac::ReportsInDirectory( 505 CrashReportDatabase::OperationStatus CrashReportDatabaseMac::ReportsInDirectory(
508 const base::FilePath& path, 506 const base::FilePath& path,
509 std::vector<const CrashReportDatabase::Report>* reports) { 507 std::vector<CrashReportDatabase::Report>* reports) {
510 DCHECK(reports->empty()); 508 DCHECK(reports->empty());
511 509
512 NSError* error = nil; 510 NSError* error = nil;
513 NSArray* paths = [[NSFileManager defaultManager] 511 NSArray* paths = [[NSFileManager defaultManager]
514 contentsOfDirectoryAtPath:base::SysUTF8ToNSString(path.value()) 512 contentsOfDirectoryAtPath:base::SysUTF8ToNSString(path.value())
515 error:&error]; 513 error:&error];
516 if (error) { 514 if (error) {
517 LOG(ERROR) << "Failed to enumerate reports in directory " << path.value() 515 LOG(ERROR) << "Failed to enumerate reports in directory " << path.value()
518 << ": " << [[error description] UTF8String]; 516 << ": " << [[error description] UTF8String];
519 return kFileSystemError; 517 return kFileSystemError;
(...skipping 30 matching lines...) Expand all
550 const base::FilePath& path) { 548 const base::FilePath& path) {
551 scoped_ptr<CrashReportDatabaseMac> database_mac( 549 scoped_ptr<CrashReportDatabaseMac> database_mac(
552 new CrashReportDatabaseMac(path.Append(kDatabaseDirectoryName))); 550 new CrashReportDatabaseMac(path.Append(kDatabaseDirectoryName)));
553 if (!database_mac->Initialize()) 551 if (!database_mac->Initialize())
554 database_mac.reset(); 552 database_mac.reset();
555 553
556 return scoped_ptr<CrashReportDatabase>(database_mac.release()); 554 return scoped_ptr<CrashReportDatabase>(database_mac.release());
557 } 555 }
558 556
559 } // namespace crashpad 557 } // namespace crashpad
OLDNEW
« no previous file with comments | « client/crash_report_database.h ('k') | client/crash_report_database_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698