diff options
author | Ruslan Ermilov <ru@FreeBSD.org> | 2000-12-05 18:49:44 +0000 |
---|---|---|
committer | Ruslan Ermilov <ru@FreeBSD.org> | 2000-12-05 18:49:44 +0000 |
commit | c8d1b47c7fde3a8a3f5530bd5e3939bba340ab4b (patch) | |
tree | 19d4540966cb92612af25d5154efcc062eefb5c5 /contrib/groff/libbib/linear.cc | |
parent | e159d2bd86eea9be07f2695f85b3543935869a3b (diff) |
Virgin import of FSF groff v1.16.1
Notes
Notes:
svn path=/vendor/groff/dist/; revision=69626
Diffstat (limited to 'contrib/groff/libbib/linear.cc')
-rw-r--r-- | contrib/groff/libbib/linear.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/contrib/groff/libbib/linear.cc b/contrib/groff/libbib/linear.cc index 3d2729af1523..a8c2a553735d 100644 --- a/contrib/groff/libbib/linear.cc +++ b/contrib/groff/libbib/linear.cc @@ -30,6 +30,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "error.h" #include "cset.h" #include "cmap.h" +#include "nonposix.h" #include "refid.h" #include "search.h" @@ -330,6 +331,19 @@ int file_buffer::load(int fd, const char *filename) else { close(fd); buffer[3] = '\n'; + int sidx = 4, didx = 4; + for ( ; sidx < size + 4; sidx++, didx++) + { + if (buffer[sidx] == '\r') + { + if (buffer[++sidx] != '\n') + buffer[didx++] = '\r'; + else + size--; + } + if (sidx != didx) + buffer[didx] = buffer[sidx]; + } bufend = buffer + 4 + size; if (bufend[-1] != '\n') *bufend++ = '\n'; @@ -345,7 +359,7 @@ int file_buffer::load(int fd, const char *filename) linear_searcher::linear_searcher(const char *query, int query_len, const char *ign, int trunc) -: keys(0), nkeys(0), truncate_len(trunc), ignore_fields(ign) +: ignore_fields(ign), truncate_len(trunc), keys(0), nkeys(0) { const char *query_end = query + query_len; int nk = 0; |