Пример #1
0
static int 
_conn_bstring_readhandler(struct conn_t *conn, void *ctx) {
  bstring data = (bstring)ctx;
  int ret;
  ballocmin(data, data->slen + 128);

  ret = safe_read(conn->sock, 
		  data->data + data->slen,
		  data->mlen - data->slen);

  if (ret > 0) {
#if(_debug_)
    log_dbg("bstring_read: %d bytes", ret);
#endif
    data->slen += ret;
  } else {
#if(_debug_)
    log_dbg("socket closed!");
    log_dbg("<== [%s]", data->data);
#endif
    conn_finish(conn);
  }

  return ret;
}
Пример #2
0
int bblk_fromfd(bstring s, int fd, int len)
{
	int blen = len > 0 ? len : 128;
	int rd, rlen = 0;
	while (1) {
		ballocmin(s, s->slen + blen);
		rd = safe_read(fd, s->data + s->slen, blen);
		if (rd <= 0)
			break;
		s->slen += rd;
		rlen += rd;
		if (len > 0 && rlen == len)
			break;
	}
	return rlen;
}
Пример #3
0
inline int normalize_path(bstring target)
{
    ballocmin(target, PATH_MAX);
    char *path_buf = calloc(PATH_MAX+1, 1);

    // Some platforms (OSX!) don't allocated for you, so we have to
    char *normalized = realpath((const char *)target->data, path_buf);
    check(normalized, "Failed to normalize path: %s", bdata(target));

    bassigncstr(target, normalized);
    free(path_buf);

    return 0;

error:
    return 1;
}