DumpInformation.cxx 2.3 KB

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