DumpInformation.cxx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "DumpInformation.h"
  2. #include <stdio.h>
  3. #include <sys/stat.h>
  4. void cmDumpInformationPrintFile(const char* name, FILE* fout)
  5. {
  6. fprintf(fout,
  7. "Avoid ctest truncation of output: CTEST_FULL_OUTPUT\n");
  8. fprintf(fout,
  9. "================================================================\n");
  10. struct stat fs;
  11. if(stat(name, &fs) != 0)
  12. {
  13. fprintf(fout, "The file \"%s\" does not exist.\n", name);
  14. fflush(fout);
  15. return;
  16. }
  17. FILE* fin = fopen(name, "r");
  18. if(fin)
  19. {
  20. fprintf(fout,
  21. "Contents of \"%s\":\n"
  22. "----------------------------------------------------------------\n",
  23. name);
  24. const int bufferSize = 4096;
  25. char buffer[bufferSize];
  26. int n;
  27. while((n = fread(buffer, 1, bufferSize, fin)) > 0)
  28. {
  29. for(char* c = buffer; c < buffer+n; ++c)
  30. {
  31. switch(*c)
  32. {
  33. case '<': fprintf(fout, "&lt;"); break;
  34. case '>': fprintf(fout, "&gt;"); break;
  35. case '&': fprintf(fout, "&amp;"); break;
  36. default: putc(*c, fout); break;
  37. }
  38. }
  39. fflush(fout);
  40. }
  41. fclose(fin);
  42. }
  43. else
  44. {
  45. fprintf(fout, "Error opening \"%s\" for reading.\n", name);
  46. fflush(fout);
  47. }
  48. }
  49. int main(int,char *[])
  50. {
  51. const char* files[] =
  52. {
  53. DumpInformation_BINARY_DIR "/SystemInformation.out",
  54. DumpInformation_BINARY_DIR "/AllVariables.txt",
  55. DumpInformation_BINARY_DIR "/AllCommands.txt",
  56. DumpInformation_BINARY_DIR "/AllMacros.txt",
  57. DumpInformation_BINARY_DIR "/OtherProperties.txt",
  58. DumpInformation_BINARY_DIR "/../../Source/cmConfigure.h",
  59. DumpInformation_BINARY_DIR "/../../CMakeCache.txt",
  60. DumpInformation_BINARY_DIR "/../../CMakeOutput.log",
  61. DumpInformation_BINARY_DIR "/../../CMakeError.log",
  62. DumpInformation_BINARY_DIR "/../../Bootstrap.cmk/cmake_bootstrap.log",
  63. DumpInformation_BINARY_DIR "/../../Source/cmsys/Configure.hxx",
  64. DumpInformation_BINARY_DIR "/../../Source/cmsys/Configure.h",
  65. 0
  66. };
  67. const char** f;
  68. for(f = files; *f; ++f)
  69. {
  70. cmDumpInformationPrintFile(*f, stdout);
  71. }
  72. return 0;
  73. }