Date: Thu, 12 Apr 2001 17:39:39 -0400 From: "Ken Menzel" <kenm@icarz.com> To: <freebsd-stable@FreeBSD.ORG> Subject: Tail of file larger than 2 gig fails (patch) Message-ID: <000901c0c399$13f7e680$711663cf@icarz.com>
next in thread | raw e-mail | index | archive | help
I had a problem today with a very large log file (3.6 gig) I wanted to see the last few lines but 'tail' wanted to show me the last gig or so. Anyway I made it work, I don't know if this is the right list, because I have never submitted a patch before. Could someone committer either advise me where to send this patch or take a look at it and commit it if it looks OK? It should not affect the way tail works for files smaller that 2Gig (1/2 of SIZE_T_MAX). It also fixes the comparison of SIZE_T_MAX which never worked anyway and does print a warning at the top of the tail if the file is larger that 2 gig. Thanks Ken --- ./kentail/forward.c Thu Apr 12 17:18:48 2001 +++ ./tail/forward.c Wed Feb 28 11:18:13 2001 @@ -268,30 +268,20 @@ struct stat *sbp; { off_t size; - off_t max_size; - off_t big_off; - size_t orig_size; - char *p; char *start; if (!(size = sbp->st_size)) return; - max_size=SIZE_T_MAX/2; - big_off=0; - if (size > max_size) { + if (size > SIZE_T_MAX) { errno = EFBIG; ierr(); - // Just look at back of file - big_off=size-max_size; - size=max_size; - // return; + return; } - orig_size=size; if ((start = mmap(NULL, (size_t)size, - PROT_READ, MAP_SHARED, fileno(fp), (off_t)big_off)) == MAP_FAILED) { + PROT_READ, MAP_SHARED, fileno(fp), (off_t)0)) == MAP_FAILED) { ierr(); return; } @@ -304,13 +294,13 @@ } /* Set the file pointer to reflect the length displayed. */ - size = orig_size - size; + size = sbp->st_size - size; WR(p, size); - if (fseeko(fp, sbp->st_size, SEEK_SET) == -1) { + if (fseek(fp, (long)sbp->st_size, SEEK_SET) == -1) { ierr(); return; } - if (munmap(start, orig_size)) { + if (munmap(start, (size_t)sbp->st_size)) { ierr(); return; } ----------------------------------------------------- Ken Menzel ICQ# 9325188 www.icarz.com kenm@icarz.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000901c0c399$13f7e680$711663cf>