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

Diff for /mandoc/main.c between version 1.10 and 1.15

version 1.10, 2009/03/23 14:22:11 version 1.15, 2009/03/25 21:03:13
Line 34  extern int    getsubopt(char **, char * const *, char 
Line 34  extern int    getsubopt(char **, char * const *, char 
 # ifndef __dead  # ifndef __dead
 #  define __dead __attribute__((__noreturn__))  #  define __dead __attribute__((__noreturn__))
 # endif  # endif
 #elif defined(__FreeBSD__)  #elif defined(__dead2)
 # ifndef __dead  # ifndef __dead
 #  define __dead __dead2  #  define __dead __dead2
 # endif  # endif
Line 54  struct curparse {
Line 54  struct curparse {
 #define WARN_WERR        (1 << 2)       /* Warnings->errors. */  #define WARN_WERR        (1 << 2)       /* Warnings->errors. */
 };  };
   
   #define IGN_SCOPE        (1 << 0) /* Flag to ignore scope. */
   #define IGN_ESCAPE       (1 << 1) /* Flag to ignore bad escapes. */
   #define IGN_MACRO        (1 << 2) /* Flag to ignore unknown macros. */
   
 enum    intt {  enum    intt {
         INTT_MDOC = 0,          INTT_MDOC = 0,
         INTT_MAN          INTT_MAN
Line 67  enum outt {
Line 71  enum outt {
         OUTT_LINT          OUTT_LINT
 };  };
   
 typedef int             (*out_run)(void *, const struct mdoc *);  typedef int             (*out_run)(void *, const struct man *,
                                   const struct mdoc *);
 typedef void            (*out_free)(void *);  typedef void            (*out_free)(void *);
   
 extern  char             *__progname;  extern  char             *__progname;
Line 75  extern char   *__progname;
Line 80  extern char   *__progname;
 extern  void             *ascii_alloc(void);  extern  void             *ascii_alloc(void);
 extern  void             *latin1_alloc(void);  extern  void             *latin1_alloc(void);
 extern  void             *utf8_alloc(void);  extern  void             *utf8_alloc(void);
 extern  int               terminal_run(void *, const struct mdoc *);  extern  int               terminal_run(void *, const struct man *,
 extern  int               tree_run(void *, const struct mdoc *);                                  const struct mdoc *);
   extern  int               tree_run(void *, const struct man *,
                                   const struct mdoc *);
 extern  void              terminal_free(void *);  extern  void              terminal_free(void *);
   
 static  int               foptions(int *, char *);  static  int               foptions(int *, char *);
Line 84  static int    toptions(enum outt *, char *);
Line 91  static int    toptions(enum outt *, char *);
 static  int               moptions(enum intt *, char *);  static  int               moptions(enum intt *, char *);
 static  int               woptions(int *, char *);  static  int               woptions(int *, char *);
 static  int               merr(void *, int, int, const char *);  static  int               merr(void *, int, int, const char *);
 static  int               mwarn(void *, int, int,  static  int               manwarn(void *, int, int, const char *);
   static  int               mdocwarn(void *, int, int,
                                 enum mdoc_warn, const char *);                                  enum mdoc_warn, const char *);
 static  int               file(struct buf *, struct buf *,  static  int               file(struct buf *, struct buf *,
                                 const char *,                                  const char *,
Line 100  __dead static void   usage(void);
Line 108  __dead static void   usage(void);
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         int              c, rc, fflags;          int              c, rc, fflags, pflags;
         struct mdoc_cb   cb;          struct mdoc_cb   mdoccb;
           struct man_cb    mancb;
         struct man      *man;          struct man      *man;
         struct mdoc     *mdoc;          struct mdoc     *mdoc;
         void            *outdata;          void            *outdata;
Line 188  main(int argc, char *argv[])
Line 197  main(int argc, char *argv[])
          * screen.  XXX - for now, no path for debugging messages.           * screen.  XXX - for now, no path for debugging messages.
          */           */
   
         cb.mdoc_msg = NULL;          mdoccb.mdoc_msg = NULL;
         cb.mdoc_err = merr;          mdoccb.mdoc_err = merr;
         cb.mdoc_warn = mwarn;          mdoccb.mdoc_warn = mdocwarn;
   
           mancb.man_err = merr;
           mancb.man_warn = manwarn;
   
         bzero(&ln, sizeof(struct buf));          bzero(&ln, sizeof(struct buf));
         bzero(&blk, sizeof(struct buf));          bzero(&blk, sizeof(struct buf));
   
         man = NULL;          man = NULL;
         mdoc = NULL;          mdoc = NULL;
           pflags = 0;
   
         switch (inttype) {          switch (inttype) {
         case (INTT_MAN):          case (INTT_MAN):
                 man = man_alloc();                  if (fflags & IGN_MACRO)
                           pflags |= MAN_IGN_MACRO;
   
                   man = man_alloc(&curp, pflags, &mancb);
                 break;                  break;
         default:          default:
                 mdoc = mdoc_alloc(&curp, fflags, &cb);                  if (fflags & IGN_SCOPE)
                           pflags |= MDOC_IGN_SCOPE;
                   if (fflags & IGN_ESCAPE)
                           pflags |= MDOC_IGN_ESCAPE;
                   if (fflags & IGN_MACRO)
                           pflags |= MDOC_IGN_MACRO;
   
                   mdoc = mdoc_alloc(&curp, pflags, &mdoccb);
                 break;                  break;
         }          }
   
Line 219  main(int argc, char *argv[])
Line 242  main(int argc, char *argv[])
   
                 if (c && NULL == outrun)                  if (c && NULL == outrun)
                         rc = 1;                          rc = 1;
 #if 0                  else if (c && outrun && (*outrun)(outdata, man, mdoc))
                 else if (c && outrun && (*outrun)(outdata, mdoc))  
                         rc = 1;                          rc = 1;
 #endif  
         } else {          } else {
                 while (*argv) {                  while (*argv) {
                         curp.file = *argv;                          curp.file = *argv;
                         c = file(&blk, &ln, *argv, man, mdoc);                          c = file(&blk, &ln, *argv, man, mdoc);
                         if ( ! c)                          if ( ! c)
                                 break;                                  break;
 #if 0                          if (outrun && ! (*outrun)(outdata, man, mdoc))
                         if (outrun && ! (*outrun)(outdata, mdoc))  
                                 break;                                  break;
 #endif  
                         if (man)                          if (man)
                                 man_reset(man);                                  man_reset(man);
                         if (mdoc)                          if (mdoc)
Line 272  __dead static void
Line 291  __dead static void
 usage(void)  usage(void)
 {  {
   
         (void)fprintf(stderr, "usage: %s\n", __progname);          (void)fprintf(stderr, "usage: %s [-V] [-foption...] "
                           "[-mformat] [-Toutput] [-Werr...]\n",
                           __progname);
         exit(1);          exit(1);
         /* NOTREACHED */          /* NOTREACHED */
 }  }
Line 443  foptions(int *fflags, char *arg)
Line 464  foptions(int *fflags, char *arg)
         while (*arg)          while (*arg)
                 switch (getsubopt(&arg, toks, &v)) {                  switch (getsubopt(&arg, toks, &v)) {
                 case (0):                  case (0):
                         *fflags |= MDOC_IGN_SCOPE;                          *fflags |= IGN_SCOPE;
                         break;                          break;
                 case (1):                  case (1):
                         *fflags |= MDOC_IGN_ESCAPE;                          *fflags |= IGN_ESCAPE;
                         break;                          break;
                 case (2):                  case (2):
                         *fflags |= MDOC_IGN_MACRO;                          *fflags |= IGN_MACRO;
                         break;                          break;
                 default:                  default:
                         warnx("bad argument: -f%s", arg);                          warnx("bad argument: -f%s", arg);
Line 514  merr(void *arg, int line, int col, const char *msg)
Line 535  merr(void *arg, int line, int col, const char *msg)
   
   
 static int  static int
 mwarn(void *arg, int line, int col,  mdocwarn(void *arg, int line, int col,
                 enum mdoc_warn type, const char *msg)                  enum mdoc_warn type, const char *msg)
 {  {
         struct curparse *curp;          struct curparse *curp;
Line 549  mwarn(void *arg, int line, int col, 
Line 570  mwarn(void *arg, int line, int col, 
 }  }
   
   
   static int
   manwarn(void *arg, int line, int col, const char *msg)
   {
           struct curparse *curp;
   
           curp = (struct curparse *)arg;
   
           if ( ! (curp->wflags & WARN_WSYNTAX))
                   return(1);
   
           warnx("%s:%d: syntax warning: %s (column %d)",
                           curp->file, line, msg, col);
   
           if ( ! (curp->wflags & WARN_WERR))
                   return(1);
   
           warnx("%s: considering warnings as errors",
                           __progname);
           return(0);
   }

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.15

CVSweb