> Have you looked at the code?
Busybox source is currently on another machine, so it is a bit difficult
to look in. Seems you are doing a line buffer approach. I'm not familar
with libbb functions, but ther seems to be a function xmalloc_fgets ...
that should be the right one. Do something like the following ...

// if skipping of empty lines at the start is required, we need a flag
got_data = 0;
// process all data of a single block in one loop
while ( (line = xmalloc_fgets(file)) != NULL) {
   len = strlen(line);
   // omit next line if xmalloc_fgets strips ´\n´
   if (len > 0 && line[len-1] == '\n') line[--len] = '\0';
   // strip of optional '\r'
   if (len > 0 && line[len-1] == '\r') line[--len] = '\0';
   // check for empty line seqence
   if (len == 0) {
      // skip empty lines before data block (if required)
      if (got_data == 0) continue;
      // you got an empty line --> this is your end of data processing
      best to do a return from function here
   }
   // remember we got data
   got_data = 1;
   // else you got a data line and have to process the lines data
(single line)
   process your data here
}
// you get here on EOF of the pipe this may or may not be an error
// depending on specification
either end data processing or signal error


Best to put the complete loop for each block of data in a single function.
If required, you can put the fgets including stripping of \n and \r in
seperate function this makes things easier.

int readline( file_t file, char** line )
{
   int l;
   char* p = xmalloc_fgets(file);
   if (p == NULL) return -1;
   l = strlen(p);
   if (l>0 && p[l-1] == '\n') p[--l] = '\0';
   if (l>0 && p[l-1] == '\r') p[--l] = '\0';
   *line = p;
   return l;
}

int len;
char* line;
while ( (len = readline(file,line)) > 0 ) {
   if (len == 0) {
      you got an empty line
   }
   process data of line
}
EOF or read error

But please have a look, if something similar is already in libbb, else
the above readline function may be a libbb candidate.

This will hopefully help ...

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to