- {
- if (file_pos == 0)
- {
- /* Hit the beginning of the file; print the remaining record. */
- output (G_buffer, past_end);
- return true;
- }
-
- saved_record_size = past_end - G_buffer;
- if (saved_record_size > read_size)
- {
- /* `G_buffer_size' is about twice `read_size', so since
- we want to read in another `read_size' bytes before
- the data already in `G_buffer', we need to increase
- `G_buffer_size'. */
- char *newbuffer;
- size_t offset = sentinel_length ? sentinel_length : 1;
- ptrdiff_t match_start_offset = match_start - G_buffer;
- ptrdiff_t past_end_offset = past_end - G_buffer;
- size_t old_G_buffer_size = G_buffer_size;
-
- read_size *= 2;
- G_buffer_size = read_size * 2 + sentinel_length + 2;
- if (G_buffer_size < old_G_buffer_size)
- xalloc_die ();
- newbuffer = xrealloc (G_buffer - offset, G_buffer_size);
- newbuffer += offset;
- /* Adjust the pointers for the new buffer location. */
- match_start = newbuffer + match_start_offset;
- past_end = newbuffer + past_end_offset;
- G_buffer = newbuffer;
- }
-
- /* Back up to the start of the next bufferfull of the file. */
- if (file_pos >= read_size)
- file_pos -= read_size;
- else
- {
- read_size = file_pos;
- file_pos = 0;
- }
- if (lseek (input_fd, file_pos, SEEK_SET) < 0)
- error (0, errno, _("%s: seek failed"), quotearg_colon (file));
-
- /* Shift the pending record data right to make room for the new.
- The source and destination regions probably overlap. */
- memmove (G_buffer + read_size, G_buffer, saved_record_size);
- past_end = G_buffer + read_size + saved_record_size;
- /* For non-regexp searches, avoid unneccessary scanning. */
- if (sentinel_length)
- match_start = G_buffer + read_size;
- else
- match_start = past_end;
-
- if (safe_read (input_fd, G_buffer, read_size) != read_size)
- {
- error (0, errno, _("%s: read error"), quotearg_colon (file));
- return false;
- }
- }
+ {
+ if (file_pos == 0)
+ {
+ /* Hit the beginning of the file; print the remaining record. */
+ output (G_buffer, past_end);
+ return true;
+ }
+
+ saved_record_size = past_end - G_buffer;
+ if (saved_record_size > read_size)
+ {
+ /* 'G_buffer_size' is about twice 'read_size', so since
+ we want to read in another 'read_size' bytes before
+ the data already in 'G_buffer', we need to increase
+ 'G_buffer_size'. */
+ char *newbuffer;
+ size_t offset = sentinel_length ? sentinel_length : 1;
+ ptrdiff_t match_start_offset = match_start - G_buffer;
+ ptrdiff_t past_end_offset = past_end - G_buffer;
+ size_t old_G_buffer_size = G_buffer_size;
+
+ read_size *= 2;
+ G_buffer_size = read_size * 2 + sentinel_length + 2;
+ if (G_buffer_size < old_G_buffer_size)
+ xalloc_die ();
+ newbuffer = xrealloc (G_buffer - offset, G_buffer_size);
+ newbuffer += offset;
+ /* Adjust the pointers for the new buffer location. */
+ match_start = newbuffer + match_start_offset;
+ past_end = newbuffer + past_end_offset;
+ G_buffer = newbuffer;
+ }
+
+ /* Back up to the start of the next bufferfull of the file. */
+ if (file_pos >= read_size)
+ file_pos -= read_size;
+ else
+ {
+ read_size = file_pos;
+ file_pos = 0;
+ }
+ if (lseek (input_fd, file_pos, SEEK_SET) < 0)
+ error (0, errno, _("%s: seek failed"), quotearg_colon (file));
+
+ /* Shift the pending record data right to make room for the new.
+ The source and destination regions probably overlap. */
+ memmove (G_buffer + read_size, G_buffer, saved_record_size);
+ past_end = G_buffer + read_size + saved_record_size;
+ /* For non-regexp searches, avoid unnecessary scanning. */
+ if (sentinel_length)
+ match_start = G_buffer + read_size;
+ else
+ match_start = past_end;
+
+ if (safe_read (input_fd, G_buffer, read_size) != read_size)
+ {
+ error (0, errno, _("%s: read error"), quotearg_colon (file));
+ return false;
+ }
+ }