gpgme idle, Re: gpgme progress meter callback

Jacob Perkins jap1@users.sourceforge.net
Sun Sep 8 18:30:01 2002


Yes, I saw the compiler warning, but I'm new to c and did not know how
to pass a function pointer.

Anyway, how does gpgme tell if it is idle?  I set an idle function with
register_idle, but it never seems to be called.  Is this feature not
completely supported yet, or do I need to do more with the I/O callback
interface?

gpgme_register_idle (idle);
...
void idle(){
	g_print ("idleing\n");
}

On Sat, 2002-09-07 at 18:05, Marcus Brinkmann wrote:
> On Sat, Sep 07, 2002 at 02:46:23PM -0500, Jacob Perkins wrote:
> > I'm confused about how to use the progess meter callback setup in gpgme.
> > How do I construct a GpgmeProgessCb and a HookValue?
> 
>  
> > Here's what I did, and it caused a segfault when I called
> > gpgme_op_generate:
> > 
> > GpgmeProgressCb *progfunc = "progress";	
> > gpgme_set_progress_cb (ctx, *progfunc, key_status);
> 
> Do you need a PROGFUNC variable?  This could be as simple as:
> 
> gpgme_set_progress_cb (ctx, progfunc, key_status);
> 
> Of course passing a string to a pointer to a function pointer is completely
> wrong.  I can not believe that you compiled this with -Wall and did not spot
> the compiler warning "initialization of incompatible pointer type".
>  
> > and then I have:
> > void
> > progress (gpointer status, gchar *what, gint type, gint current, gint
> > total){}
> 
> This is not too bad, but not strictly correct with the types.  The plethora
> of g* types are GTK+ (or GLib) types, but that is not what a GpgmeProgressCb
> is expected to take.  You should use this:
> 
> void progress (void *status, const char *what, int type, int current, int total);
> 
> and nothing else.  If you need a gpointer or gint, you can cast it to that
> later:
> 
> {
>   gpointer gstatus = (gpointer) status;
>   gchar *gwhat = (gchar *) what;
>   ...
> }
> 
> The gchar conversion might trigger a warning about dropping the const
> attribute.
> 
> Thanks,
> Marcus
> 
> 
> -- 
> `Rhubarb is no Egyptian god.' GNU      http://www.gnu.org    marcus@gnu.org
> Marcus Brinkmann              The Hurd http://www.gnu.org/software/hurd/
> Marcus.Brinkmann@ruhr-uni-bochum.de
> http://www.marcus-brinkmann.de/
> 
> _______________________________________________
> Gnupg-devel mailing list
> Gnupg-devel@gnupg.org
> http://lists.gnupg.org/mailman/listinfo/gnupg-devel
-- 
pub  1024D/57DDD9E3 2002-05-24 Jacob (Direct to Home)
<jap1@rig.dyndns.ws>
Key fingerprint = 1E02 A5FD 8162 4322 C674  6E67 05EB 30F1 57DD D9E3