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.
 
 
 
 
 
 

120 lines
4.6 KiB

#include <faxutil.h>
//*********************************************************************************
//* Personal Profile Functions
//*********************************************************************************
//*********************************************************************************
//* Name: CopyPersonalProfile()
//* Author: Ronen Barenboim
//* Date:
//*********************************************************************************
//* DESCRIPTION:
//* Creates a new copy of a FAX_PERSONAL_PROFILEW structure.
//* It duplicates all the strings.
//*
//* PARAMETERS:
//* [IN] PFAX_PERSONAL_PROFILE lpDstProfile
//* A pointer to destination personal profile structure.
//*
//* [OUT] LPCFAX_PERSONAL_PROFILE lpcSrcProfile.
//* A pointer to the source personal profile to copy.
//*
//* RETURN VALUE:
//* TRUE
//* If the operation succeeded.
//* FALSE
//* If the operation failed.
//*********************************************************************************
BOOL CopyPersonalProfile(
PFAX_PERSONAL_PROFILE lpDstProfile,
LPCFAX_PERSONAL_PROFILE lpcSrcProfile
)
{
STRING_PAIR pairs[] =
{
{ lpcSrcProfile->lptstrName, &lpDstProfile->lptstrName},
{ lpcSrcProfile->lptstrFaxNumber, &lpDstProfile->lptstrFaxNumber},
{ lpcSrcProfile->lptstrCompany, &lpDstProfile->lptstrCompany},
{ lpcSrcProfile->lptstrStreetAddress, &lpDstProfile->lptstrStreetAddress},
{ lpcSrcProfile->lptstrCity, &lpDstProfile->lptstrCity},
{ lpcSrcProfile->lptstrState, &lpDstProfile->lptstrState},
{ lpcSrcProfile->lptstrZip, &lpDstProfile->lptstrZip},
{ lpcSrcProfile->lptstrCountry, &lpDstProfile->lptstrCountry},
{ lpcSrcProfile->lptstrTitle, &lpDstProfile->lptstrTitle},
{ lpcSrcProfile->lptstrDepartment, &lpDstProfile->lptstrDepartment},
{ lpcSrcProfile->lptstrOfficeLocation, &lpDstProfile->lptstrOfficeLocation},
{ lpcSrcProfile->lptstrHomePhone, &lpDstProfile->lptstrHomePhone},
{ lpcSrcProfile->lptstrOfficePhone, &lpDstProfile->lptstrOfficePhone},
{ lpcSrcProfile->lptstrEmail, &lpDstProfile->lptstrEmail},
{ lpcSrcProfile->lptstrBillingCode, &lpDstProfile->lptstrBillingCode},
{ lpcSrcProfile->lptstrTSID, &lpDstProfile->lptstrTSID}
};
int nRes;
DEBUG_FUNCTION_NAME(TEXT("CopyPersonalProfile"));
Assert(lpDstProfile);
Assert(lpcSrcProfile);
nRes=MultiStringDup(pairs, sizeof(pairs)/sizeof(STRING_PAIR));
if (nRes!=0) {
// MultiStringDup takes care of freeing the memory for the pairs for which the copy succeeded
DebugPrintEx(DEBUG_ERR,TEXT("Failed to copy string with index %d"),nRes-1);
return FALSE;
}
lpDstProfile->dwSizeOfStruct=lpcSrcProfile->dwSizeOfStruct;
return TRUE;
}
//*********************************************************************************
//* Name: FreePersonalProfile()
//* Author: Ronen Barenboim
//* Date:
//*********************************************************************************
//* DESCRIPTION:
//* Frees the contents of a FAX_PERSONAL_PROFILEW structure.
//* Deallocates the strucutre itself if required.
//* PARAMETERS:
//* [IN] PFAX_PERSONAL_PROFILE lpProfile
//* The structure whose content is to be freed.
//*
//* [IN] BOOL bDestroy
//* If this parameter is TRUE the function will
//* deallocate the structure itself.
//*
//* RETURN VALUE:
//* VOID
//*********************************************************************************
void FreePersonalProfile (
PFAX_PERSONAL_PROFILE lpProfile,
BOOL bDestroy
)
{
DEBUG_FUNCTION_NAME(TEXT("FreePersonalProfile"));
Assert(lpProfile);
MemFree(lpProfile->lptstrName);
MemFree(lpProfile->lptstrFaxNumber);
MemFree(lpProfile->lptstrCompany);
MemFree(lpProfile->lptstrStreetAddress);
MemFree(lpProfile->lptstrCity);
MemFree(lpProfile->lptstrState);
MemFree(lpProfile->lptstrZip);
MemFree(lpProfile->lptstrCountry);
MemFree(lpProfile->lptstrTitle);
MemFree(lpProfile->lptstrDepartment);
MemFree(lpProfile->lptstrOfficeLocation);
MemFree(lpProfile->lptstrHomePhone);
MemFree(lpProfile->lptstrOfficePhone);
MemFree(lpProfile->lptstrEmail);
MemFree(lpProfile->lptstrBillingCode);
MemFree(lpProfile->lptstrTSID);
if (bDestroy) {
MemFree(lpProfile);
}
}