home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / sysinfo-1.0 / part01 / options.h < prev    next >
C/C++ Source or Header  |  1993-04-10  |  3KB  |  100 lines

  1. /*
  2.  * Copyright (c) 1990 Michael A. Cooper.
  3.  * This software may be freely distributed provided it is not sold for 
  4.  * profit and the author is credited appropriately.
  5.  */
  6.  
  7. /*
  8.  * $Header: /src/common/usc/lib/libgen/RCS/options.h,v 1.7 1990/12/15 18:13:30 mcooper Exp mcooper $
  9.  *
  10.  * $Log: options.h,v $
  11.  * Revision 1.7  1990/12/15  18:13:30  mcooper
  12.  * Add copywrite notice.
  13.  *
  14.  * Revision 1.6  90/11/13  15:28:39  mcooper
  15.  * Add OptBool cvtarg routine.
  16.  * 
  17.  * Revision 1.5  90/10/29  19:34:03  mcooper
  18.  * Fixed comment for NoArg.
  19.  * 
  20.  * Revision 1.4  90/10/29  18:48:43  mcooper
  21.  * Cleanup some comments.
  22.  * 
  23.  * Revision 1.3  90/10/29  14:47:29  mcooper
  24.  * UsageString is now a real function.
  25.  * 
  26.  * Revision 1.2  90/10/26  15:55:44  mcooper
  27.  * Add defines for "__" and ArgHidden.
  28.  * 
  29.  * Revision 1.1  90/10/26  14:42:53  mcooper
  30.  * Initial revision
  31.  * 
  32.  */
  33.  
  34.  
  35. #include <stdio.h>
  36. #include <sys/types.h>
  37. #include <sys/errno.h>
  38.  
  39. #define Num_Opts(o)    (sizeof(o)/sizeof(OptionDescRec))
  40. #define HELPSTR        "-help"
  41. #define __        (caddr_t)
  42.  
  43. #ifndef SYSERR
  44. #define SYSERR        sys_errlist[errno]
  45. #endif
  46. #ifndef TRUE
  47. #define TRUE    1
  48. #endif
  49. #ifndef FALSE
  50. #define FALSE    0
  51. #endif
  52.  
  53. /*
  54.  * Values for OptionDescRec.flags.
  55.  */
  56. #define NoArg        0x001    /* No argument for this option.  Use
  57.                    OptionDescRec.value. */
  58. #define IsArg        0x002    /* Value is the option string itself */
  59. #define SepArg        0x004    /* Value is in next argument in argv */
  60. #define StickyArg    0x008    /* Value is characters immediately following 
  61.                    option */
  62. #define SkipArg        0x010    /* Ignore this option and the next argument in 
  63.                    argv */
  64. #define SkipLine    0x020    /* Ignore this option and the rest of argv */
  65. #define SkipNArgs    0x040    /* Ignore this option and the next 
  66.                    OptionDescRes.value arguments in argv */
  67. #define ArgHidden    0x080    /* Don't show in usage or help messages */
  68.  
  69. /*
  70.  * Option description record.
  71.  */
  72. typedef struct {
  73.     char    *option;        /* Option string in argv        */
  74.     int         flags;            /* Flag bits                */
  75.     int        (*cvtarg)();        /* Function to convert argument     */
  76.     caddr_t     valp;            /* Variable to set            */
  77.     caddr_t     value;            /* Default value to provide        */
  78.     char    *usage;            /* Usage message            */
  79.     char    *desc;            /* Description message            */
  80. } OptionDescRec, *OptionDescList;
  81.  
  82. void UsageOptions();
  83. void HelpOptions();
  84. void UserError();
  85. int ParseOptions();
  86. OptionDescRec *FindOption();
  87.  
  88. int OptBool();
  89. int OptInt();
  90. int OptLong();
  91. int OptShort();
  92. int OptStr();
  93.  
  94. extern char *OptionChars;
  95. extern int errno;
  96. extern char *sys_errlist[];
  97. extern long strtol();
  98. extern char *malloc();
  99. extern char *strcpy();
  100.