1/*
2 *	This simple classical example of recursion is useful for
3 *	testing stack backtraces and such.
4 */
5
6#include <stdio.h>
7#include <stdlib.h>
8
9#include "../lib/unbuffer_output.c"
10
11int factorial (int);
12
13int
14main (int argc, char **argv, char **envp)
15{
16  gdb_unbuffer_output ();
17
18#ifdef FAKEARGV
19    printf ("%d\n", factorial (1)); /* commands.exp: hw local_var out of scope */
20#else
21    if (argc != 2) {
22	printf ("usage:  factorial <number>\n");
23	return 1;
24    } else {
25	printf ("%d\n", factorial (atoi (argv[1])));
26    }
27#endif
28    return 0;
29}
30
31int factorial (int value)
32{
33    int  local_var;
34
35    if (value > 1) {
36	value *= factorial (value - 1);
37    }
38    local_var = value;
39    return (value);
40} /* commands.exp: local_var out of scope  */
41