mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-13 18:27:35 +00:00
132 lines
5.7 KiB
C++
132 lines
5.7 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
/********************************************************************************************************
|
|
|
|
Interface for parsing RFC-822 addresses.
|
|
|
|
*********************************************************************************************************/
|
|
|
|
#ifndef nsIMSGRFC822PARSER_h__
|
|
#define nsIMSGRFC822PARSER_h__
|
|
|
|
#include "nsISupports.h"
|
|
|
|
#define NS_IMSGRFC822PARSER_IID \
|
|
{ /* 10A88A11-729E-11d2-804A-006008128C4E */ \
|
|
0x10a88a11, 0x729e, 0x11d2, \
|
|
{0x80, 0x4a, 0x0, 0x60, 0x8, 0x12, 0x8c, 0x4e} }
|
|
|
|
/*
|
|
* nsIMsgRFCParser Interface declaration
|
|
*/
|
|
|
|
class nsIMsgRFC822Parser: public nsISupports {
|
|
public:
|
|
|
|
static const nsIID& IID(void) { static nsIID iid = NS_IMSGRFC822PARSER_IID; return iid; }
|
|
|
|
/* Given a string which contains a list of RFC822 addresses, parses it into
|
|
their component names and mailboxes.
|
|
|
|
The returned value is the number of addresses, or a negative error code;
|
|
the names and addresses are returned into the provided pointers as
|
|
consecutive null-terminated strings. It is up to the caller to free them.
|
|
Note that some of the strings may be zero-length.
|
|
|
|
Either of the provided pointers may be NULL if the caller is not interested
|
|
in those components.
|
|
*/
|
|
NS_IMETHOD ParseRFC822Addresses (const char *line, char **names, char **addresses, PRUint32& numAddresses) = 0;
|
|
NS_IMETHOD ParseRFC822Addresses_Intl (PRInt16 csid, const char *line, char **names, char **addresses, PRUint32& numAddresses) = 0;
|
|
|
|
/* Given a string which contains a list of RFC822 addresses, returns a
|
|
comma-seperated list of just the `mailbox' portions.
|
|
|
|
Caller must call PL_strfree on returnValue (which is allocated by the function)
|
|
*/
|
|
NS_IMETHOD ExtractRFC822AddressMailboxes (const char *line, char ** mailboxes) = 0;
|
|
NS_IMETHOD ExtractRFC822AddressMailboxes_Intl (PRInt16 csid, const char *line, char ** mailboxes) = 0;
|
|
|
|
|
|
/* Given a string which contains a list of RFC822 addresses, returns a
|
|
comma-seperated list of just the `user name' portions. If any of
|
|
the addresses doesn't have a name, then the mailbox is used instead.
|
|
|
|
Caller must PL_strfree usernames.
|
|
*/
|
|
NS_IMETHOD ExtractRFC822AddressNames (const char *line, char ** userNames) = 0;
|
|
NS_IMETHOD ExtractRFC822AddressNames_Intl (PRInt16 csid, const char *line, char ** userNames)= 0;
|
|
|
|
/* Like MSG_ExtractRFC822AddressNames(), but only returns the first name
|
|
in the list, if there is more than one.
|
|
|
|
Caller must call PL_strfree on name
|
|
*/
|
|
NS_IMETHOD ExtractRFC822AddressName (const char *line, char ** name) = 0;
|
|
NS_IMETHOD ExtractRFC822AddressName_Intl (PRInt16 csid, const char *line, char ** name) = 0;
|
|
|
|
/* Given a string which contains a list of RFC822 addresses, returns a new
|
|
string with the same data, but inserts missing commas, parses and reformats
|
|
it, and wraps long lines with newline-tab.
|
|
|
|
Caller must call PL_strfree on reformattedAddress
|
|
*/
|
|
NS_IMETHOD ReformatRFC822Addresses (const char *line, char ** reformattedAddress) = 0;
|
|
NS_IMETHOD ReformatRFC822Addresses_Intl (PRInt16 csid, const char *line, char ** reformattedAddress) = 0;
|
|
|
|
/* Returns a copy of ADDRS which may have had some addresses removed.
|
|
Addresses are removed if they are already in either ADDRS or OTHER_ADDRS.
|
|
(If OTHER_ADDRS contain addresses which are not in ADDRS, they are not
|
|
added. That argument is for passing in addresses that were already
|
|
mentioned in other header fields.)
|
|
|
|
Addresses are considered to be the same if they contain the same mailbox
|
|
part (case-insensitive.) Real names and other comments are not compared.
|
|
|
|
removeAliasesToMe allows the address parser to use the preference which
|
|
contains regular expressions which also mean 'me' for the purpose of
|
|
stripping the user's email address(es) out of addrs
|
|
|
|
Caller must call PL_strfree on newAddress which is the return value.
|
|
*/
|
|
NS_IMETHOD RemoveDuplicateAddresses (const char *addrs, const char *other_addrs, PRBool removeAliasesToMe, char ** newAddress) = 0;
|
|
NS_IMETHOD RemoveDuplicateAddresses_Intl (PRInt16 csid, const char *addrs, const char *other_addrs, PRBool removeAliasesToMe, char ** newAddress) = 0;
|
|
|
|
|
|
/* Given an e-mail address and a person's name, cons them together into a
|
|
single string of the form "name <address>", doing all the necessary quoting.
|
|
A new string is returned, which you must free when you're done with it.
|
|
|
|
Caller must call PL_strfree on fullAddress
|
|
*/
|
|
NS_IMETHOD MakeFullAddress (const char* name, const char* addr, char ** fullAddress) = 0;
|
|
NS_IMETHOD MakeFullAddress_Intl (PRInt16 csid, const char* name, const char* addr, char ** fullAddress) = 0;
|
|
|
|
/* MSG_ParseRFC822Addresses returns quoted parsable addresses
|
|
This function removes the quoting if you want to show the
|
|
names to users. e.g. summary file, address book
|
|
*/
|
|
NS_IMETHOD UnquotePhraseOrAddr (const char *line, char** lineout) = 0;
|
|
NS_IMETHOD UnquotePhraseOrAddr_Intl (PRInt16 csid, const char *line, char** lineout) = 0;
|
|
|
|
};
|
|
|
|
#endif /* nsIMSGRFC822PARSER_h__ */
|
|
|