gpgme on windows
Florian Schwind
f.schwind at chili-radiology.com
Thu Mar 19 09:14:57 CET 2009
Gordian Klein wrote:
> Hello,
>
> i want to use gpgme with Visual Studio on Windows.
> Therefore i downloaded gpg4win and now succesfully use the
> libgpgme-11.dll from it with VS.
> But i have some trouble with the password callback function.
> It looks like this:
>
> static gpgme_error_t passphrase_cb (void *hook,
> const char *uid_hint,
> const char *passphrase_info,
> int prev_was_bad,
> int fd)
>
> It gets called successfully but i dont know how to write to fd.
> Because unistd.h does not exist on Windows and so write() is not
> avilable i used write from Windows <io.h>. But that did crash the
> programm with this line of code from write.c:
>
> _VALIDATE_CLEAR_OSSERR_RETURN((fh >= 0 && (unsigned)fh <
> (unsigned)_nhandle), EBADF, -1);
> In this case fd was 148 and _nhandle 32.
>
> I also tried converting fd somehow to a FILE but it didnt work neither.
>
> Whats my Problem here? Im stuck..
Try something like this:
int translate_fd(int fd, int for_write) {
#ifdef WIN32
int x;
if (fd == -1) {
return -1;
}
x = _open_osfhandle ((long)fd, for_write ? 1 : 0);
if (x == -1) {
printf("Failed to translate osfhandle %p\n", (void *) fd);
}
return x;
#else /*!WIN32 */
return fd;
#endif
}
http://msdn.microsoft.com/en-us/library/bdts1c9x(VS.71).aspx
> Thank you for any suggestions.
>
> Regards,
> Gordian
Best Regards
Florian
More information about the Gnupg-users
mailing list