[BACK]Return to mmain.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/Attic/mmain.c between version 1.2 and 1.7

version 1.2, 2009/02/23 07:09:13 version 1.7, 2009/03/08 18:02:36
Line 44  struct mmain {
Line 44  struct mmain {
         u_long            bufsz;        /* Input buffer size. */          u_long            bufsz;        /* Input buffer size. */
         char             *in;           /* Input file name. */          char             *in;           /* Input file name. */
         int               fdin;         /* Input file desc. */          int               fdin;         /* Input file desc. */
           int               pflags;       /* Parse flags. */
 };  };
   
 extern  char             *__progname;  extern  char             *__progname;
   
 static  int               getsopts(struct mmain *, char *);  static  int               optswarn(struct mmain *, char *);
   static  int               optsopt(struct mmain *, char *);
 static  int               parse(struct mmain *);  static  int               parse(struct mmain *);
 static  void              msg_msg(void *, int, int, const char *);  static  void              msg_msg(void *, int, int, const char *);
 static  int               msg_err(void *, int, int, const char *);  static  int               msg_err(void *, int, int, const char *);
Line 57  static int    msg_warn(void *, int, int, 
Line 59  static int    msg_warn(void *, int, int, 
   
 #ifdef __linux__  #ifdef __linux__
 extern  int               getsubopt(char **, char *const *, char **);  extern  int               getsubopt(char **, char *const *, char **);
   extern  size_t            strlcpy(char *, const char *, size_t);
   extern  size_t            strlcat(char *, const char *, size_t);
 #endif  #endif
   
   
Line 67  void
Line 71  void
 mmain_usage(const char *help)  mmain_usage(const char *help)
 {  {
   
         warnx("usage: %s %s%s[-v] [-Wwarn...] [infile]", __progname,          warnx("usage: %s %s%s[-v] [-foption...] [-Wwarn...] [infile]", __progname,
                         help ? help : "", help ? " " : "");                          help ? help : "", help ? " " : "");
 }  }
   
Line 106  mmain_getopt(struct mmain *p, int argc, char *argv[], 
Line 110  mmain_getopt(struct mmain *p, int argc, char *argv[], 
         size_t           sz;          size_t           sz;
   
         extern int       optind;          extern int       optind;
         extern int       optreset;  
   
         sz = strlcpy(opts, "vW:", 32);          sz = strlcpy(opts, "VvW:f:", 32);
         assert(sz < 32);          assert(sz < 32);
   
         if (u) {          if (u) {
Line 116  mmain_getopt(struct mmain *p, int argc, char *argv[], 
Line 119  mmain_getopt(struct mmain *p, int argc, char *argv[], 
                 assert(sz < 32);                  assert(sz < 32);
         }          }
   
           optind = 1;
   
         /* LINTED */          /* LINTED */
         while (-1 != (c = getopt(argc, argv, opts)))          while (-1 != (c = getopt(argc, argv, opts)))
                 switch (c) {                  switch (c) {
                   case ('f'):
                           if ( ! optsopt(p, optarg))
                                   return(-1);
                           break;
                 case ('v'):                  case ('v'):
                         p->dbg++;                          p->dbg++;
                         break;                          break;
                   case ('V'):
                           (void)printf("%s %s\n", __progname, VERSION);
                           return(0);
                 case ('W'):                  case ('W'):
                         if ( ! getsopts(p, optarg))                          if ( ! optswarn(p, optarg))
                                 return(0);                                  return(-1);
                         break;                          break;
                 case ('?'):                  case ('?'):
                         mmain_usage(help);                          mmain_usage(help);
                         return(0);                          return(-1);
                 default:                  default:
                         assert(getopt_cb);                          assert(getopt_cb);
                         if ((*getopt_cb)(arg, c, optarg))                          if ((*getopt_cb)(arg, c, optarg))
                                 break;                                  break;
                         return(0);                          return(-1);
                 }                  }
   
         argv += optind;          argv += optind;
Line 144  mmain_getopt(struct mmain *p, int argc, char *argv[], 
Line 156  mmain_getopt(struct mmain *p, int argc, char *argv[], 
 }  }
   
   
 __dead void  dead_pre void
 mmain_exit(struct mmain *p, int code)  mmain_exit(struct mmain *p, int code)
 {  {
   
         if (p->mdoc)          if (p->mdoc)
Line 186  mmain_mdoc(struct mmain *p)
Line 198  mmain_mdoc(struct mmain *p)
   
         /* Allocate the parser. */          /* Allocate the parser. */
   
         p->mdoc = mdoc_alloc(p, &cb);          p->mdoc = mdoc_alloc(p, p->pflags, &cb);
   
         /* Parse the input file. */          /* Parse the input file. */
   
Line 202  mmain_mdoc(struct mmain *p)
Line 214  mmain_mdoc(struct mmain *p)
   
   
 static int  static int
 getsopts(struct mmain *p, char *arg)  optsopt(struct mmain *p, char *arg)
 {  {
         char            *v;          char            *v;
           char            *toks[] = { "ign-scope", "ign-escape", NULL };
   
           while (*arg)
                   switch (getsubopt(&arg, toks, &v)) {
                   case (0):
                           p->pflags |= MDOC_IGN_SCOPE;
                           break;
                   case (1):
                           p->pflags |= MDOC_IGN_ESCAPE;
                           break;
                   default:
                           /* FIXME: report? */
                           return(0);
                   }
   
           return(1);
   }
   
   
   static int
   optswarn(struct mmain *p, char *arg)
   {
           char            *v;
         char            *toks[] = { "all", "compat",          char            *toks[] = { "all", "compat",
                                 "syntax", "error", NULL };                                  "syntax", "error", NULL };
   
Line 223  getsopts(struct mmain *p, char *arg)
Line 258  getsopts(struct mmain *p, char *arg)
                         p->warn |= MD_WARN_ERR;                          p->warn |= MD_WARN_ERR;
                         break;                          break;
                 default:                  default:
                           /* FIXME: report? */
                         return(0);                          return(0);
                 }                  }
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

CVSweb