MWCC/command_line/PluginLib/Src/Internal/CWSecretPluginCallbacks.cpp

40 lines
1.7 KiB
C++
Raw Normal View History

2022-10-14 22:15:32 +00:00
#include "plugin_internal.h"
static Boolean ValidateContext(CWPluginContext context) {
return context && (context->shellSignature == CWFOURCHAR('C','W','I','E'));
}
typedef CWResult (*cbSecretAttachHandleType)(CWPluginContext, Handle, CWMemHandle *);
typedef CWResult (*cbSecretDetachHandleType)(CWPluginContext, CWMemHandle, Handle *);
typedef CWResult (*cbSecretPeekHandleType)(CWPluginContext, CWMemHandle, Handle *);
typedef CWResult (*cbSecretGetNamedPreferencesType)(CWPluginContext, const char *, Handle *);
CW_CALLBACK CWSecretAttachHandle(CWPluginContext context, Handle handle, CWMemHandle *memHandle) {
if (!ValidateContext(context))
return cwErrInvalidParameter;
return ((cbSecretAttachHandleType) context->callbacks->cbInternal[0])(context, handle, memHandle);
}
CW_CALLBACK CWSecretDetachHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle) {
if (!ValidateContext(context))
return cwErrInvalidParameter;
return ((cbSecretDetachHandleType) context->callbacks->cbInternal[1])(context, memHandle, handle);
}
CW_CALLBACK CWSecretPeekHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle) {
if (!ValidateContext(context))
return cwErrInvalidParameter;
return ((cbSecretPeekHandleType) context->callbacks->cbInternal[2])(context, memHandle, handle);
}
CW_CALLBACK CWSecretGetNamedPreferences(CWPluginContext context, const char *prefsname, Handle *prefsdata) {
if (!prefsdata)
return cwErrInvalidParameter;
CWMemHandle memHandle;
CWResult res = CWGetNamedPreferences(context, prefsname, &memHandle);
if (!res)
res = CWSecretDetachHandle(context, memHandle, prefsdata);
return res;
}