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