Diff for /libelwix/src/pack.c between versions 1.6 and 1.6.2.3

version 1.6, 2014/02/11 01:06:21 version 1.6.2.3, 2014/02/13 15:06:44
Line 100  rpack_destroy(rpack_t ** __restrict rp) Line 100  rpack_destroy(rpack_t ** __restrict rp)
 }  }
   
 /*  /*
    * rpack_attach() - Attach dynamic allocating buffer at packet
    *
    * @rp = raw packet;
    * @len = allocate bytes
    * return: -1 error or 0 ok, should be detached with rpack_detach() 
    *                              before call rpack_destroy() after use!
    */
   int
   rpack_attach(rpack_t * __restrict rp, size_t len)
   {
           if (!rp)
                   return -1;
   
           rp->r_buf = e_malloc(len);
           if (!rp->r_buf) {
                   RPACK_FREE(rp);
                   return -1;
           } else
                   rp->r_len = len;
           rp->r_next = rp->r_buf;
   
           return 0;
   }
   
   /*
    * rpack_resize() - Resize dynamic allocated buffer at packet
    *
    * @rp = raw packet
    * @newlen = resize buffer to bytes
    * return: -1 error or 0 ok, should be detached with rpack_detach() 
    *                              before call rpack_destroy() after use!
    */
   int
   rpack_resize(rpack_t * __restrict rp, size_t newlen)
   {
           void *buf = NULL;
   
           if (!rp)
                   return -1;
   
           buf = e_realloc(rp->r_buf, newlen);
           if (!buf)
                   return -1;
           else {
                   rp->r_buf = buf;
                   rp->r_len = newlen;
           }
   
           if (rp->r_next > (rp->r_buf + rp->r_len))
                   rp->r_next = rp->r_buf;
   
           return 0;
   }
   
   /*
    * rpack_detach() - Detach and free dynamic allocated buffer from packet
    *
    * @rp = raw packet
    * return: none
    */
   void
   rpack_detach(rpack_t * __restrict rp)
   {
           if (!rp)
                   return;
   
           e_free(rp->r_buf);
           RPACK_FREE(rp);
   }
   
   /*
  * rpack_align_and_reserve() - Align & reserve space   * rpack_align_and_reserve() - Align & reserve space
  *   *
  * @rp = raw buffer   * @rp = raw buffer
Line 432  rpack_ruint64(rpack_t * __restrict rp, uint64_t * __re Line 503  rpack_ruint64(rpack_t * __restrict rp, uint64_t * __re
   
         rp->r_next += sizeof(uint64_t);          rp->r_next += sizeof(uint64_t);
         return u;          return u;
   }
   
   /*
    * rpack_next() - Get and set current position
    *
    * @rp = raw packet
    * @after_len = move aligned current position after length
    * return: NULL error or current position
    */
   uint8_t *
   rpack_next(rpack_t * __restrict rp, size_t after_len)
   {
           uint8_t *cur = NULL, *next = NULL;
   
           if (!RPACK_SANITY(rp))
                   return NULL;
           /* No space left */
           if (!(next = rpack_align_and_reserve(rp, after_len)))
                   return NULL;
   
           cur = rp->r_next;
   
           rp->r_next = next + after_len;
           return cur;
   }
   
   /*
    * rpack_rnext() - Get and set raw current position
    *
    * @rp = raw packet
    * @after_len = !=0 move current position after length
    * return: NULL error or raw current position
    */
   uint8_t *
   rpack_rnext(rpack_t * __restrict rp, size_t after_len)
   {
           uint8_t *next = NULL;
   
           if (!RPACK_SANITY(rp))
                   return NULL;
           /* No space left */
           if (after_len + rp->r_next - rp->r_buf > rp->r_len)
                   return NULL;
   
           next = rp->r_next;
   
           rp->r_next += after_len;
           return next;
 }  }

Removed from v.1.6  
changed lines
  Added in v.1.6.2.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>