| Index: tools/crashpad_database_util.cc
|
| diff --git a/tools/crashpad_database_util.cc b/tools/crashpad_database_util.cc
|
| index 8f06aad941eaf3c8a32a64be785d475160280e04..e09f1dedabbd1a60cb5eb6182f5e97ea6c763cf0 100644
|
| --- a/tools/crashpad_database_util.cc
|
| +++ b/tools/crashpad_database_util.cc
|
| @@ -46,6 +46,7 @@ void Usage(const base::FilePath& me) {
|
| "Usage: %" PRFilePath " [OPTION]... PID\n"
|
| "Operate on Crashpad crash report databases.\n"
|
| "\n"
|
| +" --create allow database at PATH to be created\n"
|
| " -d, --database=PATH operate on the crash report database at PATH\n"
|
| " --show-client-id show the client ID\n"
|
| " --show-uploads-enabled show whether uploads are enabled\n"
|
| @@ -72,6 +73,7 @@ struct Options {
|
| const char* database;
|
| const char* set_last_upload_attempt_time_string;
|
| time_t set_last_upload_attempt_time;
|
| + bool create;
|
| bool show_client_id;
|
| bool show_uploads_enabled;
|
| bool show_last_upload_attempt_time;
|
| @@ -253,6 +255,7 @@ int DatabaseUtilMain(int argc, char* argv[]) {
|
|
|
| // Long options without short equivalents.
|
| kOptionLastChar = 255,
|
| + kOptionCreate,
|
| kOptionShowClientID,
|
| kOptionShowUploadsEnabled,
|
| kOptionShowLastUploadAttemptTime,
|
| @@ -271,6 +274,7 @@ int DatabaseUtilMain(int argc, char* argv[]) {
|
| };
|
|
|
| const option long_options[] = {
|
| + {"create", no_argument, nullptr, kOptionCreate},
|
| {"database", required_argument, nullptr, kOptionDatabase},
|
| {"show-client-id", no_argument, nullptr, kOptionShowClientID},
|
| {"show-uploads-enabled", no_argument, nullptr, kOptionShowUploadsEnabled},
|
| @@ -305,6 +309,10 @@ int DatabaseUtilMain(int argc, char* argv[]) {
|
| int opt;
|
| while ((opt = getopt_long(argc, argv, "d:", long_options, nullptr)) != -1) {
|
| switch (opt) {
|
| + case kOptionCreate: {
|
| + options.create = true;
|
| + break;
|
| + }
|
| case kOptionDatabase: {
|
| options.database = optarg;
|
| break;
|
| @@ -410,14 +418,19 @@ int DatabaseUtilMain(int argc, char* argv[]) {
|
| options.has_set_uploads_enabled +
|
| (options.set_last_upload_attempt_time_string != nullptr);
|
|
|
| - if (show_operations + set_operations == 0) {
|
| + if ((options.create ? 1 : 0) + show_operations + set_operations == 0) {
|
| ToolSupport::UsageHint(me, "nothing to do");
|
| return EXIT_FAILURE;
|
| }
|
|
|
| - scoped_ptr<CrashReportDatabase> database(CrashReportDatabase::Initialize(
|
| - base::FilePath(ToolSupport::CommandLineArgumentToFilePathStringType(
|
| - options.database))));
|
| + scoped_ptr<CrashReportDatabase> database;
|
| + base::FilePath database_path = base::FilePath(
|
| + ToolSupport::CommandLineArgumentToFilePathStringType(options.database));
|
| + if (options.create) {
|
| + database = CrashReportDatabase::Initialize(database_path);
|
| + } else {
|
| + database = CrashReportDatabase::InitializeWithoutCreating(database_path);
|
| + }
|
| if (!database) {
|
| return EXIT_FAILURE;
|
| }
|
|
|