Index: sdk/tools/cabman/dfp.cxx =================================================================== --- sdk/tools/cabman/dfp.cxx (revision 73519) +++ sdk/tools/cabman/dfp.cxx (working copy) @@ -278,6 +278,9 @@ if (!FileLoaded) return CAB_STATUS_NOFILE; + OptionalSkipped = 0; + SkippedFileOutput = NULL; + while (ReadLine()) { Command = false; @@ -387,6 +390,13 @@ } } + if (SkippedFileOutput) + { + printf("%lu Optional files skipped (see %s%s)\n", OptionalSkipped, GetDestinationPath(), "skipped.txt"); + CloseFile(SkippedFileOutput); + SkippedFileOutput = NULL; + } + if (!InfFileOnly) { if (CABMgr.IsVerbose()) @@ -1223,7 +1233,16 @@ if (strstr(Options,"optional")) { Status = CAB_STATUS_SUCCESS; - printf("Optional file skipped (does not exist): %s.\n", SrcName); + if (SkippedFileOutput == NULL) + { + char buf[MAX_PATH]; + strcpy(buf, GetDestinationPath()); + strcat(buf, "skipped.txt"); + SkippedFileOutput = fopen(buf, "wb"); + } + + OptionalSkipped++; + fprintf(SkippedFileOutput ? SkippedFileOutput : stdout, "Optional file skipped (does not exist): %s.\n", SrcName); } else printf("ERROR: File not found: %s.\n", SrcName); Index: sdk/tools/cabman/dfp.h =================================================================== --- sdk/tools/cabman/dfp.h (revision 73519) +++ sdk/tools/cabman/dfp.h (working copy) @@ -107,6 +107,8 @@ ULONG LineLength; ULONG CurrentLine; ULONG CurrentChar; + ULONG OptionalSkipped; + FILE* SkippedFileOutput; /* Token */ DFP_TOKEN CurrentToken; ULONG CurrentInteger;