return buff;
}
-int32_t write_mpbin(MP_INT *a, uint8_t *buffer, int32_t buflen)
-{
- char *hb = write_mpstring(a);
- int32_t len;
- hex_decode(buffer, buflen, &len, hb, True);
- free(hb);
- return len;
-}
-
#define DEFINE_SETFDFLAG(fn,FL,FLAG) \
void fn(int fd) { \
int r=fcntl(fd, F_GET##FL); \
return buf->start;
}
+void priomsg_new(struct priomsg *pm, int32_t maxlen)
+{
+ buffer_new(&pm->m, maxlen);
+ pm->prio = INT_MIN;
+}
+void priomsg_reset(struct priomsg *pm)
+{
+ buffer_init(&pm->m, 0);
+ pm->prio = INT_MIN;
+}
+bool_t priomsg_update_p(struct priomsg *pm, int prio)
+{
+ if (!pm) return False;
+ if (prio <= pm->prio) return False;
+ buffer_init(&pm->m, 0);
+ pm->prio = prio;
+ return True;
+}
+const char *priomsg_getmessage(const struct priomsg *pm, const char *defmsg)
+{
+ if (pm->prio >= INT_MIN)
+ return truncmsg_terminate(&pm->m);
+ else
+ return defmsg;
+}
+
+bool_t priomsg_update_fixed(struct priomsg *pm, int prio, const char *m) {
+ if (!priomsg_update_p(pm, prio)) return False;
+ truncmsg_add_string(&pm->m, m);
+ return True;
+}
+
void buffer_new(struct buffer_if *buf, int32_t len)
{
buf->free=True;
buf_append_uint32(buf,our_index);
buf_append_uint32(buf,LABEL_NAK);
if (logwhy)
- Message(M_INFO,"%s: %08"PRIx32"<-%08"PRIx32": %08"PRIx32":"
- " %s; sending NAK\n",
+ Message(M_INFO,"%s: sending NAK for"
+ " %08"PRIx32" %08"PRIx32"<-%08"PRIx32":"
+ " %s\n",
comm_addr_to_string(dest),
- our_index, their_index, msgtype, logwhy);
+ msgtype, our_index, their_index, logwhy);
dest->comm->sendmsg(dest->comm->st, buf, dest, 0);
}
return 0;
}
+void pathprefix_template_init(struct pathprefix_template *out,
+ const char *prefix, int maxsuffix)
+{
+ size_t l=strlen(prefix);
+ NEW_ARY(out->buffer,l+maxsuffix+1);
+ strcpy(out->buffer,prefix);
+ out->write_here=out->buffer+l;
+}
+
enum async_linebuf_result
async_linebuf_read(struct pollfd *pfd, struct buffer_if *buf,
const char **emsg_out)