00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #define KATE_INTERNAL
00011 #include "kate_internal.h"
00012 
00013 #ifdef HAVE_STDLIB_H
00014 #include <stdlib.h>
00015 #endif
00016 #include <string.h>
00017 #include "kate/kate.h"
00018 
00030 int kate_packet_wrap(kate_packet *kp,size_t nbytes,const void *data)
00031 {
00032   if (!kp) return KATE_E_INVALID_PARAMETER;
00033   if (!data && nbytes>0) return KATE_E_INVALID_PARAMETER;
00034 
00035   kp->nbytes=nbytes;
00036   kp->data=(void*)data;
00037   
00038 
00039 
00040 
00041   return 0;
00042 }
00043 
00055 int kate_packet_init(kate_packet *kp,size_t nbytes,const void *data)
00056 {
00057   void *dup_data;
00058 
00059   if (!kp) return KATE_E_INVALID_PARAMETER;
00060   if (!data && nbytes>0) return KATE_E_INVALID_PARAMETER;
00061 
00062   dup_data=kate_malloc(nbytes);
00063   if (!dup_data) return KATE_E_OUT_OF_MEMORY;
00064   if (data) memcpy(dup_data,data,nbytes);
00065 
00066   return kate_packet_wrap(kp,nbytes,dup_data);
00067 }
00068 
00076 int kate_packet_clear(kate_packet *kp)
00077 {
00078   if (!kp) return KATE_E_INVALID_PARAMETER;
00079 
00080   if (kp->data) {
00081     kate_free(kp->data);
00082     kp->data=NULL;
00083   }
00084 
00085   return 0;
00086 }
00087