1/*
2 * Copyright 2016, Rene Gollent, rene@gollent.com.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include "CliWriteCoreFileCommand.h"
8
9#include <Entry.h>
10#include <FindDirectory.h>
11#include <Path.h>
12#include <String.h>
13
14#include "CliContext.h"
15#include "UiUtils.h"
16#include "UserInterface.h"
17
18
19CliWriteCoreFileCommand::CliWriteCoreFileCommand()
20	:
21	CliCommand("write core file",
22		"%s\n"
23		"Writes a core dump file for the current team.")
24{
25}
26
27
28void
29CliWriteCoreFileCommand::Execute(int argc, const char* const* argv, CliContext& context)
30{
31	BPath path;
32	if (argc > 1) {
33		path.SetTo(argv[1]);
34		if (path.InitCheck() != B_OK) {
35			printf("Invalid core file path %s given.\n", argv[1]);
36			return;
37		}
38	} else {
39		char buffer[B_FILE_NAME_LENGTH];
40		UiUtils::CoreFileNameForTeam(context.GetTeam(), buffer,
41			sizeof(buffer));
42		find_directory(B_DESKTOP_DIRECTORY, &path);
43		path.Append(buffer);
44	}
45
46	entry_ref ref;
47	if (get_ref_for_path(path.Path(), &ref) == B_OK) {
48		printf("Writing core file to %s...\n", path.Path());
49		context.GetUserInterfaceListener()->WriteCoreFileRequested(&ref);
50	}
51}
52