]> git.saurik.com Git - apt.git/blob - cmdline/apt-dump-solver.cc
Use heap to allocate PatternMatch to avoid potential stack overflow
[apt.git] / cmdline / apt-dump-solver.cc
1 // -*- mode: cpp; mode: fold -*-
2 // Description /*{{{*/
3 /* #####################################################################
4
5 dummy solver to get quickly a scenario file out of APT
6
7 ##################################################################### */
8 /*}}}*/
9 // Include Files /*{{{*/
10 #include <apt-pkg/edsp.h>
11
12 #include <string.h>
13 #include <unistd.h>
14 #include <cstdio>
15 #include <iostream>
16
17 #include <config.h>
18 /*}}}*/
19
20 // ShowHelp - Show a help screen /*{{{*/
21 // ---------------------------------------------------------------------
22 /* */
23 static bool ShowHelp() {
24
25 std::cout <<
26 PACKAGE " " PACKAGE_VERSION " for " COMMON_ARCH " compiled on " __DATE__ " " __TIME__ << std::endl <<
27 "Usage: apt-dump-resolver\n"
28 "\n"
29 "apt-dump-resolver is a dummy solver who just dumps its input to the\n"
30 "file /tmp/dump.edsp and exists with a proper EDSP error.\n"
31 "\n"
32 " This dump has lost Super Cow Powers.\n";
33 return true;
34 }
35 /*}}}*/
36 int main(int argc,const char *argv[]) /*{{{*/
37 {
38 if (argc > 1 && (strcmp(argv[1], "--help") == 0 || strcmp(argv[1],"-h") == 0 ||
39 strcmp(argv[1],"-v") == 0 || strcmp(argv[1],"--version") == 0)) {
40 ShowHelp();
41 return 0;
42 }
43
44 FILE* input = fdopen(STDIN_FILENO, "r");
45 FILE* output = fopen("/tmp/dump.edsp", "w");
46 char buffer[400];
47 while (fgets(buffer, sizeof(buffer), input) != NULL)
48 fputs(buffer, output);
49 fclose(output);
50 fclose(input);
51
52 EDSP::WriteError("ERR_JUST_DUMPING", "I am too dumb, i can just dump!\nPlease use one of my friends instead!", stdout);
53 }