- start = 0;
- end = 0;
-
- while(*nb_lines < nb_lines_max && (end > start || !feof(file))) {
- eol = start;
-
- /* Look for the end of a line in what is already in the buffer */
- while(eol < end && raw_line[eol] != '\n') eol++;
-
- /* if we did not find the of a line, move what has not been
- processed and is in the buffer to the beginning of the buffer,
- fill the buffer with new data from the file, and look for the
- end of a line */
- if(eol == end) {
- for(k = 0; k < end - start; k++) {
- raw_line[k] = raw_line[k + start];
- }
- end -= start;
- eol -= start;
- start = 0;
- end += fread(raw_line + end, sizeof(char), BUFFER_SIZE - end, file);
- while(eol < end && raw_line[eol] != '\n') eol++;
- }
-
- /* The end of the line is the buffer size, which means the line is
- too long */
-
- if(eol == BUFFER_SIZE) {
- raw_line[BUFFER_SIZE - 1] = '\0';
- fprintf(stderr, "selector: Line too long (max is %d characters):\n",
- BUFFER_SIZE);
- fprintf(stderr, "%s", raw_line);
- fprintf(stderr, "\n");
- exit(EXIT_FAILURE);
+ while(*nb_lines < nb_lines_max && fgets(raw_line, BUFFER_SIZE, file)) {
+ for(s = raw_line + strlen(raw_line) - 1; s > raw_line && *s == '\n'; s--) {
+ *s = '\0';