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

Diff for /mandoc/Attic/mmain.c between version 1.11 and 1.12

version 1.11, 2009/03/09 13:35:09 version 1.12, 2009/03/15 07:08:53
Line 42  struct mmain {
Line 42  struct mmain {
         struct mdoc      *mdoc;         /* Active parser. */          struct mdoc      *mdoc;         /* Active parser. */
         char             *buf;          /* Input buffer. */          char             *buf;          /* Input buffer. */
         size_t            bufsz;        /* Input buffer size. */          size_t            bufsz;        /* Input buffer size. */
         char             *in;           /* Input file name. */          const char       *in;           /* Input file name. */
         int               fdin;         /* Input file desc. */          int               fdin;         /* Input file desc. */
         int               pflags;       /* Parse flags. */          int               pflags;       /* Parse flags. */
 };  };
   
 extern  char             *__progname;  extern  char             *__progname;
   
   static  void              usage(const char *, const char *);
 static  int               optswarn(struct mmain *, char *);  static  int               optswarn(struct mmain *, char *);
 static  int               optsopt(struct mmain *, char *);  static  int               optsopt(struct mmain *, char *);
 static  int               parse(struct mmain *);  static  int               parse(struct mmain *);
Line 68  extern size_t    strlcat(char *, const char *, size_t)
Line 69  extern size_t    strlcat(char *, const char *, size_t)
  * Print our and our caller's usage message.   * Print our and our caller's usage message.
  */   */
 void  void
 mmain_usage(const char *help)  usage(const char *help, const char *args)
 {  {
   
         warnx("usage: %s %s%s[-v] [-foption...] [-Wwarn...] [infile]", __progname,          warnx("usage: %s %s%s[-v] [-foption...] [-Wwarn...]%s%s",
                         help ? help : "", help ? " " : "");                          __progname,
                           help ? help : "", help ? " " : "",
                           args ? " " : "", args ? args : "");
 }  }
   
   
Line 87  mmain_alloc(void)
Line 90  mmain_alloc(void)
         if (NULL == (p = calloc(1, sizeof(struct mmain))))          if (NULL == (p = calloc(1, sizeof(struct mmain))))
                 err(1, "malloc");                  err(1, "malloc");
   
         p->in = "-";  
         p->fdin = STDIN_FILENO;  
   
         return(p);          return(p);
 }  }
   
Line 102  mmain_alloc(void)
Line 102  mmain_alloc(void)
  */   */
 int  int
 mmain_getopt(struct mmain *p, int argc, char *argv[],  mmain_getopt(struct mmain *p, int argc, char *argv[],
                 const char *help, const char *u, void *arg,                  const char *help, const char *args,
                 int (*getopt_cb)(void *, int, const char *))                  const char *u, void *arg,
                   int (*getopt_cb)(void *, int, char *))
 {  {
         int              c;          int              c;
         char             opts[32]; /* XXX */          char             opts[32]; /* XXX */
Line 126  mmain_getopt(struct mmain *p, int argc, char *argv[], 
Line 127  mmain_getopt(struct mmain *p, int argc, char *argv[], 
                 switch (c) {                  switch (c) {
                 case ('f'):                  case ('f'):
                         if ( ! optsopt(p, optarg))                          if ( ! optsopt(p, optarg))
                                 return(-1);                                  mmain_exit(p, 1);
                         break;                          break;
                 case ('v'):                  case ('v'):
                         p->dbg++;                          p->dbg++;
                         break;                          break;
                 case ('V'):                  case ('V'):
                         (void)printf("%s %s\n", __progname, VERSION);                          (void)printf("%s %s\n", __progname, VERSION);
                         return(0);                          mmain_exit(p, 0);
                           /* NOTREACHED */
                 case ('W'):                  case ('W'):
                         if ( ! optswarn(p, optarg))                          if ( ! optswarn(p, optarg))
                                 return(-1);                                  mmain_exit(p, 1);
                         break;                          break;
                 case ('?'):                  case ('?'):
                         mmain_usage(help);                          usage(help, args);
                         return(-1);                          mmain_exit(p, 1);
                           /* NOTREACHED */
                 default:                  default:
                         assert(getopt_cb);                          assert(getopt_cb);
                         if ((*getopt_cb)(arg, c, optarg))                          if ((*getopt_cb)(arg, c, optarg))
                                 break;                                  break;
                         return(-1);                          mmain_exit(p, 1);
                           /* NOTREACHED */
                 }                  }
   
         argv += optind;          return(optind);
         if ((argc -= optind) > 0)  }
                 p->in = *argv++;  
   
         return(1);  
   void
   mmain_reset(struct mmain *p)
   {
   
           if (p->mdoc)
                   mdoc_free(p->mdoc);
           p->mdoc = NULL;
 }  }
   
   
 dead_pre void  void
 mmain_exit(struct mmain *p, int code)  mmain_free(struct mmain *p)
 {  {
   
         if (p->mdoc)          if (p->mdoc)
                 mdoc_free(p->mdoc);                  mdoc_free(p->mdoc);
         free(p);          free(p);
   }
   
   
   dead_pre void
   mmain_exit(struct mmain *p, int code)
   {
   
           mmain_free(p);
         exit(code);          exit(code);
 }  }
   
   
 struct mdoc *  void
 mmain_mdoc(struct mmain *p)  mmain_prepare(struct mmain *p, const char *in)
 {  {
         struct stat      st;          struct stat      st;
         int              c;  
         struct mdoc_cb   cb;  
   
         cb.mdoc_err = msg_err;          p->in = in;
         cb.mdoc_warn = msg_warn;          p->fdin = STDIN_FILENO;
         cb.mdoc_msg = msg_msg;  
   
         if (0 != strcmp(p->in, "-"))          if (0 != strcmp(p->in, "-"))
                 if (-1 == (p->fdin = open(p->in, O_RDONLY, 0))) {                  if (-1 == (p->fdin = open(p->in, O_RDONLY, 0))) {
                         warn("%s", p->in);                          warn("%s", p->in);
                         return(0);                          mmain_exit(p, 1);
                 }                  }
   
         /* Allocate a buffer to be BUFSIZ/block size. */          /* Allocate a buffer to be BUFSIZ/block size. */
Line 195  mmain_mdoc(struct mmain *p)
Line 210  mmain_mdoc(struct mmain *p)
         p->buf = malloc(p->bufsz);          p->buf = malloc(p->bufsz);
         if (NULL == p->buf)          if (NULL == p->buf)
                 err(1, "malloc");                  err(1, "malloc");
   }
   
   
   struct mdoc *
   mmain_process(struct mmain *p)
   {
           int              c;
           struct mdoc_cb   cb;
   
           /* XXX - in mmain_alloc.*/
           cb.mdoc_err = msg_err;
           cb.mdoc_warn = msg_warn;
           cb.mdoc_msg = msg_msg;
   
         /* Allocate the parser. */          /* Allocate the parser. */
   
         p->mdoc = mdoc_alloc(p, p->pflags, &cb);          p->mdoc = mdoc_alloc(p, p->pflags, &cb);
Line 210  mmain_mdoc(struct mmain *p)
Line 238  mmain_mdoc(struct mmain *p)
                         warn("%s", p->in);                          warn("%s", p->in);
   
         return(c ? p->mdoc : NULL);          return(c ? p->mdoc : NULL);
   }
   
   
   struct mdoc *
   mmain_mdoc(struct mmain *p, const char *in)
   {
   
           mmain_prepare(p, in);
           return(mmain_process(p));
 }  }
   
   

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

CVSweb