diff options
| -rw-r--r-- | gpgme/ChangeLog | 6 | ||||
| -rw-r--r-- | gpgme/trustlist.c | 369 | 
2 files changed, 206 insertions, 169 deletions
| diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 8d802245..c3c522c0 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,9 @@ +2002-01-15  Marcus Brinkmann  <[email protected]> + +	* trustlist.c: Various source clean ups. +	(my_isdigit): Removed. +	(gpgme_op_trustlist_end): New function. +  2002-01-13  Marcus Brinkmann  <[email protected]>  	* gpgme.c: Various source clean ups, like renaming C to CTX where diff --git a/gpgme/trustlist.c b/gpgme/trustlist.c index 664962a4..11acbf54 100644 --- a/gpgme/trustlist.c +++ b/gpgme/trustlist.c @@ -1,6 +1,6 @@  /* trustlist.c -  key listing   *	Copyright (C) 2000 Werner Koch (dd9jn) - *      Copyright (C) 2001 g10 Code GmbH + *      Copyright (C) 2001, 2002 g10 Code GmbH   *   * This file is part of GPGME.   * @@ -30,46 +30,44 @@  #include "context.h"  #include "ops.h" -#define my_isdigit(a) ( (a) >='0' && (a) <= '9' ) - -struct gpgme_trust_item_s { -    int level; -    char keyid[16+1]; -    int type;    -    char ot[2]; -    char val[2]; -    char *name; +struct gpgme_trust_item_s +{ +  int level; +  char keyid[16+1]; +  int type;    +  char ot[2]; +  char val[2]; +  char *name;  };  static GpgmeTrustItem  trust_item_new (void)  { -    GpgmeTrustItem item; +  GpgmeTrustItem item; -    item = xtrycalloc (1, sizeof *item); -    return item; +  item = xtrycalloc (1, sizeof *item); +  return item;  } -  static void -trustlist_status_handler ( GpgmeCtx ctx, GpgStatusCode code, char *args ) +trustlist_status_handler (GpgmeCtx ctx, GpgStatusCode code, char *args)  { -    if ( ctx->out_of_core ) -        return; +  if (ctx->out_of_core) +    return; -    switch (code) { -      case STATUS_EOF: -        break; +  switch (code) +    { +    case STATUS_EOF: +      break; -      default: -        break; +    default: +      break;      }  } -  /*    * This handler is used to parse the output of --list-trust-path:   * Format: @@ -84,76 +82,83 @@ trustlist_status_handler ( GpgmeCtx ctx, GpgStatusCode code, char *args )   * NAME ist the username and only printed on U lines   */  static void -trustlist_colon_handler ( GpgmeCtx ctx, char *line ) +trustlist_colon_handler (GpgmeCtx ctx, char *line)  { -    char *p, *pend; -    int field = 0; -    GpgmeTrustItem item = NULL; -    struct trust_queue_item_s *q, *q2; - -    if ( ctx->out_of_core ) -        return; -    if (!line) -        return; /* EOF */ - -    for (p = line; p; p = pend) { -        field++; -        pend = strchr (p, ':'); -        if (pend)  -            *pend++ = 0; - -        switch (field) { -          case 1: /* level */ -            q = xtrymalloc ( sizeof *q ); -            if ( !q ) { -                ctx->out_of_core = 1; -                return; +  char *p, *pend; +  int field = 0; +  GpgmeTrustItem item = NULL; +  struct trust_queue_item_s *q, *q2; + +  if (ctx->out_of_core) +    return; +  if (!line) +    return; /* EOF */ + +  for (p = line; p; p = pend) +    { +      field++; +      pend = strchr (p, ':'); +      if (pend)  +	*pend++ = 0; + +      switch (field) +	{ +	case 1: /* level */ +	  q = xtrymalloc (sizeof *q); +	  if (!q) +	    { +	      ctx->out_of_core = 1; +	      return;              } -            q->next = NULL; -            q->item = item = trust_item_new (); -            if (!q->item) { -                xfree (q); -                ctx->out_of_core = 1; -                return; +	  q->next = NULL; +	  q->item = item = trust_item_new (); +	  if (!q->item) +	    { +	      xfree (q); +	      ctx->out_of_core = 1; +	      return;              } -            /* fixme: lock queue, keep a tail pointer */ -            if ( !(q2 = ctx->trust_queue) ) -                ctx->trust_queue = q; -            else { -                for ( ; q2->next; q2 = q2->next ) -                    ; -                q2->next = q; +	  /* fixme: lock queue, keep a tail pointer */ +	  q2 = ctx->trust_queue; +	  if (!q2) +	    ctx->trust_queue = q; +	  else +	    { +	      while (q2->next) +		q2 = q2->next; +	      q2->next = q;              } -            /* fixme: unlock queue */ -            item->level = atoi (p); -            break; -          case 2: /* long keyid */ -            if ( strlen (p) == DIM(item->keyid)-1 ) -                strcpy (item->keyid, p); -            break; -          case 3: /* type */ -            item->type = *p == 'K'? 1 : *p == 'U'? 2 : 0; -            break; -          case 5: /* owner trust */ -            item->ot[0] = *p; -            item->ot[1] = 0; -            break; -          case 6: /* validity */ -            item->val[0] = *p; -            item->val[1] = 0; -            break; -          case 9: /* user ID */ -            item->name = xtrystrdup (p); -            if (!item->name) -                ctx->out_of_core = 1; -            break; +	  /* fixme: unlock queue */ +	  item->level = atoi (p); +	  break; +	case 2: /* long keyid */ +	  if (strlen (p) == DIM(item->keyid) - 1) +	    strcpy (item->keyid, p); +	  break; +	case 3: /* type */ +	  item->type = *p == 'K'? 1 : *p == 'U'? 2 : 0; +	  break; +	case 5: /* owner trust */ +	  item->ot[0] = *p; +	  item->ot[1] = 0; +	  break; +	case 6: /* validity */ +	  item->val[0] = *p; +	  item->val[1] = 0; +	  break; +	case 9: /* user ID */ +	  item->name = xtrystrdup (p); +	  if (!item->name) +	    ctx->out_of_core = 1; +	  break;          }      } -    if (field) -        ctx->key_cond = 1; +  if (field) +    ctx->key_cond = 1;  } +  GpgmeError  gpgme_op_trustlist_start (GpgmeCtx ctx, const char *pattern, int max_level)  { @@ -173,7 +178,7 @@ gpgme_op_trustlist_start (GpgmeCtx ctx, const char *pattern, int max_level)        _gpgme_engine_release (ctx->engine);         ctx->engine = NULL;      } -     +    err = _gpgme_engine_new (ctx->use_cms ? GPGME_PROTOCOL_CMS  			   : GPGME_PROTOCOL_OpenPGP, &ctx->engine);    if (err) @@ -191,114 +196,140 @@ gpgme_op_trustlist_start (GpgmeCtx ctx, const char *pattern, int max_level)      err = _gpgme_engine_start (ctx->engine, ctx);   leave: -  if (err) { -    ctx->pending = 0;  -    _gpgme_engine_release (ctx->engine); -    ctx->engine = NULL; -  } +  if (err) +    { +      ctx->pending = 0;  +      _gpgme_engine_release (ctx->engine); +      ctx->engine = NULL; +    }    return err;  }  GpgmeError -gpgme_op_trustlist_next ( GpgmeCtx c, GpgmeTrustItem *r_item ) +gpgme_op_trustlist_next (GpgmeCtx c, GpgmeTrustItem *r_item)  { -    struct trust_queue_item_s *q; - -    if (!r_item) -        return mk_error (Invalid_Value); -    *r_item = NULL; -    if (!c) -        return mk_error (Invalid_Value); -    if ( !c->pending ) -        return mk_error (No_Request); -    if ( c->out_of_core ) -        return mk_error (Out_Of_Core); - -    if ( !c->trust_queue ) { -        _gpgme_wait_on_condition (c, 1, &c->key_cond ); -        if ( c->out_of_core ) -            return mk_error (Out_Of_Core); -        if ( !c->key_cond ) -            return mk_error (EOF); -        c->key_cond = 0;  -        assert ( c->trust_queue ); +  struct trust_queue_item_s *q; + +  if (!r_item) +    return mk_error (Invalid_Value); +  *r_item = NULL; +  if (!c) +    return mk_error (Invalid_Value); +  if (!c->pending) +    return mk_error (No_Request); +  if (c->out_of_core) +    return mk_error (Out_Of_Core); + +  if (!c->trust_queue) +    { +      _gpgme_wait_on_condition (c, 1, &c->key_cond); +      if (c->out_of_core) +	return mk_error (Out_Of_Core); +      if (!c->key_cond) +	return mk_error (EOF); +      c->key_cond = 0;  +      assert (c->trust_queue);      } -    q = c->trust_queue; -    c->trust_queue = q->next; +  q = c->trust_queue; +  c->trust_queue = q->next; -    *r_item = q->item; -    xfree (q); -    return 0; +  *r_item = q->item; +  xfree (q); +  return 0; +} + + +/** + * gpgme_op_trustlist_end: + * @c: Context + * + * Ends the trustlist operation and allows to use the context for some + * other operation next. + **/ +GpgmeError +gpgme_op_trustlist_end (GpgmeCtx ctx) +{ +  if (!ctx) +    return mk_error (Invalid_Value); +  if (!ctx->pending) +    return mk_error (No_Request); +  if (ctx->out_of_core) +    return mk_error (Out_Of_Core); + +  ctx->pending = 0; +  return 0;  }  void -gpgme_trust_item_release ( GpgmeTrustItem item ) +gpgme_trust_item_release (GpgmeTrustItem item)  { -    if (!item) -        return; -    xfree (item->name); -    xfree (item); +  if (!item) +    return; +  xfree (item->name); +  xfree (item);  }  const char * -gpgme_trust_item_get_string_attr ( GpgmeTrustItem item, GpgmeAttr what, -                                   const void *reserved, int idx ) +gpgme_trust_item_get_string_attr (GpgmeTrustItem item, GpgmeAttr what, +				  const void *reserved, int idx)  { -    const char *val = NULL; - -    if (!item) -        return NULL; -    if (reserved) -        return NULL; -    if (idx) -        return NULL; - -    switch (what) { -      case GPGME_ATTR_KEYID: -        val = item->keyid; -        break; -      case GPGME_ATTR_OTRUST:   -        val = item->ot; -        break; -      case GPGME_ATTR_VALIDITY: -        val = item->val; -        break; -      case GPGME_ATTR_USERID:   -        val = item->name; -        break; -      default: -        break; +  const char *val = NULL; + +  if (!item) +    return NULL; +  if (reserved) +    return NULL; +  if (idx) +    return NULL; + +  switch (what) +    { +    case GPGME_ATTR_KEYID: +      val = item->keyid; +      break; +    case GPGME_ATTR_OTRUST:   +      val = item->ot; +      break; +    case GPGME_ATTR_VALIDITY: +      val = item->val; +      break; +    case GPGME_ATTR_USERID:   +      val = item->name; +      break; +    default: +      break;      } -    return val; +  return val;  }  int -gpgme_trust_item_get_int_attr ( GpgmeTrustItem item, GpgmeAttr what, -                                const void *reserved, int idx ) +gpgme_trust_item_get_int_attr (GpgmeTrustItem item, GpgmeAttr what, +			       const void *reserved, int idx)  { -    int val = 0; - -    if (!item) -        return 0; -    if (reserved) -        return 0; -    if (idx) -        return 0; - -    switch (what) { -      case GPGME_ATTR_LEVEL:     -        val = item->level; -        break; -      case GPGME_ATTR_TYPE:     -        val = item->type; -        break; -      default: -        break; +  int val = 0; +   +  if (!item) +    return 0; +  if (reserved) +    return 0; +  if (idx) +    return 0; + +  switch (what) +    { +    case GPGME_ATTR_LEVEL:     +      val = item->level; +      break; +    case GPGME_ATTR_TYPE:     +      val = item->type; +      break; +    default: +      break;      } -    return val; +  return val;  } | 
