Fixes for datatype size on amd64.
[crack-attack.git] / enet / packet.c
blob5226550dbc86b91285a3fb2bb65c83786bfafd0a
1 /**
2 @file packet.c
3 @brief ENet packet management functions
4 */
5 #include <string.h>
6 #define ENET_BUILDING_LIB 1
7 #include "enet/enet.h"
9 /** @defgroup Packet ENet packet functions
10 @{
13 /** Creates a packet that may be sent to a peer.
14 @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL.
15 @param dataLength size of the data allocated for this packet
16 @param flags flags for this packet as described for the ENetPacket structure.
17 @returns the packet on success, NULL on failure
19 ENetPacket *
20 enet_packet_create (const void * data, size_t dataLength, enet_uint32 flags)
22 ENetPacket * packet = (ENetPacket *) enet_malloc (sizeof (ENetPacket));
24 packet -> data = (enet_uint8 *) enet_malloc (dataLength);
26 if (data != NULL)
27 memcpy (packet -> data, data, dataLength);
29 packet -> referenceCount = 0;
30 packet -> flags = flags;
31 packet -> dataLength = dataLength;
33 return packet;
36 /** Destroys the packet and deallocates its data.
37 @param packet packet to be destroyed
39 void
40 enet_packet_destroy (ENetPacket * packet)
42 enet_free (packet -> data);
43 enet_free (packet);
46 /** Attempts to resize the data in the packet to length specified in the
47 dataLength parameter
48 @param packet packet to resize
49 @param dataLength new size for the packet data
50 @returns 0 on success, < 0 on failure
52 int
53 enet_packet_resize (ENetPacket * packet, size_t dataLength)
55 enet_uint8 * newData;
57 if (dataLength <= packet -> dataLength)
59 packet -> dataLength = dataLength;
61 return 0;
64 newData = (enet_uint8 *) enet_malloc (dataLength);
65 memcpy (newData, packet -> data, packet -> dataLength);
66 enet_free (packet -> data);
68 packet -> data = newData;
69 packet -> dataLength = dataLength;
71 return 0;
74 /** @} */