Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
3.7 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1996 - 1999
  6. //
  7. // File: inf2cdf.cpp
  8. //
  9. // Contents: conversion utility
  10. //
  11. // History: 01-Oct-1997 pberkman created
  12. //
  13. //--------------------------------------------------------------------------
  14. #include "global.hxx"
  15. BOOL fVerbose = FALSE;
  16. extern "C" int __cdecl wmain(int argc, WCHAR **wargv)
  17. {
  18. cWArgv_ *pArgs;
  19. BOOL fFailed;
  20. WCHAR wszTFile[MAX_PATH];
  21. WCHAR *pwszCDFFile;
  22. WCHAR *pwsz;
  23. HANDLE hCDFFile;
  24. HANDLE hTFile;
  25. int iRet;
  26. hCDFFile = INVALID_HANDLE_VALUE;
  27. hTFile = INVALID_HANDLE_VALUE;
  28. iRet = 0;
  29. if (!(pArgs = new cWArgv_((HINSTANCE)GetModuleHandle(NULL), &fFailed)))
  30. {
  31. goto MemoryError;
  32. }
  33. if (fFailed)
  34. {
  35. goto MemoryError;
  36. }
  37. pArgs->AddUsageText(IDS_USAGETEXT_USAGE, IDS_USAGETEXT_OPTIONS,
  38. IDS_USAGETEXT_CMDFILE, IDS_USAGETEXT_ADD,
  39. IDS_USAGETEXT_OPTPARAM);
  40. pArgs->Add2List(IDS_PARAM_HELP, IDS_PARAMTEXT_HELP, WARGV_VALUETYPE_BOOL, (void *)FALSE);
  41. pArgs->Add2List(IDS_PARAM_VERBOSE, IDS_PARAMTEXT_VERBOSE, WARGV_VALUETYPE_BOOL, (void *)FALSE);
  42. pArgs->Fill(argc, wargv);
  43. if (pArgs->GetValue(IDS_PARAM_HELP))
  44. {
  45. wprintf(L"%s", pArgs->GetUsageString());
  46. goto NeededHelp;
  47. }
  48. fVerbose = (BOOL)((ULONG_PTR)pArgs->GetValue(IDS_PARAM_VERBOSE));
  49. pwszCDFFile = pArgs->GetFileName();
  50. if (!(pwszCDFFile))
  51. {
  52. wprintf(L"%s", pArgs->GetUsageString());
  53. goto ParamError;
  54. }
  55. wcscpy(&wszTFile[0], pwszCDFFile);
  56. pwsz = wcschr(&wszTFile[0], L'.');
  57. if (pwsz)
  58. {
  59. wcscpy(pwsz, L".{1}");
  60. }
  61. else
  62. {
  63. wcscat(&wszTFile[0], L".{1}");
  64. }
  65. hCDFFile = CreateFileU(pwszCDFFile, GENERIC_READ, FILE_SHARE_READ,
  66. NULL, OPEN_EXISTING, 0, NULL);
  67. hTFile = CreateFileU(&wszTFile[0], GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
  68. NULL, CREATE_ALWAYS, 0, NULL);
  69. if ((hTFile == INVALID_HANDLE_VALUE) || (hCDFFile == INVALID_HANDLE_VALUE))
  70. {
  71. goto FileError;
  72. }
  73. DWORD cbRead;
  74. DWORD cbWrite;
  75. DWORD dwSrc;
  76. DWORD dwDest;
  77. BYTE bRead[MAX_PATH];
  78. while ((ReadFile(hCDFFile, &bRead[0], MAX_PATH, &cbRead, NULL)) && (cbRead > 0))
  79. {
  80. dwSrc = 0;
  81. dwDest = 0;
  82. while (dwSrc < cbRead)
  83. {
  84. if (bRead[dwSrc] != '\"')
  85. {
  86. bRead[dwDest] = (BYTE)tolower(bRead[dwSrc]);
  87. dwDest++;
  88. }
  89. dwSrc++;
  90. }
  91. if (dwDest > 0)
  92. {
  93. WriteFile(hTFile, &bRead[0], dwDest, &cbWrite, NULL);
  94. }
  95. }
  96. CommonReturn:
  97. DELETE_OBJECT(pArgs);
  98. if (hCDFFile != INVALID_HANDLE_VALUE)
  99. {
  100. CloseHandle(hCDFFile);
  101. }
  102. if (hTFile != INVALID_HANDLE_VALUE)
  103. {
  104. CloseHandle(hTFile);
  105. CopyFileU(&wszTFile[0], pwszCDFFile, FALSE);
  106. DeleteFileU(&wszTFile[0]);
  107. }
  108. return(iRet);
  109. ErrorReturn:
  110. iRet = 1;
  111. goto CommonReturn;
  112. TRACE_ERROR_EX(DBG_SS_APP, MemoryError);
  113. TRACE_ERROR_EX(DBG_SS_APP, ParamError);
  114. TRACE_ERROR_EX(DBG_SS_APP, NeededHelp);
  115. TRACE_ERROR_EX(DBG_SS_APP, FileError);
  116. }