--- psiconv/trunk/lib/psiconv/list.c 2000/12/24 16:03:57 73 +++ psiconv/trunk/lib/psiconv/list.c 2000/12/24 16:34:19 74 @@ -118,12 +118,35 @@ { size_t res; if (psiconv_list_resize(l,l->cur_len + size)) - return -PSICONV_E_NOMEM; + return 0; res = fread(((char *) (l->els)) + l->cur_len * l->el_size,l->el_size,size,f); l->cur_len += res; return res; } +int psiconv_list_fread_all(psiconv_list l, FILE *f) +{ + while (!feof(f)) { + if (!psiconv_list_fread(l,1024,f)) + return -PSICONV_E_NOMEM; + } + return -PSICONV_E_OK; +} + +int psiconv_list_fwrite_all(const psiconv_list l, FILE *f) +{ + int pos = 0; + int written; + int len = psiconv_list_length(l); + while (pos < len) { + if (!(written = fwrite(((char *)(l->els)) + pos * l->el_size,l->el_size, + len - pos,f))) + return -PSICONV_E_OTHER; + pos += written; + } + return -PSICONV_E_OK; +} + int psiconv_list_resize(psiconv_list l,unsigned int nr) { void * temp;