1 /* Bug in reorg.c, deleting the "++" in the last loop in main.
2    Origin: <hp@axis.com>.  */
3 
4 extern void f (void);
5 extern int x (int, char **);
6 extern int r (const char *);
7 extern char *s (char *, char **);
8 extern char *m (char *);
9 char *u;
10 char *h;
11 int check = 0;
12 int o = 0;
13 
main(int argc,char ** argv)14 int main (int argc, char **argv)
15 {
16   char *args[] = {"a", "b", "c", "d", "e"};
17   if (x (5, args) != 0 || check != 2 || o != 5)
18     abort ();
19   exit (0);
20 }
21 
x(int argc,char ** argv)22 int x (int argc, char **argv)
23 {
24   int opt = 0;
25   char *g = 0;
26   char *p = 0;
27 
28   if (argc > o && argc > 2 && argv[o])
29     {
30       g = s (argv[o], &p);
31       if (g)
32 	{
33 	  *g++ = '\0';
34 	  h = s (g, &p);
35 	  if (g == p)
36 	    h = m (g);
37 	}
38       u = s (argv[o], &p);
39       if (argv[o] == p)
40 	u = m (argv[o]);
41     }
42   else
43     abort ();
44 
45   while (++o < argc)
46     if (r (argv[o]) == 0)
47       return 1;
48 
49   return 0;
50 }
51 
m(char * x)52 char *m (char *x) { abort (); }
s(char * v,char ** pp)53 char *s (char *v, char **pp)
54 {
55   if (strcmp (v, "a") != 0 || check++ > 1)
56     abort ();
57   *pp = v+1;
58   return 0;
59 }
60 
r(const char * f)61 int r (const char *f)
62 {
63   static char c[2] = "b";
64   static int cnt = 0;
65 
66   if (*f != *c || f[1] != c[1] || cnt > 3)
67     abort ();
68   c[0]++;
69   cnt++;
70   return 1;
71 }
72