--- psiconv/trunk/lib/psiconv/list.c 2000/12/22 22:31:50 71 +++ psiconv/trunk/lib/psiconv/list.c 2000/12/23 20:21:40 72 @@ -83,8 +83,9 @@ int psiconv_list_add(psiconv_list l, const void *el) { - if (psiconv_list_resize(l,l->cur_len + 1)) - return -PSICONV_E_NOMEM; + int res; + if ((res = psiconv_list_resize(l,l->cur_len + 1))) + return res; memcpy(((char *) (l->els)) + l->cur_len * l->el_size, el, l->el_size); l->cur_len ++; return 0; @@ -113,12 +114,11 @@ } - size_t psiconv_list_fread(psiconv_list l,size_t size, FILE *f) { size_t res; if (psiconv_list_resize(l,l->cur_len + size)) - return 0; + return -PSICONV_E_NOMEM; res = fread(((char *) (l->els)) + l->cur_len * l->el_size,l->el_size,size,f); l->cur_len += res; return res; @@ -140,3 +140,14 @@ return 0; } +int psiconv_list_concat(psiconv_list l, const psiconv_list extra) +{ + int res; + if ((res = psiconv_list_resize(l, + l->cur_len + extra->cur_len * extra->el_size))) + return res; + /* Unreadable but correct. */ + memcpy(((char *) (l->els)) + l->cur_len * l->el_size,extra->els, + extra->cur_len * extra->el_size); + return 0; +}