1 typedef __SIZE_TYPE__ size_t;
2 struct re_pattern_buffer
3   {
4     unsigned char *buffer;
5     unsigned long int used;
6   };
7 struct re_registers
8   {
9     int *start;
10   };
11 
12 static const char **regstart, **regend;
13 static const char **old_regend;
14 
15 static int
re_match_2_internal(struct re_pattern_buffer * bufp,struct re_registers * regs)16 re_match_2_internal (struct re_pattern_buffer *bufp,
17 		     struct re_registers *regs)
18 {
19   unsigned char *p = bufp->buffer;
20   unsigned char *pend = p + bufp->used;
21 
22   for (;;)
23     {
24       int highest_active_reg = 1;
25       if (bufp)
26 	{
27 	  int i;
28 	  for (i = 1;; i++)
29 	    regs->start[i] = 0;
30 	}
31 
32       switch ((unsigned int) *p++)
33 	{
34 	case 1:
35 	  {
36 	    unsigned char r = *p;
37 	    if (r)
38 	      highest_active_reg = r;
39 	  }
40 	  if (p + 2 == pend)
41 	    {
42 	      char is_a_jump_n = 0;
43 	      int mcnt = 0;
44 	      unsigned char *p1;
45 
46 	      p1 = p + 2;
47 	      switch (*p1++)
48 		{
49 		case 2:
50 		  is_a_jump_n = 1;
51 		case 1:
52 		  do { do { mcnt = *p1; } while (0); p1 += 2; } while (0);
53 		  if (is_a_jump_n)
54 		    p1 = 0;
55 		}
56 
57 	      if (mcnt && *p1 == 0)
58 		{
59 		  unsigned r;
60 		  for (r = 0; r < (unsigned) *p + (unsigned) *(p + 1); r++)
61 		    {
62 		      if (regend[0] >= regstart[r])
63 			regend[r] = old_regend[r];
64 		    }
65 		  do { while (0 < highest_active_reg + 1) { } } while (0);
66 		}
67 	    }
68 	}
69     }
70 
71   return -1;
72 }
73