home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / gdb-4.9 / gdb / testsuite / gdb.t01 / gdbme.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-12  |  956 b   |  60 lines

  1. /*
  2.  *    This simple classical example of recursion is useful for
  3.  *    testing stack backtraces and such.
  4.  */
  5.  
  6. #ifdef vxworks
  7. #  include <vxWorks.h>
  8. #  include <stdioLib.h>
  9.  
  10. /* VxWorks does not supply atoi.  */
  11. static int
  12. atoi (z)
  13.      char *z;
  14. {
  15.   int i = 0;
  16.  
  17.   while (*z >= '0' && *z <= '9')
  18.     i = i * 10 + (*z++ - '0');
  19.   return i;
  20. }
  21.  
  22. /* I don't know of any way to pass an array to VxWorks.  This function
  23.    can be called directly from gdb.  */
  24.  
  25. vxmain (arg)
  26. char *arg;
  27. {
  28.   char *argv[2];
  29.  
  30.   argv[0] = "";
  31.   argv[1] = arg;
  32.   main (2, argv, (char **) 0);
  33. }
  34.  
  35. #else /* ! vxworks */
  36. #  include <stdio.h>
  37. #endif /* ! vxworks */
  38.  
  39. main (argc, argv, envp)
  40. int argc;
  41. char *argv[], **envp;
  42. {
  43.     if (argc != 2) {
  44.     printf ("usage:  factorial <number>\n");
  45.     return 1;
  46.     } else {
  47.     printf ("%d\n", factorial (atoi (argv[1])));
  48.     }
  49.     return 0;
  50. }
  51.  
  52. int factorial (value)
  53. int value;
  54. {
  55.     if (value > 1) {
  56.     value *= factorial (value - 1);
  57.     }
  58.     return (value);
  59. }
  60.