mirror of https://git.wuffs.org/MWCC
40 lines
1.7 KiB
C++
40 lines
1.7 KiB
C++
#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;
|
|
}
|