00001 #include <stdio.h>
00002 #include <string.h>
00003
00004
00005 int
00006 writeBuffer(char ** buffer, unsigned int * readPos, FILE * wHandle)
00007 {
00008 char * nlpos = strchr(*buffer, '\n');
00009 int written = 0;
00010
00011 while (NULL != nlpos) {
00012 unsigned int moveSize, clearSize;
00013 char * actAddr;
00014
00015 *nlpos = '\0';
00016
00017 if (0 != strlen(*buffer)) {
00018
00019 fputs(*buffer, wHandle);
00020 if (ferror(wHandle)) {
00021 return -1;
00022 }
00023
00024 fputc('\n', wHandle);
00025 if (ferror(wHandle)) {
00026 return -1;
00027 }
00028
00029 fflush(wHandle);
00030 if (ferror(wHandle)) {
00031 return -1;
00032 }
00033
00034 written += strlen(*buffer) + 1;
00035 }
00036
00037 actAddr = *buffer + *readPos;
00038 moveSize = actAddr - nlpos - 1;
00039 clearSize = actAddr - *buffer - moveSize;
00040 memmove(*buffer, nlpos+1, moveSize);
00041 memset(*buffer + moveSize, 0, clearSize);
00042 *readPos = moveSize;
00043
00044 nlpos = strchr(*buffer, '\n');
00045 }
00046
00047 return written;
00048 }