| /* |
| * This simple classical example of recursion is useful for |
| * testing stack backtraces and such. |
| */ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| #include "../lib/unbuffer_output.c" |
| |
| int factorial (int); |
| |
| int |
| main (int argc, char **argv, char **envp) |
| { |
| gdb_unbuffer_output (); |
| |
| #ifdef FAKEARGV |
| printf ("%d\n", factorial (1)); /* commands.exp: hw local_var out of scope */ |
| #else |
| if (argc != 2) { |
| printf ("usage: factorial <number>\n"); |
| return 1; |
| } else { |
| printf ("%d\n", factorial (atoi (argv[1]))); |
| } |
| #endif |
| return 0; |
| } |
| |
| int factorial (int value) |
| { |
| int local_var; |
| |
| if (value > 1) { |
| value *= factorial (value - 1); |
| } |
| local_var = value; |
| return (value); |
| } /* commands.exp: local_var out of scope */ |