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

Diff for /mandoc/man_term.c between version 1.124 and 1.127

version 1.124, 2011/11/18 17:04:06 version 1.127, 2012/01/03 15:16:24
Line 68  static void    print_man_foot(struct termp *, const vo
Line 68  static void    print_man_foot(struct termp *, const vo
 static  void              print_bvspace(struct termp *,  static  void              print_bvspace(struct termp *,
                                 const struct man_node *);                                  const struct man_node *);
   
 static  int               pre_alternate(DECL_ARGS);  
 static  int               pre_B(DECL_ARGS);  static  int               pre_B(DECL_ARGS);
 static  int               pre_HP(DECL_ARGS);  static  int               pre_HP(DECL_ARGS);
 static  int               pre_I(DECL_ARGS);  static  int               pre_I(DECL_ARGS);
 static  int               pre_IP(DECL_ARGS);  static  int               pre_IP(DECL_ARGS);
   static  int               pre_OP(DECL_ARGS);
 static  int               pre_PP(DECL_ARGS);  static  int               pre_PP(DECL_ARGS);
 static  int               pre_RS(DECL_ARGS);  static  int               pre_RS(DECL_ARGS);
 static  int               pre_SH(DECL_ARGS);  static  int               pre_SH(DECL_ARGS);
 static  int               pre_SS(DECL_ARGS);  static  int               pre_SS(DECL_ARGS);
 static  int               pre_TP(DECL_ARGS);  static  int               pre_TP(DECL_ARGS);
   static  int               pre_alternate(DECL_ARGS);
   static  int               pre_ft(DECL_ARGS);
 static  int               pre_ign(DECL_ARGS);  static  int               pre_ign(DECL_ARGS);
 static  int               pre_in(DECL_ARGS);  static  int               pre_in(DECL_ARGS);
 static  int               pre_literal(DECL_ARGS);  static  int               pre_literal(DECL_ARGS);
 static  int               pre_sp(DECL_ARGS);  static  int               pre_sp(DECL_ARGS);
 static  int               pre_ft(DECL_ARGS);  
   
 static  void              post_IP(DECL_ARGS);  static  void              post_IP(DECL_ARGS);
 static  void              post_HP(DECL_ARGS);  static  void              post_HP(DECL_ARGS);
Line 125  static const struct termact termacts[MAN_MAX] = {
Line 126  static const struct termact termacts[MAN_MAX] = {
         { pre_ign, NULL, 0 }, /* AT */          { pre_ign, NULL, 0 }, /* AT */
         { pre_in, NULL, MAN_NOTEXT }, /* in */          { pre_in, NULL, MAN_NOTEXT }, /* in */
         { pre_ft, NULL, MAN_NOTEXT }, /* ft */          { pre_ft, NULL, MAN_NOTEXT }, /* ft */
           { pre_OP, NULL, 0 }, /* OP */
 };  };
   
   
Line 324  pre_B(DECL_ARGS)
Line 326  pre_B(DECL_ARGS)
   
 /* ARGSUSED */  /* ARGSUSED */
 static int  static int
   pre_OP(DECL_ARGS)
   {
   
           term_word(p, "[");
           p->flags |= TERMP_NOSPACE;
   
           if (NULL != (n = n->child)) {
                   term_fontrepl(p, TERMFONT_BOLD);
                   term_word(p, n->string);
           }
           if (NULL != n && NULL != n->next) {
                   term_fontrepl(p, TERMFONT_UNDER);
                   term_word(p, n->next->string);
           }
   
           term_fontrepl(p, TERMFONT_NONE);
           p->flags |= TERMP_NOSPACE;
           term_word(p, "]");
           return(0);
   }
   
   /* ARGSUSED */
   static int
 pre_ft(DECL_ARGS)  pre_ft(DECL_ARGS)
 {  {
         const char      *cp;          const char      *cp;
Line 963  print_man_foot(struct termp *p, const void *arg)
Line 988  print_man_foot(struct termp *p, const void *arg)
         const struct man_meta *meta;          const struct man_meta *meta;
   
         meta = (const struct man_meta *)arg;          meta = (const struct man_meta *)arg;
           assert(meta->title);
           assert(meta->msec);
           assert(meta->date);
   
         term_fontrepl(p, TERMFONT_NONE);          term_fontrepl(p, TERMFONT_NONE);
   
         term_vspace(p);          term_vspace(p);
         term_vspace(p);  
         term_vspace(p);  
         snprintf(title, BUFSIZ, "%s(%s)", meta->title ? meta->title : "",  
             meta->msec ? meta->msec : "");  
         datelen = term_strlen(p, meta->date ? meta->date : "");  
   
           /*
            * Temporary, undocumented option to imitate mdoc(7) output.
            * In the bottom right corner, use the source instead of
            * the title.
            */
   
           if ( ! p->mdocstyle) {
                   term_vspace(p);
                   term_vspace(p);
                   snprintf(title, BUFSIZ, "%s(%s)", meta->title, meta->msec);
           } else if (meta->source) {
                   strlcpy(title, meta->source, BUFSIZ);
           } else {
                   title[0] = '\0';
           }
           datelen = term_strlen(p, meta->date);
   
           /* Bottom left corner: manual source. */
   
         p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;          p->flags |= TERMP_NOSPACE | TERMP_NOBREAK;
         p->offset = 0;          p->offset = 0;
         p->rmargin = (p->maxrmargin - datelen + term_len(p, 1)) / 2;          p->rmargin = (p->maxrmargin - datelen + term_len(p, 1)) / 2;
Line 981  print_man_foot(struct termp *p, const void *arg)
Line 1023  print_man_foot(struct termp *p, const void *arg)
                 term_word(p, meta->source);                  term_word(p, meta->source);
         term_flushln(p);          term_flushln(p);
   
           /* At the bottom in the middle: manual date. */
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         p->offset = p->rmargin;          p->offset = p->rmargin;
         p->rmargin = p->maxrmargin - term_strlen(p, title);          p->rmargin = p->maxrmargin - term_strlen(p, title);
         if (p->offset + datelen >= p->rmargin)          if (p->offset + datelen >= p->rmargin)
                 p->rmargin = p->offset + datelen;                  p->rmargin = p->offset + datelen;
   
         term_word(p, meta->date ? meta->date : "");          term_word(p, meta->date);
         term_flushln(p);          term_flushln(p);
   
           /* Bottom right corner: manual title and section. */
   
         p->flags &= ~TERMP_NOBREAK;          p->flags &= ~TERMP_NOBREAK;
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         p->offset = p->rmargin;          p->offset = p->rmargin;
Line 1008  print_man_head(struct termp *p, const void *arg)
Line 1054  print_man_head(struct termp *p, const void *arg)
         const struct man_meta *m;          const struct man_meta *m;
   
         m = (const struct man_meta *)arg;          m = (const struct man_meta *)arg;
           assert(m->title);
           assert(m->msec);
   
         /*  
          * Note that old groff would spit out some spaces before the  
          * header.  We discontinue this strange behaviour, but at one  
          * point we did so here.  
          */  
   
         p->offset = 0;  
         p->rmargin = p->maxrmargin;  
   
         buf[0] = title[0] = '\0';  
   
         if (m->vol)          if (m->vol)
                 strlcpy(buf, m->vol, BUFSIZ);                  strlcpy(buf, m->vol, BUFSIZ);
           else
                   buf[0] = '\0';
         buflen = term_strlen(p, buf);          buflen = term_strlen(p, buf);
   
         snprintf(title, BUFSIZ, "%s(%s)", m->title ? m->title : "",          /* Top left corner: manual title and section. */
             m->msec ? m->msec : "");  
           snprintf(title, BUFSIZ, "%s(%s)", m->title, m->msec);
         titlen = term_strlen(p, title);          titlen = term_strlen(p, title);
   
         p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;          p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
Line 1038  print_man_head(struct termp *p, const void *arg)
Line 1078  print_man_head(struct termp *p, const void *arg)
         term_word(p, title);          term_word(p, title);
         term_flushln(p);          term_flushln(p);
   
           /* At the top in the middle: manual volume. */
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         p->offset = p->rmargin;          p->offset = p->rmargin;
         p->rmargin = p->offset + buflen + titlen < p->maxrmargin ?          p->rmargin = p->offset + buflen + titlen < p->maxrmargin ?
Line 1046  print_man_head(struct termp *p, const void *arg)
Line 1088  print_man_head(struct termp *p, const void *arg)
         term_word(p, buf);          term_word(p, buf);
         term_flushln(p);          term_flushln(p);
   
           /* Top right corner: title and section, again. */
   
         p->flags &= ~TERMP_NOBREAK;          p->flags &= ~TERMP_NOBREAK;
         if (p->rmargin + titlen <= p->maxrmargin) {          if (p->rmargin + titlen <= p->maxrmargin) {
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
Line 1060  print_man_head(struct termp *p, const void *arg)
Line 1104  print_man_head(struct termp *p, const void *arg)
         p->rmargin = p->maxrmargin;          p->rmargin = p->maxrmargin;
   
         /*          /*
          * Groff likes to have some leading spaces before content.  Well           * Groff prints three blank lines before the content.
          * that's fine by me.           * Do the same, except in the temporary, undocumented
            * mode imitating mdoc(7) output.
          */           */
   
         term_vspace(p);          term_vspace(p);
         term_vspace(p);          if ( ! p->mdocstyle) {
         term_vspace(p);                  term_vspace(p);
                   term_vspace(p);
           }
 }  }

Legend:
Removed from v.1.124  
changed lines
  Added in v.1.127

CVSweb