/* This function is blocking and it writes from the socket exactly 'count' * number of bytes */ int ipc_write(int fd, void *buf, size_t count) { int rc; if ((rc = bio_write(fd, buf, count))) rg_error_f(LERR, "%d: failed write() %m", fd); return rc; }
void rg_error_register(int sequence, rg_error_level_t level, rg_error_func_t func, void *data) { rg_error_notify_t **n, *next; check_inited(); for (n = &rg_error_notify; *n && (*n)->sequence<=sequence; n = &(*n)->next); next = *n; if (!(*n = (rg_error_notify_t *)malloc(sizeof(**n)))) { rg_error_f(LEXIT, "failed malloc"); return; } memset(*n, 0, sizeof(**n)); (*n)->func = func; (*n)->data = data; (*n)->level = level; (*n)->sequence = sequence; (*n)->next = next; }