[BACK]Return to ber.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ldap

Diff for /src/usr.bin/ldap/Attic/ber.c between version 1.7 and 1.8

version 1.7, 2018/07/01 20:03:48 version 1.8, 2018/07/03 18:49:10
Line 631 
Line 631 
         va_list                  ap;          va_list                  ap;
         int                     *d, level = -1;          int                     *d, level = -1;
         unsigned long           *t;          unsigned long           *t;
         long long               *i;          long long               *i, l;
         void                    **ptr;          void                    **ptr;
         size_t                  *len, ret = 0, n = strlen(fmt);          size_t                  *len, ret = 0, n = strlen(fmt);
         char                    **s;          char                    **s;
           off_t                   *pos;
         struct ber_oid          *o;          struct ber_oid          *o;
         struct ber_element      *parent[_MAX_SEQ], **e;          struct ber_element      *parent[_MAX_SEQ], **e;
   
Line 656 
Line 657 
                                 goto fail;                                  goto fail;
                         ret++;                          ret++;
                         break;                          break;
                   case 'd':
                           d = va_arg(ap, int *);
                           if (ber_get_integer(ber, &l) == -1)
                                   goto fail;
                           *d = l;
                           ret++;
                           break;
                 case 'e':                  case 'e':
                         e = va_arg(ap, struct ber_element **);                          e = va_arg(ap, struct ber_element **);
                         *e = ber;                          *e = ber;
Line 712 
Line 720 
                                 goto fail;                                  goto fail;
                         ret++;                          ret++;
                         break;                          break;
                   case 'p':
                           pos = va_arg(ap, off_t *);
                           *pos = ber_getpos(ber);
                           ret++;
                           continue;
                 case '{':                  case '{':
                 case '(':                  case '(':
                         if (ber->be_encoding != BER_TYPE_SEQUENCE &&                          if (ber->be_encoding != BER_TYPE_SEQUENCE &&
Line 821 
Line 834 
         return root;          return root;
 }  }
   
   off_t
   ber_getpos(struct ber_element *elm)
   {
           return elm->be_offs;
   }
   
 void  void
 ber_free_element(struct ber_element *root)  ber_free_element(struct ber_element *root)
 {  {
Line 893 
Line 912 
         uint8_t u;          uint8_t u;
   
         ber_dump_header(ber, root);          ber_dump_header(ber, root);
           if (root->be_cb)
                   root->be_cb(root->be_cbarg, ber->br_wptr - ber->br_wbuf);
   
         switch (root->be_encoding) {          switch (root->be_encoding) {
         case BER_TYPE_BOOLEAN:          case BER_TYPE_BOOLEAN:
Line 1101 
Line 1122 
   
         elm->be_type = type;          elm->be_type = type;
         elm->be_len = len;          elm->be_len = len;
           elm->be_offs = ber->br_offs;    /* element position within stream */
         elm->be_class = class;          elm->be_class = class;
   
         if (elm->be_encoding == 0) {          if (elm->be_encoding == 0) {
Line 1232 
Line 1254 
 }  }
   
 void  void
   ber_set_writecallback(struct ber_element *elm, void (*cb)(void *, size_t),
       void *arg)
   {
           elm->be_cb = cb;
           elm->be_cbarg = arg;
   }
   
   
   void
 ber_free(struct ber *b)  ber_free(struct ber *b)
 {  {
         free(b->br_wbuf);          free(b->br_wbuf);
Line 1258 
Line 1289 
                 b += r;                  b += r;
                 remain -= r;                  remain -= r;
         }          }
         return (b - (u_char *)buf);          r = b - (u_char *)buf;
           ber->br_offs += r;
           return r;
   }
   
   int
   ber_oid_cmp(struct ber_oid *a, struct ber_oid *b)
   {
           size_t   i;
           for (i = 0; i < BER_MAX_OID_LEN; i++) {
                   if (a->bo_id[i] != 0) {
                           if (a->bo_id[i] == b->bo_id[i])
                                   continue;
                           else if (a->bo_id[i] < b->bo_id[i]) {
                                   /* b is a successor of a */
                                   return (1);
                           } else {
                                   /* b is a predecessor of a */
                                   return (-1);
                           }
                   } else if (b->bo_id[i] != 0) {
                           /* b is larger, but a child of a */
                           return (2);
                   } else
                           break;
           }
   
           /* b and a are identical */
           return (0);
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8