home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / GETOPTST.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  6KB  |  135 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6. #include <math.h>
  7. #include <limits.h>
  8. #include <float.h>
  9. #include "sniptype.h"
  10. #include "getopts.h"
  11.  
  12. Boolean_T     test1     = True_,
  13.               test2     = False_;
  14. int           test3     = -37;
  15. long          test4     = 100000L;
  16. double        test5;                      /* Initialized in main()      */
  17. unsigned char test6     = 0x5a;
  18. char          test7[80] = "Initial string";
  19.  
  20. char         test3min[]  = "-100";
  21. char         test3max[]  = "32000";
  22. char         test4min[]  = "-100000";
  23. char         test4max[]  = "300000";
  24. char         test5min[]  = "-12345.6789";
  25. char         test5max[]  = "98765.4321";
  26. char         test6max[]  = "ee";
  27.  
  28. char         test3dflt[] = "123";
  29. char         test4dflt[] = "1234567";
  30. char         test5dflt[] = "PI";
  31. char         test6dflt[] = "a5";
  32. char         test7dflt[] = "Default string";
  33.  
  34. struct Option_Tag options[] = {                 /* Valid options        */
  35.       {
  36.             'A',                                /* Option letter        */
  37.             False_,                             /* Case sensitiivity    */
  38.             Boolean_Tag,                        /* Data type            */
  39.             (void *)&test1,                     /* Storage address      */
  40.             NULL,                               /* Range - min          */
  41.             NULL,                               /* Range - max          */
  42.             NULL                                /* Default value        */
  43.       },
  44.       {
  45.             'B',                                /* Option letter        */
  46.             False_,                             /* Case sensitiivity    */
  47.             Boolean_Tag,                        /* Data type            */
  48.             (void *)&test2,                     /* Storage address      */
  49.             NULL,                               /* Range - min          */
  50.             NULL,                               /* Range - max          */
  51.             NULL                                /* Default value        */
  52.       },
  53.       {
  54.             'C',                                /* Option letter        */
  55.             False_,                             /* Case sensitiivity    */
  56.             Int_Tag,                            /* Data type            */
  57.             (void *)&test3,                     /* Storage address      */
  58.             test3min,                           /* Range - min          */
  59.             test3max,                           /* Range - max          */
  60.             test3dflt                           /* Default value        */
  61.       },
  62.       {
  63.             'D',                                /* Option letter        */
  64.             False_,                             /* Case sensitiivity    */
  65.             Long_Tag,                           /* Data type            */
  66.             (void *)&test4,                     /* Storage address      */
  67.             test4min,                           /* Range - min          */
  68.             test4max,                           /* Range - max          */
  69.             test4dflt                           /* Default value        */
  70.       },
  71.       {
  72.             'E',                                /* Option letter        */
  73.             False_,                             /* Case sensitiivity    */
  74.             DFloat_Tag,                         /* Data type            */
  75.             (void *)&test5,                     /* Storage address      */
  76.             test5min,                           /* Range - min          */
  77.             test5max,                           /* Range - max          */
  78.             test5dflt                           /* Default value        */
  79.       },
  80.       {
  81.             'F',                                /* Option letter        */
  82.             False_,                             /* Case sensitiivity    */
  83.             Byte_Tag,                           /* Data type            */
  84.             (void *)&test6,                     /* Storage address      */
  85.             NULL,                               /* Range - min          */
  86.             test6max,                           /* Range - max          */
  87.             test6dflt                           /* Default value        */
  88.       },
  89.       {
  90.             'G',                                /* Option letter        */
  91.             False_,                             /* Case sensitiivity    */
  92.             String_Tag,                         /* Data type            */
  93.             (void *)test7,                      /* Storage address      */
  94.             NULL,                               /* Range - min          */
  95.             NULL,                               /* Range - max          */
  96.             (void *)test7dflt                   /* Default value        */
  97.       },
  98.       {
  99.             NUL,                                /* Terminating record   */
  100.             False_,
  101.             Error_Tag,
  102.             NULL,
  103.             NULL,
  104.             NULL,
  105.             NULL
  106.       }
  107. };
  108.  
  109. #define TFprint(v) ((v) ? "TRUE" : "FALSE")
  110.  
  111. int main(int argc, char *argv[])
  112. {
  113.       int i;
  114.  
  115.       test5 = getopts_eval("exp(1)");
  116.  
  117.       printf("Defaults:\ntest1 = %s\ntest2 = %s\ntest3 = %d\ntest4 = %ld\n"
  118.             "test5 = %g\ntest6 = 0%2Xh\ntest7 = \"%s\"\n\n", TFprint(test1),
  119.             TFprint(test2), test3, test4, test5, test6, test7);
  120.  
  121.       printf("getopts() returned %d\n", getopts(argc, argv));
  122.  
  123.       printf("Options are now:\ntest1 = %s\ntest2 = %s\ntest3 = %d\n"
  124.             "test4 = %ld\ntest5 = %g\ntest6 = 0%2Xh\ntest7 = \"%s\"\n\n",
  125.             TFprint(test1), TFprint(test2), test3, test4, test5, test6,
  126.             test7);
  127.  
  128.       puts("Hit any key to continue");
  129.       getch();
  130.       for (i = 0; i < xargc; ++i)
  131.             printf("xargv[%d] = \"%s\"\n", i, xargv[i]);
  132.       printf("\nxargc = %d\n", xargc);
  133.       return 0;
  134. }
  135.