]>
git.saurik.com Git - apt.git/blob - cmdline/apt-dump-solver.cc
1 // -*- mode: cpp; mode: fold -*-
3 /* #####################################################################
5 dummy solver to get quickly a scenario file out of APT
7 ##################################################################### */
9 // Include Files /*{{{*/
10 #include <apt-pkg/edsp.h>
21 // ShowHelp - Show a help screen /*{{{*/
22 // ---------------------------------------------------------------------
24 static bool ShowHelp() {
25 ioprintf(std::cout
, "%s %s (%s)\n", PACKAGE
, PACKAGE_VERSION
, COMMON_ARCH
);
27 "Usage: apt-dump-solver\n"
29 "apt-dump-solver is a dummy solver who just dumps its input to the\n"
30 "file specified in the environment variable APT_EDSP_DUMP_FILENAME and\n"
31 "exists with a proper EDSP error.\n"
33 " This dump has lost Super Cow Powers.\n";
37 int main(int argc
,const char *argv
[]) /*{{{*/
39 if (argc
> 1 && (strcmp(argv
[1], "--help") == 0 || strcmp(argv
[1],"-h") == 0 ||
40 strcmp(argv
[1],"-v") == 0 || strcmp(argv
[1],"--version") == 0)) {
45 // we really don't need anything
47 char const * const filename
= getenv("APT_EDSP_DUMP_FILENAME");
48 if (filename
== NULL
|| strlen(filename
) == 0)
50 EDSP::WriteError("ERR_NO_FILENAME", "You have to set the environment variable APT_EDSP_DUMP_FILENAME\n"
51 "to a valid filename to store the dump of EDSP solver input in.\n"
52 "For example with: export APT_EDSP_DUMP_FILENAME=/tmp/dump.edsp", stdout
);
56 RemoveFile(argv
[0], filename
);
58 if (input
.OpenDescriptor(STDIN_FILENO
, FileFd::ReadOnly
) == false ||
59 output
.Open(filename
, FileFd::WriteOnly
| FileFd::Create
| FileFd::Exclusive
, 0600) == false ||
60 CopyFile(input
, output
) == false || input
.Close() == false || output
.Close() == false)
62 std::ostringstream out
;
63 out
<< "Writing EDSP solver input to file '" << filename
<< "' failed!\n";
64 _error
->DumpErrors(out
);
65 EDSP::WriteError("ERR_WRITE_ERROR", out
.str(), stdout
);
69 EDSP::WriteError("ERR_JUST_DUMPING", "I am too dumb, i can just dump!\nPlease use one of my friends instead!", stdout
);