-/* $Id$
-
-This file is part of gldbg
-Copyright © 2010 Mikko Rasa, Mikkosoft Productions
-Distributed under the GPL
-*/
-
#include <stdlib.h>
#include <string.h>
#include <sys/uio.h>
void packet_write_data(GlPacket *pkt, const void *data, unsigned size)
{
- if(data)
+ if(!data)
+ packet_write_int(pkt, 0);
+ else if((unsigned long)data<0x100000)
+ {
+ packet_write_int(pkt, ~0);
+ packet_write_pointer(pkt, data);
+ }
+ else
{
GlOutPacket *out = &pkt->out;
++out->vec;
out->vec->iov_base = out->ptr;
}
- else
- packet_write_int(pkt, 0);
}
void packet_write_string(GlPacket *pkt, const char *s)
int vlen;
packet_read_int(pkt, &vlen);
- if(vlen)
+ if(vlen==~0)
+ packet_read_pointer(pkt, v);
+ else if(vlen)
+ {
*v = in->ptr;
+ in->ptr += vlen;
+ in->chunk -= vlen;
+ in->length -= vlen;
+ }
else
*v = NULL;
- in->ptr += vlen;
- in->chunk -= vlen;
- in->length -= vlen;
}
void packet_read_string(GlPacket *pkt, const char **v)