return dst->buf;
}
-size_t server_id_str_buf_unique(struct server_id id, char *buf, size_t buflen)
+char *server_id_str_buf_unique(struct server_id id, struct server_id_buf *dst)
{
- struct server_id_buf idbuf;
- char unique_buf[21]; /* 2^64 is 18446744073709551616, 20 chars */
- size_t idlen, unique_len, needed;
-
- server_id_str_buf(id, &idbuf);
-
- idlen = strlen(idbuf.buf);
- unique_len = snprintf(unique_buf, sizeof(unique_buf), "%"PRIu64,
- id.unique_id);
- needed = idlen + unique_len + 2;
-
- if (buflen >= needed) {
- memcpy(buf, idbuf.buf, idlen);
- buf[idlen] = '/';
- memcpy(buf + idlen + 1, unique_buf, unique_len+1);
- }
-
- return needed;
+ return server_id_str_buf_unique_ex(id, '/', dst);
}
struct server_id server_id_from_string(uint32_t local_vnn,
char *server_id_str_buf_unique_ex(struct server_id id,
char unique_delimiter,
struct server_id_buf *dst);
-size_t server_id_str_buf_unique(struct server_id id, char *buf, size_t buflen);
+char *server_id_str_buf_unique(struct server_id id,
+ struct server_id_buf *dst);
struct server_id server_id_from_string(uint32_t local_vnn,
const char *pid_string);
key = string_term_tdb_data(name);
{
- size_t idlen = server_id_str_buf_unique(db->pid, NULL, 0);
- char idbuf[idlen];
-
- server_id_str_buf_unique(db->pid, idbuf, idlen);
+ struct server_id_buf _buf;
+ char *idbuf = server_id_str_buf_unique(db->pid, &_buf);
+ size_t idlen = strlen(idbuf) + 1;
ret = tdb_append(
tdb, key,
struct server_id server)
{
struct tdb_context *tdb = db->tdb->tdb;
- size_t idbuf_len = server_id_str_buf_unique(server, NULL, 0);
- char idbuf[idbuf_len];
+ struct server_id_buf _buf;
+ char *idbuf = server_id_str_buf_unique(server, &_buf);
TDB_DATA key;
uint8_t *data;
size_t datalen;
int ret;
key = string_term_tdb_data(name);
- server_id_str_buf_unique(server, idbuf, idbuf_len);
ret = tdb_chainlock(tdb, key);
if (ret == -1) {