pgpmergeprefs.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 140 行
C
140 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
pgpMergePrefs.c - merge prefs from one prefref into another, respecting
the "merge" flag
$Id: pgpMergePrefs.c,v 1.6 2002/08/06 20:09:18 dallen Exp $
____________________________________________________________________________*/
#include "pgpClientLib.h"
#include "pgpClientPrefs.h"
#include "pgpNetPrefs.h"
static PGPError
sRemoveMergingPrefs (
PGPPrefRef prefsToAdd,
PGPPrefRef prefs,
PGPUInt32 uIndexFirst,
PGPUInt32 uIndexLast )
{
PGPError err = kPGPError_NoErr;
PGPUInt32 uIndex;
PGPUInt32 uFlagsToAdd;
PGPUInt32 uFlags;
for (uIndex = uIndexFirst; uIndex < uIndexLast; uIndex++)
{
err = PGPGetPrefFlags (prefsToAdd, uIndex, &uFlagsToAdd);
if ((err == kPGPError_PrefNotFound) ||
(err == kPGPError_BadParams))
{
err = kPGPError_NoErr;
continue;
}
else if (IsPGPError (err))
return err;
if (!(uFlagsToAdd & kPGPPrefFlags_Overwrite))
{
/* PGPGetPrefFlags has less overhead than PGPGetPrefData */
err = PGPGetPrefFlags (prefs, uIndex, &uFlags);
if (IsntPGPError (err))
{
PGPRemovePref (prefsToAdd, uIndex);
PGPClearPrefFlags (prefs, uIndex, MAX_PGPUInt32);
PGPSetPrefFlags (prefs, uIndex, uFlagsToAdd);
}
}
}
return err;
}
PGPError PGPclExport
PGPclMergePrefs(
PGPPrefRef prefsToAdd,
PGPPrefRef prefs )
{
PGPError err = kPGPError_NoErr;
if (!PGPPrefRefIsValid (prefsToAdd))
return kPGPError_BadParams;
if (!PGPPrefRefIsValid (prefs))
return kPGPError_BadParams;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefBoolFirst, kPGPPrefBoolLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefNumberFirst, kPGPPrefNumberLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefStringFirst, kPGPPrefStringLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefByteFirst, kPGPPrefByteLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefStructFirst, kPGPPrefStructLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPPrefArrayFirst, kPGPPrefArrayLast); CKERR;
err = PGPAddPrefs (prefsToAdd, prefs);
done:
return err;
}
PGPError PGPclExport
PGPclMergeNetPrefs(
PGPPrefRef prefsToAdd,
PGPPrefRef prefs )
{
PGPError err = kPGPError_NoErr;
if (!PGPPrefRefIsValid (prefsToAdd))
return kPGPError_BadParams;
if (!PGPPrefRefIsValid (prefs))
return kPGPError_BadParams;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefBoolFirst, kPGPNetPrefBoolLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefNumberFirst, kPGPNetPrefNumberLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefStringFirst, kPGPNetPrefStringLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefByteFirst, kPGPNetPrefByteLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefStructFirst, kPGPNetPrefStructLast); CKERR;
err = sRemoveMergingPrefs (prefsToAdd, prefs,
kPGPNetPrefArrayFirst, kPGPNetPrefArrayLast); CKERR;
err = PGPAddPrefs (prefsToAdd, prefs);
done:
return err;
}
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?