Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-4]: src/usr.bin/tail pull up rev 1.16 from trunk. (cgd)



details:   https://anonhg.NetBSD.org/src/rev/bb40f903ef7d
branches:  netbsd-1-4
changeset: 469241:bb40f903ef7d
user:      cgd <cgd%NetBSD.org@localhost>
date:      Fri Aug 20 05:36:20 1999 +0000

description:
pull up rev 1.16 from trunk. (cgd)

diffstat:

 usr.bin/tail/forward.c |  39 ++++++++++++++++++++++++---------------
 1 files changed, 24 insertions(+), 15 deletions(-)

diffs (112 lines):

diff -r 1accfd2a4a03 -r bb40f903ef7d usr.bin/tail/forward.c
--- a/usr.bin/tail/forward.c    Fri Aug 20 05:36:16 1999 +0000
+++ b/usr.bin/tail/forward.c    Fri Aug 20 05:36:20 1999 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: forward.c,v 1.15 1998/12/19 22:27:54 christos Exp $    */
+/*     $NetBSD: forward.c,v 1.15.2.1 1999/08/20 05:36:20 cgd Exp $     */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -41,7 +41,7 @@
 #if 0
 static char sccsid[] = "@(#)forward.c  8.1 (Berkeley) 6/6/93";
 #endif
-__RCSID("$NetBSD: forward.c,v 1.15 1998/12/19 22:27:54 christos Exp $");
+__RCSID("$NetBSD: forward.c,v 1.15.2.1 1999/08/20 05:36:20 cgd Exp $");
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -58,7 +58,7 @@
 #include <string.h>
 #include "extern.h"
 
-static void rlines __P((FILE *, long, struct stat *));
+static int rlines __P((FILE *, long, struct stat *));
 
 /*
  * forward -- display the file, from an offset, forward.
@@ -149,8 +149,10 @@
                                ierr();
                                return;
                        }
-               } else
-                       bytes(fp, off);
+               } else {
+                       if (bytes(fp, off))
+                               return;
+               }
                break;
        case RLINES:
                if (S_ISREG(sbp->st_mode)) {
@@ -159,16 +161,20 @@
                                        ierr();
                                        return;
                                }
-                       } else
-                               rlines(fp, off, sbp);
+                       } else {
+                               if (rlines(fp, off, sbp))
+                                       return;
+                       }
                } else if (off == 0) {
                        while (getc(fp) != EOF);
                        if (ferror(fp)) {
                                ierr();
                                return;
                        }
-               } else
-                       lines(fp, off);
+               } else {
+                       if (lines(fp, off))
+                               return;
+               }
                break;
        default:
                break;
@@ -234,8 +240,10 @@
 
 /*
  * rlines -- display the last offset lines of the file.
+ *
+ * Non-zero return means than a (non-fatal) error occurred.
  */
-static void
+static int
 rlines(fp, off, sbp)
        FILE *fp;
        long off;
@@ -246,17 +254,17 @@
        char *start;
 
        if (!(size = sbp->st_size))
-               return;
+               return (0);
 
        if (size > SIZE_T_MAX) {
                err(0, "%s: %s", fname, strerror(EFBIG));
-               return;
+               return (1);
        }
 
        if ((start = mmap(NULL, (size_t)size, PROT_READ,
            MAP_FILE|MAP_SHARED, fileno(fp), (off_t)0)) == (caddr_t)-1) {
                err(0, "%s: %s", fname, strerror(EFBIG));
-               return;
+               return (1);
        }
 
        /* Last char is special, ignore whether newline or not. */
@@ -271,10 +279,11 @@
        WR(p, size);
        if (fseek(fp, (long)sbp->st_size, SEEK_SET) == -1) {
                ierr();
-               return;
+               return (1);
        }
        if (munmap(start, (size_t)sbp->st_size)) {
                err(0, "%s: %s", fname, strerror(errno));
-               return;
+               return (1);
        }
+       return (0);
 }



Home | Main Index | Thread Index | Old Index