1219820Sjeff/* Bug in reorg.c, deleting the "++" in the last loop in main.
2219820Sjeff   Origin: <hp@axis.com>.  */
3219820Sjeff
4219820Sjeffextern void f (void);
5219820Sjeffextern int x (int, char **);
6219820Sjeffextern int r (const char *);
7219820Sjeffextern char *s (char *, char **);
8219820Sjeffextern char *m (char *);
9219820Sjeffchar *u;
10219820Sjeffchar *h;
11219820Sjeffint check = 0;
12219820Sjeffint o = 0;
13219820Sjeff
14219820Sjeffint main (int argc, char **argv)
15219820Sjeff{
16219820Sjeff  char *args[] = {"a", "b", "c", "d", "e"};
17219820Sjeff  if (x (5, args) != 0 || check != 2 || o != 5)
18219820Sjeff    abort ();
19219820Sjeff  exit (0);
20219820Sjeff}
21219820Sjeff
22219820Sjeffint x (int argc, char **argv)
23219820Sjeff{
24219820Sjeff  int opt = 0;
25219820Sjeff  char *g = 0;
26219820Sjeff  char *p = 0;
27219820Sjeff
28219820Sjeff  if (argc > o && argc > 2 && argv[o])
29219820Sjeff    {
30219820Sjeff      g = s (argv[o], &p);
31219820Sjeff      if (g)
32219820Sjeff	{
33219820Sjeff	  *g++ = '\0';
34219820Sjeff	  h = s (g, &p);
35219820Sjeff	  if (g == p)
36219820Sjeff	    h = m (g);
37219820Sjeff	}
38219820Sjeff      u = s (argv[o], &p);
39219820Sjeff      if (argv[o] == p)
40219820Sjeff	u = m (argv[o]);
41219820Sjeff    }
42228443Smdf  else
43219820Sjeff    abort ();
44219820Sjeff
45219820Sjeff  while (++o < argc)
46228443Smdf    if (r (argv[o]) == 0)
47219820Sjeff      return 1;
48255932Salfred
49255932Salfred  return 0;
50219820Sjeff}
51219820Sjeff
52219820Sjeffchar *m (char *x) { abort (); }
53219820Sjeffchar *s (char *v, char **pp)
54219820Sjeff{
55219820Sjeff  if (strcmp (v, "a") != 0 || check++ > 1)
56219820Sjeff    abort ();
57219820Sjeff  *pp = v+1;
58219820Sjeff  return 0;
59219820Sjeff}
60
61int 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