Imported Upstream version 2.5.0
[debian/amanda] / regex-src / engine.c
index 1739cd504c81083670a69029e847017d8373980c..304369eb293cb868e9a1be2f8bb723848b4e93e2 100644 (file)
@@ -33,11 +33,11 @@ struct match {
        struct re_guts *g;
        int eflags;
        regmatch_t *pmatch;     /* [nsub+1] (0 element unused) */
-       char *offp;             /* offsets work from here */
-       char *beginp;           /* start of string -- virtual NUL precedes */
-       char *endp;             /* end of string -- virtual NUL here */
-       char *coldp;            /* can be no match starting before here */
-       char **lastpos;         /* [nplus+1] */
+       const char *offp;       /* offsets work from here */
+       const char *beginp;     /* start of string -- virtual NUL precedes */
+       const char *endp;       /* end of string -- virtual NUL here */
+       const char *coldp;      /* can be no match starting before here */
+       const char **lastpos;   /* [nplus+1] */
        STATEVARS;
        states st;              /* current states */
        states fresh;           /* states for a fresh start */
@@ -59,26 +59,26 @@ struct match {
 
 /*
  - matcher - the actual matching engine
- == static int matcher(register struct re_guts *g, char *string, \
+ == static int matcher(register struct re_guts *g, const char *string, \
  ==    size_t nmatch, regmatch_t pmatch[], int eflags);
  */
 static int                     /* 0 success, REG_NOMATCH failure */
 matcher(g, string, nmatch, pmatch, eflags)
 register struct re_guts *g;
-char *string;
+const char *string;
 size_t nmatch;
 regmatch_t pmatch[];
 int eflags;
 {
-       register char *endp;
+       register const char *endp;
        register int i;
        struct match mv;
        register struct match *m = &mv;
-       register char *dp;
+       register const char *dp;
        const register sopno gf = g->firststate+1;      /* +1 for OEND */
        const register sopno gl = g->laststate;
-       char *start;
-       char *stop;
+       const char *start;
+       const char *stop;
 
        /* simplify the situation where possible */
        if (g->cflags&REG_NOSUB)
@@ -156,8 +156,8 @@ int eflags;
                        dp = dissect(m, m->coldp, endp, gf, gl);
                } else {
                        if (g->nplus > 0 && m->lastpos == NULL)
-                               m->lastpos = (char **)malloc((g->nplus+1) *
-                                                       sizeof(char *));
+                               m->lastpos = (const char **)malloc((g->nplus+1) *
+                                                       sizeof(const char *));
                        if (g->nplus > 0 && m->lastpos == NULL) {
                                free(m->pmatch);
                                STATETEARDOWN(m);
@@ -216,39 +216,39 @@ int eflags;
        }
 
        if (m->pmatch != NULL)
-               free((char *)m->pmatch);
+               free((void *)m->pmatch);
        if (m->lastpos != NULL)
-               free((char *)m->lastpos);
+               free((void *)m->lastpos);
        STATETEARDOWN(m);
        return(0);
 }
 
 /*
  - dissect - figure out what matched what, no back references
- == static char *dissect(register struct match *m, char *start, \
+ == static const char *dissect(register struct match *m, char *start, \
  ==    char *stop, sopno startst, sopno stopst);
  */
-static char *                  /* == stop (success) always */
+static const char *                    /* == stop (success) always */
 dissect(m, start, stop, startst, stopst)
 register struct match *m;
-char *start;
-char *stop;
+const char *start;
+const char *stop;
 sopno startst;
 sopno stopst;
 {
        register int i;
        register sopno ss;      /* start sop of current subRE */
        register sopno es;      /* end sop of current subRE */
-       register char *sp;      /* start of string matched by it */
-       register char *stp;     /* string matched by it cannot pass here */
-       register char *rest;    /* start of rest of string */
-       register char *tail;    /* string unmatched by rest of RE */
+       register const char *sp;        /* start of string matched by it */
+       register const char *stp;       /* string matched by it cannot pass here */
+       register const char *rest;      /* start of rest of string */
+       register const char *tail;      /* string unmatched by rest of RE */
        register sopno ssub;    /* start sop of subsubRE */
        register sopno esub;    /* end sop of subsubRE */
-       register char *ssp;     /* start of string matched by subsubRE */
-       register char *sep;     /* end of string matched by subsubRE */
-       register char *oldssp;  /* previous ssp */
-       register char *dp;
+       register const char *ssp;       /* start of string matched by subsubRE */
+       register const char *sep;       /* end of string matched by subsubRE */
+       register const char *oldssp;    /* previous ssp */
+       register const char *dp;
 
        AT("diss", start, stop, startst, stopst);
        sp = start;
@@ -413,25 +413,25 @@ sopno stopst;
 
 /*
  - backref - figure out what matched what, figuring in back references
- == static char *backref(register struct match *m, char *start, \
- ==    char *stop, sopno startst, sopno stopst, sopno lev);
+ == static const char *backref(register struct match *m, const char *start, \
+ ==    const char *stop, sopno startst, sopno stopst, sopno lev);
  */
-static char *                  /* == stop (success) or NULL (failure) */
+static const char *            /* == stop (success) or NULL (failure) */
 backref(m, start, stop, startst, stopst, lev)
 register struct match *m;
-char *start;
-char *stop;
+const char *start;
+const char *stop;
 sopno startst;
 sopno stopst;
 sopno lev;                     /* PLUS nesting level */
 {
        register int i;
        register sopno ss;      /* start sop of current subRE */
-       register char *sp;      /* start of string matched by it */
+       register const char *sp;/* start of string matched by it */
        register sopno ssub;    /* start sop of subsubRE */
        register sopno esub;    /* end sop of subsubRE */
-       register char *ssp;     /* start of string matched by subsubRE */
-       register char *dp;
+       register const char *ssp;/* start of string matched by subsubRE */
+       register const char *dp;
        register size_t len;
        register int hard;
        register sop s;
@@ -613,31 +613,31 @@ sopno lev;                        /* PLUS nesting level */
        /* "can't happen" */
        assert(nope);
        /* NOTREACHED */
-       return((char *)NULL);   /* dummy */
+       return((const char *)NULL);     /* dummy */
 }
 
 /*
  - fast - step through the string at top speed
- == static char *fast(register struct match *m, char *start, \
- ==    char *stop, sopno startst, sopno stopst);
+ == static const char *fast(register struct match *m, const char *start, \
+ ==    const char *stop, sopno startst, sopno stopst);
  */
-static char *                  /* where tentative match ended, or NULL */
+static const char *                    /* where tentative match ended, or NULL */
 fast(m, start, stop, startst, stopst)
 register struct match *m;
-char *start;
-char *stop;
+const char *start;
+const char *stop;
 sopno startst;
 sopno stopst;
 {
        register states st = m->st;
        register states fresh = m->fresh;
        register states tmp = m->tmp;
-       register char *p = start;
+       register const char *p = start;
        register int c = (start == m->beginp) ? OUT : *(start-1);
        register int lastc;     /* previous c */
        register int flagch;
        register int i;
-       register char *coldp;   /* last p after which no match was underway */
+       register const char *coldp;/* last p after which no match was underway */
 
        CLEAR(st);
        SET1(st, startst);
@@ -709,26 +709,26 @@ sopno stopst;
 
 /*
  - slow - step through the string more deliberately
- == static char *slow(register struct match *m, char *start, \
- ==    char *stop, sopno startst, sopno stopst);
+ == static const char *slow(register struct match *m, const char *start, \
+ ==    const char *stop, sopno startst, sopno stopst);
  */
-static char *                  /* where it ended */
+static const char *                    /* where it ended */
 slow(m, start, stop, startst, stopst)
 register struct match *m;
-char *start;
-char *stop;
+const char *start;
+const char *stop;
 sopno startst;
 sopno stopst;
 {
        register states st = m->st;
        register states empty = m->empty;
        register states tmp = m->tmp;
-       register char *p = start;
+       register const char *p = start;
        register int c = (start == m->beginp) ? OUT : *(start-1);
        register int lastc;     /* previous c */
        register int flagch;
        register int i;
-       register char *matchp;  /* last p at which a match ended */
+       register const char *matchp;    /* last p at which a match ended */
 
        AT("slow", start, stop, startst, stopst);
        CLEAR(st);
@@ -959,16 +959,16 @@ FILE *d;
 /* 
  - at - print current situation
  == #ifdef REDEBUG
- == static void at(struct match *m, char *title, char *start, char *stop, \
- ==                                            sopno startst, sopno stopst);
+ == static void at(struct match *m, char *title, const char *start, \
+ ==                    const char *stop, sopno startst, sopno stopst);
  == #endif
  */
 static void
 at(m, title, start, stop, startst, stopst)
 struct match *m;
-char *title;
-char *start;
-char *stop;
+const char *title;
+const char *start;
+const char *stop;
 sopno startst;
 sopno stopst;
 {
@@ -1000,9 +1000,9 @@ int ch;
        static char pbuf[10];
 
        if (isprint(ch) || ch == ' ')
-               ap_snprintf(pbuf, sizeof(pbuf), "%c", ch);
+               snprintf(pbuf, sizeof(pbuf), "%c", ch);
        else
-               ap_snprintf(pbuf, sizeof(pbuf), "\\%o", ch);
+               snprintf(pbuf, sizeof(pbuf), "\\%o", ch);
        return(pbuf);
 }
 #endif