ldns_buffer_printf(output, "%02x", (int) *data);
}
- ldns_buffer_write_u8(output, (uint8_t) ' ');
+ ldns_buffer_write_char(output, (uint8_t) ' ');
if (ldns_buffer_reserve(output,
ldns_b64_ntop_calculate_size(pk_size))) {
svcparam_key2buffer_str(output, ldns_read_uint16(data));
for (data += 2, sz -= 2; sz; data += 2, sz -= 2) {
- ldns_buffer_write_u8(output, ',');
+ ldns_buffer_write_char(output, ',');
svcparam_key2buffer_str(output, ldns_read_uint16(data));
}
return ldns_buffer_status(output);
quote = i < *dp;
}
if (quote)
- ldns_buffer_write_u8(output, '"');
+ ldns_buffer_write_char(output, '"');
while (data < eod) {
uint8_t *eot = data + 1 + *data;
return LDNS_STATUS_INVALID_SVCPARAM_VALUE;
if (eod - data < (int)sz)
- ldns_buffer_write_u8(output, ',');
+ ldns_buffer_write_char(output, ',');
for (data += 1; data < eot; data += 1) {
uint8_t ch = *data;
if (isprint(ch) || ch == '\t') {
if (ch == '"' || ch == ',' || ch == '\\')
- ldns_buffer_write_u8(output, '\\');
- ldns_buffer_write_u8(output, ch);
+ ldns_buffer_write_char(output, '\\');
+ ldns_buffer_write_char(output, ch);
} else
ldns_buffer_printf(output, "\\%03u"
, (unsigned)ch);
}
}
if (quote)
- ldns_buffer_write_u8(output, '"');
+ ldns_buffer_write_char(output, '"');
return ldns_buffer_status(output);
}
if (sz % 4 || !inet_ntop(AF_INET, data, str, INET_ADDRSTRLEN))
return LDNS_STATUS_INVALID_SVCPARAM_VALUE;
- ldns_buffer_write_string(output, str);
+ ldns_buffer_write_chars(output, str);
for (data += 4, sz -= 4; sz ; data += 4, sz -= 4 ) {
- ldns_buffer_write_u8(output, ',');
+ ldns_buffer_write_char(output, ',');
if (!inet_ntop(AF_INET, data, str, INET_ADDRSTRLEN))
return LDNS_STATUS_INVALID_SVCPARAM_VALUE;
- ldns_buffer_write_string(output, str);
+ ldns_buffer_write_chars(output, str);
}
return ldns_buffer_status(output);
}
if (sz % 16 || !inet_ntop(AF_INET6, data, str, INET6_ADDRSTRLEN))
return LDNS_STATUS_INVALID_SVCPARAM_VALUE;
- ldns_buffer_write_string(output, str);
+ ldns_buffer_write_chars(output, str);
for (data += 16, sz -= 16; sz ; data += 16, sz -= 16) {
- ldns_buffer_write_u8(output, ',');
+ ldns_buffer_write_char(output, ',');
if (!inet_ntop(AF_INET6, data, str, INET6_ADDRSTRLEN))
return LDNS_STATUS_INVALID_SVCPARAM_VALUE;
- ldns_buffer_write_string(output, str);
+ ldns_buffer_write_chars(output, str);
}
return ldns_buffer_status(output);
}
; /* pass */
if ((quote = dp < eod))
- ldns_buffer_write_u8(output, '"');
+ ldns_buffer_write_char(output, '"');
for (dp = data; dp < eod; dp++) {
uint8_t ch = *dp;
if (isprint(ch) || ch == '\t') {
if (ch == '"' || ch == '\\')
- ldns_buffer_write_u8(output, '\\');
- ldns_buffer_write_u8(output, ch);
+ ldns_buffer_write_char(output, '\\');
+ ldns_buffer_write_char(output, ch);
} else
ldns_buffer_printf(output, "\\%03u", (unsigned)ch);
}
if (quote)
- ldns_buffer_write_u8(output, '"');
+ ldns_buffer_write_char(output, '"');
return ldns_buffer_status(output);
}
return LDNS_STATUS_RDATA_OVERFLOW;
if (dp > data)
- ldns_buffer_write_u8(output, ' ');
+ ldns_buffer_write_char(output, ' ');
if ((st = svcparam_key2buffer_str(output, key)))
return st;
if (val_sz == 0)
continue;
dp += 4;
- ldns_buffer_write_u8(output, '=');
+ ldns_buffer_write_char(output, '=');
switch (key) {
case LDNS_SVCPARAM_KEY_MANDATORY:
st = svcparam_mandatory2buffer_str(output, val_sz, dp);
if (!ldns_buffer_reserve(buffer, 1)) {
return NULL;
}
- ldns_buffer_write_u8(buffer, (uint8_t) '\0');
+ ldns_buffer_write_char(buffer, (uint8_t) '\0');
if (!ldns_buffer_set_capacity(buffer, ldns_buffer_position(buffer))) {
return NULL;
}
if (! ldns_buffer_reserve(buffer, 1)) {
return NULL;
}
- ldns_buffer_write_u8(buffer, 0);
+ ldns_buffer_write_char(buffer, 0);
/* reallocate memory to the size of the string and export */
ldns_buffer_set_capacity(buffer, ldns_buffer_position(buffer));
ldns_buffer_write(buffer, str, strlen(str));
}
+/**
+ * copies the given (null-delimited) string to the current position at the buffer
+ * increasing the capacity if necessary
+ * \param[in] buffer the buffer
+ * \param[in] str the string to write
+ */
+INLINE void
+ldns_buffer_write_chars(ldns_buffer *buffer, const char *str)
+{
+ if (!ldns_buffer_reserve(buffer, strlen(str)))
+ buffer->_status = LDNS_STATUS_MEM_ERR;
+ else
+ ldns_buffer_write_string(buffer, str);
+}
+
+
/**
* writes the given byte of data at the given position in the buffer
* \param[in] buffer the buffer
buffer->_position += sizeof(data);
}
+/**
+ * writes the given byte of data at the current position in the buffer
+ * increasing the capacity if necessary
+ * \param[in] buffer the buffer
+ * \param[in] data the 8 bits to write
+ */
+INLINE void
+ldns_buffer_write_char(ldns_buffer *buffer, uint8_t data)
+{
+ if (!ldns_buffer_reserve(buffer, sizeof(data)))
+ buffer->_status = LDNS_STATUS_MEM_ERR;
+ else
+ ldns_buffer_write_u8(buffer, data);
+}
+
/**
* writes the given 2 byte integer at the given position in the buffer
* \param[in] buffer the buffer