]> err.no Git - varnish/commitdiff
Add a -s option which specifies a number of entries to skip.
authordes <des@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 8 Mar 2008 16:55:22 +0000 (16:55 +0000)
committerdes <des@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 8 Mar 2008 16:55:22 +0000 (16:55 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2572 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishlog/varnishlog.1
varnish-cache/include/varnishapi.h
varnish-cache/lib/libvarnishapi/shmlog.c

index 58c38ceaacc92c984f52945a983ae5abcf34de73..1fd2db2c3cd30e653a0797604767f529716fbd7c 100644 (file)
@@ -28,7 +28,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd November 8, 2007
+.Dd March 8, 2008
 .Dt VARNISHLOG 1
 .Os
 .Sh NAME
@@ -48,6 +48,7 @@
 .Op Fl o
 .Op Fl P Ar file
 .Op Fl r Ar file
+.Op Fl s Ar num
 .Op Fl V
 .Op Fl w Ar file
 .Op Fl X Ar regex
@@ -126,6 +127,10 @@ Write the process's PID to the specified
 Read log entries from
 .Ar file
 instead of shared memory.
+.It Fl s Ar num
+Skip the first
+.Ar num
+log records.
 .It Fl V
 Display the version number and exit.
 .It Fl w Ar file
index 6249fba6727ef14dc7d8a979d47bdf492862a575..8edf72d99a6861fb760de11a6b0ecfbc78fbfcb5 100644 (file)
@@ -44,8 +44,8 @@ int base64_decode(char *d, unsigned dlen, const char *s);
 typedef int vsl_handler(void *priv, enum shmlogtag tag, unsigned fd, unsigned len, unsigned spec, const char *ptr);
 #define VSL_S_CLIENT   (1 << 0)
 #define VSL_S_BACKEND  (1 << 1)
-#define VSL_ARGS       "bCcdI:i:r:X:x:"
-#define VSL_USAGE      "[-bCcd] [-i tag] [-I regexp] [-r file] [-X regexp] [-x tag]"
+#define VSL_ARGS       "bCcdI:i:r:s:X:x:"
+#define VSL_USAGE      "[-bCcd] [-i tag] [-I regexp] [-r file] [-s skip] [-X regexp] [-x tag]"
 vsl_handler VSL_H_Print;
 struct VSL_data;
 struct VSL_data *VSL_New(void);
index 7311aa9ba8675f5ed35033b9baa4a98dddc0a7a9..d18e79eb94e2800607919640feadc923431def93 100644 (file)
@@ -85,6 +85,8 @@ struct VSL_data {
        int                     regflags;
        regex_t                 *regincl;
        regex_t                 *regexcl;
+
+       unsigned long           skip;
 };
 
 #ifndef MAP_HASSEMAPHORE
@@ -292,6 +294,10 @@ VSL_NextLog(struct VSL_data *vd, unsigned char **pp)
                default:
                        break;
                }
+               if (vd->skip) {
+                       --vd->skip;
+                       continue;
+               }
                if (vd->map[p[SHMLOG_TAG]] & M_SELECT) {
                        *pp = p;
                        return (1);
@@ -478,6 +484,26 @@ vsl_ix_arg(struct VSL_data *vd, const char *opt, int arg)
 
 /*--------------------------------------------------------------------*/
 
+static int
+vsl_s_arg(struct VSL_data *vd, const char *opt)
+{
+       char *end;
+
+       CHECK_OBJ_NOTNULL(vd, VSL_MAGIC);
+       if (*opt == '\0') {
+               fprintf(stderr, "number required for -s\n");
+               return (-1);
+       }
+       vd->skip = strtoul(opt, &end, 10);
+       if (*end != '\0') {
+               fprintf(stderr, "invalid number for -s\n");
+               return (-1);
+       }
+       return (1);
+}
+
+/*--------------------------------------------------------------------*/
+
 int
 VSL_Arg(struct VSL_data *vd, int arg, const char *opt)
 {
@@ -491,6 +517,7 @@ VSL_Arg(struct VSL_data *vd, int arg, const char *opt)
        case 'r': return (vsl_r_arg(vd, opt));
        case 'I': case 'X': return (vsl_IX_arg(vd, opt, arg));
        case 'C': vd->regflags = REG_ICASE; return (1);
+       case 's': return (vsl_s_arg(vd, opt));
        default:
                return (0);
        }