2002-01-15 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 16 Jan 2002 00:44:11 +0000 (00:44 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 16 Jan 2002 00:44:11 +0000 (00:44 +0000)
* trustlist.c: Various source clean ups.
(my_isdigit): Removed.
(gpgme_op_trustlist_end): New function.

gpgme/ChangeLog
gpgme/trustlist.c

index 8d80224..c3c522c 100644 (file)
@@ -1,3 +1,9 @@
+2002-01-15  Marcus Brinkmann  <marcus@g10code.de>
+
+       * trustlist.c: Various source clean ups.
+       (my_isdigit): Removed.
+       (gpgme_op_trustlist_end): New function.
+
 2002-01-13  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpgme.c: Various source clean ups, like renaming C to CTX where
index 664962a..11acbf5 100644 (file)
@@ -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.
  *
 #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;
 }