Print this page
3484 enhance and document tail follow support
Reviewed by: Joshua M. Clulow <jmc@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/tail/extern.h
          +++ new/usr/src/cmd/tail/extern.h
↓ open down ↓ 19 lines elided ↑ open up ↑
  20   20   * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  21   21   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22   22   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23   23   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24   24   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25   25   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26   26   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27   27   * SUCH DAMAGE.
  28   28   *
  29   29   */
       30 +/*
       31 + * Copyright (c) 2013, Joyent, Inc. All Rights Reserved.
       32 + */
  30   33  
  31   34  
       35 +#ifndef EXTERN_H
       36 +#define EXTERN_H
       37 +
       38 +#include <sys/types.h>
       39 +#include <sys/stat.h>
       40 +#include <port.h>
       41 +
       42 +
  32   43  #define WR(p, size) do { \
  33   44          if (write(STDOUT_FILENO, p, size) != (ssize_t)size) \
  34   45                  oerr(); \
  35   46          } while (0)
  36   47  
  37   48  #define TAILMAPLEN (4<<20)
  38   49  
  39   50  struct mapinfo {
  40   51          off_t   mapoff;
  41   52          off_t   maxoff;
  42   53          size_t  maplen;
  43   54          char    *start;
  44   55          int     fd;
  45   56  };
  46   57  
  47   58  struct file_info {
  48   59          FILE *fp;
  49   60          char *file_name;
  50   61          struct stat st;
       62 +        file_obj_t fobj;
  51   63  };
  52   64  
  53   65  typedef struct file_info file_info_t;
  54   66  
  55   67  enum STYLE { NOTSET = 0, FBYTES, FLINES, RBYTES, RLINES, REVERSE };
  56   68  
  57   69  void follow(file_info_t *, enum STYLE, off_t);
  58   70  void forward(FILE *, const char *, enum STYLE, off_t, struct stat *);
  59   71  void reverse(FILE *, const char *, enum STYLE, off_t, struct stat *);
  60   72  
  61   73  int bytes(FILE *, const char *, off_t);
  62   74  int lines(FILE *, const char *, off_t);
  63   75  
  64   76  void ierr(const char *);
  65   77  void oerr(void);
  66   78  int mapprint(struct mapinfo *, off_t, off_t);
  67   79  int maparound(struct mapinfo *, off_t);
  68   80  
  69   81  extern int Fflag, fflag, qflag, rflag, rval, no_files;
       82 +
       83 +#endif  /* EXTERN_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX