#include "dnssd_ipc.h"
void put_flags(const DNSServiceFlags flags, char **ptr)
{
memcpy(*ptr, &flags, sizeof(DNSServiceFlags));
*ptr += sizeof(flags);
}
DNSServiceFlags get_flags(char **ptr)
{
DNSServiceFlags flags;
flags = *(DNSServiceFlags *)*ptr;
*ptr += sizeof(DNSServiceFlags);
return flags;
}
void put_long(const uint32_t l, char **ptr)
{
*(uint32_t *)(*ptr) = l;
*ptr += sizeof(uint32_t);
}
uint32_t get_long(char **ptr)
{
uint32_t l;
l = *(uint32_t *)(*ptr);
*ptr += sizeof(uint32_t);
return l;
}
void put_error_code(const DNSServiceErrorType error, char **ptr)
{
memcpy(*ptr, &error, sizeof(error));
*ptr += sizeof(DNSServiceErrorType);
}
DNSServiceErrorType get_error_code(char **ptr)
{
DNSServiceErrorType error;
error = *(DNSServiceErrorType *)(*ptr);
*ptr += sizeof(DNSServiceErrorType);
return error;
}
void put_short(const uint16_t s, char **ptr)
{
*(uint16_t *)(*ptr) = s;
*ptr += sizeof(uint16_t);
}
uint16_t get_short(char **ptr)
{
uint16_t s;
s = *(uint16_t *)(*ptr);
*ptr += sizeof(uint16_t);
return s;
}
int put_string(const char *str, char **ptr)
{
if (!str) str = "";
strcpy(*ptr, str);
*ptr += strlen(str) + 1;
return 0;
}
int get_string(char **ptr, char *buffer, int buflen)
{
int overrun;
overrun = (int)strlen(*ptr) < buflen ? 0 : -1;
strncpy(buffer, *ptr, buflen - 1);
buffer[buflen - 1] = '\0';
*ptr += strlen(buffer) + 1;
return overrun;
}
void put_rdata(const int rdlen, const char *rdata, char **ptr)
{
memcpy(*ptr, rdata, rdlen);
*ptr += rdlen;
}
char *get_rdata(char **ptr, int rdlen)
{
char *rd;
rd = *ptr;
*ptr += rdlen;
return rd;
}