1 line
12 KiB
C
Executable File
1 line
12 KiB
C
Executable File
/* Copyright (c) 2017, Computer History Museum
|
|
All rights reserved.
|
|
Redistribution and use in source and binary forms, with or without modification, are permitted (subject to
|
|
the limitations in the disclaimer below) provided that the following conditions are met:
|
|
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
|
disclaimer in the documentation and/or other materials provided with the distribution.
|
|
* Neither the name of Computer History Museum nor the names of its contributors may be used to endorse or promote products
|
|
derived from this software without specific prior written permission.
|
|
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE
|
|
COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
DAMAGE. */
|
|
|
|
#ifndef NICKMNG_H
|
|
#define NICKMNG_H
|
|
|
|
/* Copyright (c) 1990-1992 by the University of Illinois Board of Trustees */
|
|
|
|
// Nickname TOC flags (new for 5.0)
|
|
typedef enum {
|
|
nfNone = 0x00000000,
|
|
nfMultipleAddresses = 0x00000001,
|
|
nfAllFlags = 0xFFFFFFFF
|
|
} NicknameFlagsType;
|
|
|
|
typedef enum {
|
|
changeBitUnmodified = 0x0000,
|
|
changeBitModified = 0x0001,
|
|
changeBitDeleted = 0x0002,
|
|
changeBitAdded = 0x0004,
|
|
changeBitArchived = 0x0008,
|
|
changeBitPrivate = 0x0010
|
|
} ChangeBitType;
|
|
|
|
#define AllButPrivate (~changeBitUnmodified & ~changeBitPrivate)
|
|
|
|
typedef enum {
|
|
nickFieldReplaceExisting, // Replace the value if the field is found -- create it if not
|
|
nickFieldAppendExisting, // Append the value if the field is found -- create it if not
|
|
nickFieldIgnoreExisting, // Ignore this field if it already exists
|
|
} NickFieldSetValueType;
|
|
|
|
typedef enum {
|
|
noPrimary,
|
|
homePrimary,
|
|
workPrimary
|
|
} PrimaryLocationType;
|
|
|
|
/* Structure for a given nickname */
|
|
// ALB 7/15/96, took out handle to nickname and to NickInfoStruct. Added nameTOCOffset,
|
|
// theViewData, theAddresses, and theNotes
|
|
typedef struct
|
|
{
|
|
long hashName; /* Hash value on nickname */
|
|
long hashAddress; /* Hash value on address */
|
|
// long createDate; /* Creation date for this nickname (eventually) */
|
|
// long modDate; /* Modification date for this nickname (eventually) */
|
|
// long usageDate; /* Date this nickname was most recently used (eventually) */
|
|
long cacheDate; /* Date this nickname was last cached (which differes from the above) */
|
|
long addressesDirty:1; /* Have we modified the nickname addresses? -- eventually!!! */
|
|
long notesDirty:1; /* Have we modified the nickname notes? -- eventually!!! */
|
|
long pornography:1; /* Is the photo dirty? */
|
|
long deleted:1; /* Has the nickname been deleted */
|
|
long group:1; /* Does the nickname represent a group */
|
|
long unused:27; /* Future expansion */
|
|
long addressOffset; /* Offset in file that address is at */
|
|
long notesOffset; /* Offset in file that notes is at */
|
|
long nameTOCOffset; /* Offset to the nickname */
|
|
long valueOffset; // Offset into notes where we'll find the sort value
|
|
long valueLength; // Length of the sort value
|
|
Handle theAddresses; /* expansion addresses */
|
|
Handle theNotes; /* Notes for nickname; will contain other info such as real name, phone, etc. */
|
|
} NickStruct, *NickStructPtr, **NickStructHandle;
|
|
|
|
typedef enum {
|
|
eudoraAddressBook,
|
|
regularAddressBook,
|
|
pluginAddressBook,
|
|
historyAddressBook,
|
|
#ifdef VCARD
|
|
personalAddressBook
|
|
#endif
|
|
} AddressBookType;
|
|
|
|
#define IsEudoraAddressBook(aShort) ((*Aliases)[aShort].type == eudoraAddressBook)
|
|
#define IsRegularAddressBook(aShort) ((*Aliases)[aShort].type == regularAddressBook)
|
|
#define IsPluginAddressBook(aShort) ((*Aliases)[aShort].type == pluginAddressBook)
|
|
#define IsHistoryAddressBook(aShort) ((*Aliases)[aShort].type == historyAddressBook)
|
|
#define IsPersonalAddressBook(aShort) ((*Aliases)[aShort].type == personalAddressBook)
|
|
|
|
typedef struct AliasDStruct
|
|
{
|
|
FSSpec spec;
|
|
NickStructHandle theData;
|
|
Handle hNames; // ALB 7/16/96, handle to nicknames
|
|
short **sortData; // Contains nickname ID's -- 0 based -- of the sorted data for this address book
|
|
AddressBookType type;
|
|
Boolean collapsed;
|
|
Boolean ro;
|
|
Boolean dirty;
|
|
Boolean containsBogusNicks;
|
|
Accumulator addressHashes;
|
|
} AliasDesc, *AliasDPtr, **AliasDHandle;
|
|
|
|
// Structure to represent the contents of a 'TGMP' (Tag Map) resource
|
|
typedef struct {
|
|
Str255 service; // Name of the service (Ph, LDAP, etc...)
|
|
Str255 server; // Server (if any)
|
|
short count; // Number of tags
|
|
Handle serviceTags; // Concatenation of PStr's representing tags for this service and server
|
|
Handle nicknameTags; // Concatenation of PStr's representing mapped nickname tags
|
|
} NicknameTagMapRec, *NicknameTagMapRecPtr, **NicknameTagMapRecHandle;
|
|
|
|
#define NAliases (GetHandleSize_(Aliases)/sizeof(AliasDesc))
|
|
#define NNicknames (GetHandleSize_(This.theData)/sizeof(NickStruct))
|
|
#define issep(c) (IsSpace(c) || (c)==',')
|
|
|
|
#define NICK_TOC_TYPE 'NToc'
|
|
#define NICK_NAMES_TYPE 'NNam'
|
|
#define NICK_BASE_RESID 128
|
|
#define NICK_RESID_V2 129
|
|
#define NICK_RESID_V3 130
|
|
#define NICK_RESID_V4 131
|
|
#define NICK_RESID_V5 132
|
|
#define NICK_RESID 133 // removed opt-space from hashes, too
|
|
|
|
#define OLD_NICK_TYPE 'NICK'
|
|
#define OLD_NICK_RESID1 3001
|
|
#define OLD_NICK_RESID2 3002
|
|
|
|
#define kNickGenOptAsian 1
|
|
#define kNickGenOptLastFirst 2
|
|
|
|
UPtr AliasExpansion(UPtr data, long offset);
|
|
Handle GetTaggedFieldValue (short ab, short nick, PStr tag);
|
|
Handle GetTaggedFieldValueInNotes (Handle notes, PStr tag);
|
|
PStr GetTaggedFieldValueStr (short ab, short nick, PStr tag, PStr value);
|
|
PStr GetTaggedFieldValueStrInNotes (Handle notes, PStr tag, PStr value);
|
|
OSErr SetTaggedFieldValue (short ab, short nick, PStr tag, PStr value, NickFieldSetValueType setValue, short separatorIndex, Boolean *ignored);
|
|
OSErr SetTaggedFieldValueInNotes (Handle notes, PStr tag, Ptr value, long length, NickFieldSetValueType setValue, short separatorIndex, Boolean *ignored);
|
|
OSErr SetNicknameChangeBit (Handle notes, ChangeBitType changeBits, Boolean clearFirst);
|
|
long GetNicknameChangeBits (Handle notes);
|
|
Boolean FindTaggedFieldValueOffsets (short ab, short nick, PStr tag, long *attributeOffset, long *attributeLength, long *valueOffset, long *valueLength);
|
|
OSErr RegenerateAllAliases(Boolean rebuild);
|
|
OSErr BuildAddressHashes(short which);
|
|
Handle GetNicknameData(short which,short index,Boolean wantAddresses,Boolean readFromDisk);
|
|
Handle GetNicknameName(short which,short index);
|
|
PStr GetNicknameNamePStr(short which,short index,PStr theName);
|
|
void GetNicknameViewData(short which,short index,UPtr sViewData);
|
|
long NickHash(UPtr newName);
|
|
long NickHashString (PStr string);
|
|
long NickHashHandle (Handle h);
|
|
long NickHashRawAddresses (Handle addresses,Boolean *group);
|
|
long NickGenerateUniqueID(void);
|
|
OSErr PrepAllAddressBooksForSync (void);
|
|
OSErr PrepAddressBookForSync (short ab);
|
|
OSErr PrepNicknameForSync (short ab, short nick, Str255 idTag, Str255 changeBitsTag);
|
|
OSErr ClearAllAddressBookChangeBits (long mask);
|
|
OSErr ClearAddressBookChangeBits (short ab, long mask);
|
|
OSErr ClearNicknameChangeBits (short ab, short nick, long mask);
|
|
|
|
Boolean IsAnyNickname(PStr name);
|
|
|
|
void CommaList(Handle h);
|
|
#ifdef NEVER
|
|
long CountAliasTotal(NickHandle aliases,long offset);
|
|
long CountAliasAlias(NickHandle aliases,long offset);
|
|
long CountAliasExpansion(NickHandle aliases,long offset);
|
|
#endif
|
|
|
|
#define CountAliasTotal(a,o) (CountAliasAlias(a,o)+1+CountAliasExpansion(a,o)+2)
|
|
#define CountAliasAlias(a,o) ((unsigned)(*(UHandle)(a))[o])
|
|
#define ___nba(a,o) ((o)+CountAliasAlias(a,o)+1)
|
|
#define CountAliasExpansion(a,o) (256*(unsigned)(*(UHandle)(a))[___nba(a,o)] + (unsigned)(*(UHandle)(a))[___nba(a,o)+1])
|
|
|
|
#define ContainsMultipleAddresses(aHandle) ((aHandle) ? ((GetHandleSize (aHandle) > 2) && *(*(aHandle) + **(aHandle) + 2) ? true : false) : false)
|
|
|
|
Boolean SaveIndNickFile(short which,Boolean saveChangeBits);
|
|
OSErr URLStringToSpec (StringHandle urlString, FSSpec *spec);
|
|
short ReplaceNicknameAddresses(short which,UPtr oldName,TextAddrHandle text);
|
|
short ReplaceNicknameNotes(short which,UPtr oldName,TextAddrHandle text);
|
|
static short ReplaceNicknameInfo(short which,UPtr theName,TextAddrHandle text,Boolean fAddresses);
|
|
void RemoveNamedNickname(short which,UPtr name);
|
|
short AddNickToTOCfromName(short which,UPtr name,Handle addresses);
|
|
short AddNickToTOCfromNotes(short which,UPtr name,Handle notes);
|
|
static short AddNickToTOC(short which,UPtr name,Handle hData,Boolean fFromAddress);
|
|
long NickMatchFound(NickStructHandle theNicknames,long hashName,PStr theName,short which);
|
|
long NickAddressMatchFound (NickStructHandle theNicknames, long hashAddress, PStr theAddress, short which);
|
|
void MakeMessNick(MyWindowPtr win,short modifiers);
|
|
#ifdef VCARD
|
|
void MakeCompNick(MyWindowPtr win, FSSpec *vcardSpec);
|
|
#else
|
|
void MakeCompNick(MyWindowPtr win);
|
|
#endif
|
|
void MakeMboxNick(MyWindowPtr win,short modifiers);
|
|
void MakeCboxNick(MyWindowPtr win);
|
|
void FlattenListWith(Handle h,Byte c);
|
|
Boolean SaveAliases(Boolean saveChangeBits);
|
|
OSErr NickUniq(TextAddrHandle addresses,PStr sep,Boolean wantErrors);
|
|
#define MAX_NICKNAME 30
|
|
void MakeNickFromSelection(MyWindowPtr win);
|
|
short GatherCompAddresses(MyWindowPtr win,Handle biglist);
|
|
OSErr AddTextToNick(short which, PStr name, Handle text,Boolean append);
|
|
short ChangeNameOfNick(short which,UPtr oldName,UPtr newName);
|
|
OSErr GatherBoxAddresses(TOCHandle tocH,short modifiers,short from, short to, UHandle *addresses, Boolean caching);
|
|
void ReadNickFileList(FSSpec *pSpec, AddressBookType type, Boolean reread);
|
|
void ReadPluginNickFiles(Boolean reread);
|
|
OSErr RegenerateAliases(short which, Boolean rebuild);
|
|
|
|
void ZapAliasHash(short which);
|
|
void ZapAliases(void);
|
|
void ZapAliasFile(short which);
|
|
void ZapPluginAliases(void);
|
|
void SetAliasDirty(short which);
|
|
|
|
Boolean MaybeApplySplittingAlgorithm (Handle notes);
|
|
PStr ParseFirstLast (PStr realName, PStr firstName, PStr lastName);
|
|
PStr JoinFirstLast (PStr fullName, PStr firstName, PStr lastName);
|
|
PStr ScanNameForSpaces (PStr name);
|
|
void MakeUniqueNickname (short ab, Str31 nickname);
|
|
void SetNickname (short ab, short nick, UPtr name);
|
|
|
|
OSErr NickBackup(FSSpecPtr spec);
|
|
|
|
// Prototypes for using the Nickname Tag Map
|
|
OSErr GetNicknameTagMap (PStr service, PStr server, NicknameTagMapRecPtr tagMapPtr);
|
|
void DisposeNicknameTagMap (NicknameTagMapRecPtr tagMapPtr);
|
|
PStr NicknameTag2ServiceTag (NicknameTagMapRecPtr tagMapPtr, PStr nicknameTag, PStr serviceTag);
|
|
PStr ServiceTag2NicknameTag (NicknameTagMapRecPtr tagMapPtr, PStr serviceTag, PStr nicknameTag);
|
|
PStr GetIndNicknameTag (NicknameTagMapRecPtr tagMapPtr, short index, PStr nicknameTag);
|
|
short FindServiceTagIndex (NicknameTagMapRecPtr tagMapPtr, PStr serviceTag);
|
|
|
|
PrimaryLocationType GetPrimaryLocation (Handle notes);
|
|
|
|
short FindAddressBookType (AddressBookType type);
|
|
OSErr WhiteListAddr(TextAddrHandle addr);
|
|
OSErr WhiteListTS(TOCHandle tocH,short sumNum);
|
|
|
|
BinAddrHandle UniqBinAddr(BinAddrHandle addresses);
|
|
BinAddrHandle SortBinAddr(BinAddrHandle addresses);
|
|
|
|
#ifdef VCARD
|
|
Boolean AnyPersonalNicknames (void);
|
|
#endif
|
|
|
|
#endif
|