1 /* 2 * reimplementation of Daniel Bernstein's buffer library. 3 * placed in the public domain by Uwe Ohse, uwe@ohse.de. 4 */ 5 #include "buffer.h" 6 7 /* return 0: ok. 8 * return -2: read error. 9 * return -3: write error. 10 * somewhat unusual ... 11 */ 12 int buffer_copy(buffer * out,buffer * in)13buffer_copy (buffer * out, buffer * in) 14 { 15 16 while (1) { 17 int got; 18 char *p; 19 got = buffer_feed (in); 20 if (got < 0) 21 return -2; 22 if (!got) 23 break; 24 p = buffer_PEEK (in); 25 if (buffer_put (out, p, got) == -1) 26 return -3; 27 buffer_SEEK (in, got); 28 } 29 return 0; 30 } 31