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.

140 lines
3.5 KiB

  1. //
  2. // Flag conversion routines...
  3. // One wishes we didn't need these
  4. //
  5. #include <pch.hxx>
  6. #include "imsgcont.h"
  7. #include "imnxport.h"
  8. DWORD DwConvertSCFStoARF(DWORD dwSCFS)
  9. {
  10. register DWORD dwRet = 0;
  11. if (dwSCFS & SCFS_NOSECUI)
  12. dwRet |= ARF_NOSECUI;
  13. return dwRet;
  14. }
  15. //***************************************************************************
  16. // Function: DwConvertARFtoIMAP
  17. //
  18. // Purpose:
  19. // This function takes ARF_* message flags (such as ARF_READ) and maps
  20. // them to IMAP_MSG_FLAGS such as IMAP_MSG_SEEN.
  21. //
  22. // Arguments:
  23. // DWORD dwARFFlags [in] - ARF_* flags to convert.
  24. //
  25. // Returns:
  26. // DWORD with the appropriate IMAP_MSG_FLAGS set.
  27. //***************************************************************************
  28. DWORD DwConvertARFtoIMAP(DWORD dwARFFlags)
  29. {
  30. DWORD dwIMAPFlags = 0;
  31. Assert(0x0000001F == IMAP_MSG_ALLFLAGS); // Update this function if we get new IMAP flags
  32. if (dwARFFlags & ARF_REPLIED)
  33. dwIMAPFlags |= IMAP_MSG_ANSWERED;
  34. if (dwARFFlags & ARF_FLAGGED)
  35. dwIMAPFlags |= IMAP_MSG_FLAGGED;
  36. if (dwARFFlags & ARF_ENDANGERED)
  37. dwIMAPFlags |= IMAP_MSG_DELETED;
  38. if (dwARFFlags & ARF_READ)
  39. dwIMAPFlags |= IMAP_MSG_SEEN;
  40. if (dwARFFlags & ARF_UNSENT)
  41. dwIMAPFlags |= IMAP_MSG_DRAFT;
  42. return dwIMAPFlags;
  43. } // DwConvertARFtoIMAP
  44. //***************************************************************************
  45. // Function: DwConvertIMAPtoARF
  46. //
  47. // Purpose:
  48. // This function takes IMAP message flags (such as IMAP_MSG_DELETED) and
  49. // maps them to flags suitable for storing in the proptree cache
  50. // (eg, ARF_ENDANGERED).
  51. //
  52. // Arguments:
  53. // DWORD dwIMAPFlags [in] - IMAP message flags (IMAP_MSGFLAGS) to convert.
  54. //
  55. // Returns:
  56. // DWORD with appropriate ARF flags set.
  57. //***************************************************************************
  58. DWORD DwConvertIMAPtoARF(DWORD dwIMAPFlags)
  59. {
  60. DWORD dwARFFlags = 0;
  61. Assert(0x0000001F == IMAP_MSG_ALLFLAGS); // Update this function if we get more IMAP flags
  62. if (dwIMAPFlags & IMAP_MSG_ANSWERED)
  63. dwARFFlags |= ARF_REPLIED;
  64. if (dwIMAPFlags & IMAP_MSG_FLAGGED)
  65. dwARFFlags |= ARF_FLAGGED;
  66. if (dwIMAPFlags & IMAP_MSG_DELETED)
  67. dwARFFlags |= ARF_ENDANGERED;
  68. if (dwIMAPFlags & IMAP_MSG_SEEN)
  69. dwARFFlags |= ARF_READ;
  70. if (dwIMAPFlags & IMAP_MSG_DRAFT)
  71. dwARFFlags |= ARF_UNSENT;
  72. return dwARFFlags;
  73. } // DwConvertIMAPtoARF
  74. DWORD DwConvertIMAPMboxToFOLDER(DWORD dwImapMbox)
  75. {
  76. DWORD dwRet = 0;
  77. AssertSz(IMAP_MBOX_ALLFLAGS == 0x0000000F, "This function needs updating!");
  78. if (IMAP_MBOX_NOINFERIORS & dwImapMbox)
  79. dwRet |= FOLDER_NOCHILDCREATE;
  80. if (IMAP_MBOX_NOSELECT & dwImapMbox)
  81. dwRet |= FOLDER_NOSELECT;
  82. return dwRet;
  83. } // DwConvertIMAPMboxToFOLDER
  84. MESSAGEFLAGS ConvertIMFFlagsToARF(DWORD dwIMFFlags)
  85. {
  86. MESSAGEFLAGS mfResult = 0;
  87. // IMF_ATTACHMENTS
  88. if (ISFLAGSET(dwIMFFlags, IMF_ATTACHMENTS))
  89. FLAGSET(mfResult, ARF_HASATTACH);
  90. // IMF_SIGNED
  91. if (ISFLAGSET(dwIMFFlags, IMF_SIGNED))
  92. FLAGSET(mfResult, ARF_SIGNED);
  93. // IMF_ENCRYPTED
  94. if (ISFLAGSET(dwIMFFlags, IMF_ENCRYPTED))
  95. FLAGSET(mfResult, ARF_ENCRYPTED);
  96. // IMF_VOICEMAIL
  97. if (ISFLAGSET(dwIMFFlags, IMF_VOICEMAIL))
  98. FLAGSET(mfResult, ARF_VOICEMAIL);
  99. // IMF_NEWS
  100. if (ISFLAGSET(dwIMFFlags, IMF_NEWS))
  101. FLAGSET(mfResult, ARF_NEWSMSG);
  102. return mfResult;
  103. }