XPTXTMSG.H
/* 
 -  X P T X T M S G . H 
 - 
 *  Purpose: 
 *      Support for the textized TNEF encapsulated message transport. 
 *       
 *  Copyright 1992-1995 Microsoft Corporation.  All Rights Reserved. 
 */ 
  
/* Stuff to support the textized message formating */ 
 
enum  
{ 
    tagMessage,  
    tagFrom, 
    tagRepresenting, 
    tagReplyTo, 
    tagDate, 
    tagTo, 
    tagCc, 
    tagBcc, 
    tagSubject, 
    tagPrioUrgent, 
    tagPrioNormal, 
    tagPrioLow, 
    tagContents, 
    tagTextItem, 
    tagFileItem, 
    NUM_TAGS         
}; 
 
 
#define MAX_TAG_LEN         32 
#define MAX_TXTMSG_PROPS    17 
#define MAX_STRM_BUF        256 
#define MAX_LINE            256 
 
/* Macro to DebugTrace failures from a Read/Write calls */ 
 
#define TraceFailedRead(_a, _b) \ 
    hr = (_a); \ 
    if(HR_FAILED(hr)) \ 
    { \ 
        DebugTraceResult(Read(), hr); \ 
        goto _b; \ 
    } 
 
#define TraceFailedWrite(_a, _b) \ 
    hr = (_a); \ 
    if(HR_FAILED(hr)) \ 
    { \ 
        DebugTraceResult(Write(), hr); \ 
        goto _b; \ 
    } 
     
 
/* All extern variables are declared in xpqueue.c  */ 
 
extern TCHAR rgszTags[NUM_TAGS][MAX_TAG_LEN]; 
extern TCHAR szCRLF[3]; 
extern TCHAR szCRLFCRLF[5]; 
 
 
/* Function Prototypes */ 
 
HRESULT HrGetLine(LPSTREAM lpSof, ULONG cbDest, LPTSTR lpsz, ULONG *pcbRead); 
HRESULT HrBuildSenderProps(LPXPL lpxpl, LPSPropValue lpPropArray, ULONG ulTag,  
        LPTSTR lpszToken, LPTSTR lpszAddrType, LPMESSAGE lpMessage,  
        ULONG * lpcValues, LPSPropValue lpMsgProps); 
HRESULT HrGetStreamedProp(LPXPL lpxpl, LPSTREAM lpSof, LPMESSAGE lpMsg,  
        ULONG ulPropTag, ULONG * lpcValues, LPSPropValue lpMsgProps,  
        LPTSTR lpszLine, ULONG * lpulTag, LPTSTR * lppszToken); 
HRESULT HrAddRecipToAdrList(LPXPL lpxpl, LONG lRecipType,  
        LPTSTR lpszNameAddr, LPTSTR lpszAddrType, LPMYADRLIST lpMyAdrList); 
HRESULT HrAddRecipToReplyList(LPXPL lpxpl, LPTSTR lpszToken, LPTSTR lpszAddrType, 
        LPTSTR *lppszNames, ULONG *lpcbEIDList, LPFLATENTRYLIST *lppEIDList); 
HRESULT HrCrackSenderEID(LPXPL lpxpl, ULONG cb, LPBYTE lpb, LPTSTR lpsz);        
HRESULT HrMakeSearchKey(LPXPL lpxpl, LPVOID lpParent, LPTSTR lpszAddrType,  
        LPTSTR lpszAddress, ULONG *lpcbSK, LPBYTE *lppSK);   
BOOL    FGetTagAndToken(LPTSTR lpsz, ULONG *pulTag, LPTSTR *lppszToken); 
void    FileTimeFromSzTime(LPTSTR lpszTime, FILETIME *pft); 
 
HRESULT HrPrepareRecipientTable(LPSPropValue, LPMESSAGE, LPMAPITABLE *); 
BOOL    FPropIndex(LPSPropValue, ULONG, ULONG, ULONG *); 
void    FormatFileTime(FILETIME *, LPTSTR); 
 
HRESULT HrIMsgToTextMsg(LPXPL lpxpl, LPSPropValue lpPropArray, LPMESSAGE lpMessage, LPSTREAM lpSof); 
HRESULT HrIMsgFromTextMsg(LPXPL lpxpl, LPSPropValue lpPropArray, LPMESSAGE lpMessage, LPSTREAM lpSof);