ib_status_t ib_list_shift(ib_list_t *list, void *pdata) { IB_FTRACE_INIT(ib_list_shift); if (list->nelts == 0) { if (pdata != NULL) { *(void **)pdata = NULL; } IB_FTRACE_RET_STATUS(IB_ENOENT); } if (pdata != NULL) { *(void **)pdata = IB_LIST_NODE_DATA(list->head); } IB_LIST_NODE_REMOVE_FIRST(list); IB_FTRACE_RET_STATUS(IB_OK); }
ib_status_t ib_stream_pull(ib_stream_t *s, ib_sdata_t **psdata) { IB_FTRACE_INIT(); if (s->nelts == 0) { if (psdata != NULL) { *psdata = NULL; } IB_FTRACE_RET_STATUS(IB_ENOENT); } s->slen -= s->head->dlen; if (psdata != NULL) { *psdata = s->head; } IB_LIST_NODE_REMOVE_FIRST(s); IB_FTRACE_RET_STATUS(IB_OK); }