#include "gnupgplugin.h" typedef char tkeyuserid[keyuseridsize]; tkeyuserid *keyuserids[2]; int keyuseridcount[2]; void initKeyUserIDs(const int atype) { keyuseridcount[atype]=0; keyuserids[atype]=NULL; } void updateKeyUserIDs(const int atype) { char *pos; gpgResult gpgresult; char keyuserid[keyuseridsize]; char *buffer=NULL; releaseKeyUserIDs(atype); initKeyUserIDs(atype); gpgresult=(atype==publickeyuserid) ?gpgListPublicKeys(&buffer) :gpgListSecretKeys(&buffer); if (gpgresult!=gpgSuccess) { ErrorMessage(txterror, (atype==publickeyuserid ?txtlistpublickeysfailed :txtlistsecretkeysfailed), txtverifyoptions); return; } for (pos=buffer; (pos=getNextPart(keyuserid,pos,txtcrlf)); ) { keyuseridcount[atype]++; keyuserids[atype]=(char(*)[512]) mir_realloc(keyuserids[atype],sizeof(tkeyuserid)*keyuseridcount[atype]); strcpy(keyuserids[atype][keyuseridcount[atype]-1],keyuserid); } fnFALSE(&buffer); } void releaseKeyUserIDs(const int atype) { mir_free(keyuserids[atype]); } char *getKeyUserID(const int atype, const int aindex) { return keyuserids[atype][aindex]; } int getKeyUserIDCount(const int atype) { return keyuseridcount[atype]; }