home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 344_01 / mtxcle.c < prev    next >
Text File  |  1991-05-29  |  2KB  |  83 lines

  1. /*------------------------------------------------------------------------
  2.    Main File : mtx.exe
  3.    File Name : mtxcle.c
  4.  
  5.    Purpose - command line, error handling
  6. -------------------------------------------------------------------------*/
  7. #include "mtx.h"
  8. #include "mtxcle.h"
  9.  
  10.  
  11. int P = default_precision;
  12. int display_all = TRUE;
  13. int MSize;
  14.  
  15.  
  16. void get_args(int argc, char **argv)
  17. {
  18.   int i;
  19.  
  20.   if(argc < 2)
  21.     syntax();
  22.  
  23.   if((MSize=atoi(argv[1])) <= 0)
  24.     error(errLOWSIZE);
  25.  
  26.   for(i=2; i < argc; ++i)
  27.   {
  28.     switch(argv[i][1])
  29.     {
  30.       case 's' : display_all=FALSE;
  31.                  break;
  32.  
  33.       case 'p' : P=atoi(argv[i]+2);
  34.                  if(P < 1 || P > 18)
  35.                    error(errPREC);
  36.                  break;
  37.  
  38.       default  : fprintf(stderr,"MTX :: unknown flag \"");
  39.                  fprintf(stderr,"%s\"\n",argv[i]);
  40.                  exit(1);
  41.     }
  42.   }
  43. }
  44.  
  45.  
  46.  
  47.  
  48. void syntax()
  49. {
  50.   fs("\nSyntax : MTX < filename n [opts]\n");
  51.   fs("     filename : redirected ascii text file with A|b matrix\n");
  52.   fs("     n        : n for n(n+1) matrix\n");
  53.   fs("  [opts]\n");\
  54.   fs("    -s        : display solution only (suitable for input data)\n");
  55.   fs("    -pn       : precision (0..18) - defaults to 2\n");
  56.  
  57.   exit(0);
  58. }
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. void error(int eflag)
  66. {
  67.    char *errs[] = {
  68.  /* errSINGULARITY */ "\nError - Singularity\n",
  69.  /* errLOWSIZE     */ "\nError in matrix size (too small)\n",
  70.  /* errHISIZE      */ "\nError in matrix size (too big)\n",
  71.  /* errPREC           */ "\nInvalid precision - defaulting to 2\n",
  72.  /* errBADNUM      */ "\nError - invalid integer\n",
  73.                   };
  74.  
  75.  fs(errs[eflag]);
  76.  
  77.  if(eflag == errPREC)
  78.    P = default_precision;
  79.  else
  80.    exit(eflag);
  81. }
  82.  
  83.