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

Diff for /mandoc/roff.c between version 1.34 and 1.35

version 1.34, 2008/12/02 18:26:57 version 1.35, 2008/12/03 19:21:58
Line 134  static int    roffcall(struct rofftree *, int, char **
Line 134  static int    roffcall(struct rofftree *, int, char **
 static  int               roffparse(struct rofftree *, char *);  static  int               roffparse(struct rofftree *, char *);
 static  int               textparse(const struct rofftree *, char *);  static  int               textparse(const struct rofftree *, char *);
   
 #ifdef __linux__ /* FIXME: remove */  #ifdef __linux__
 static  size_t            strlcat(char *, const char *, size_t);  extern  size_t            strlcat(char *, const char *, size_t);
 static  size_t            strlcpy(char *, const char *, size_t);  extern  size_t            strlcpy(char *, const char *, size_t);
 extern  int               vsnprintf(char *, size_t,  extern  int               vsnprintf(char *, size_t,
                                 const char *, va_list);                                  const char *, va_list);
 extern  char             *strptime(const char *, const char *,  extern  char             *strptime(const char *, const char *,
Line 1227  roff_layout(ROFFCALL_ARGS) 
Line 1227  roff_layout(ROFFCALL_ARGS) 
                 return(0);                  return(0);
         } else if (ROFF_EXIT == type) {          } else if (ROFF_EXIT == type) {
                 roffnode_free(tree);                  roffnode_free(tree);
                   if ( ! (*tree->cb.roffblkbodyout)(tree->arg, tok))
                           return(0);
                 return((*tree->cb.roffblkout)(tree->arg, tok));                  return((*tree->cb.roffblkout)(tree->arg, tok));
         }          }
   
Line 1248  roff_layout(ROFFCALL_ARGS) 
Line 1250  roff_layout(ROFFCALL_ARGS) 
         if ( ! (*tree->cb.roffblkin)(tree->arg, tok, argcp, argvp))          if ( ! (*tree->cb.roffblkin)(tree->arg, tok, argcp, argvp))
                 return(0);                  return(0);
         if (NULL == *argv)          if (NULL == *argv)
                 return(1);                  return((*tree->cb.roffblkbodyin)
         if ( ! (*tree->cb.roffin)(tree->arg, tok, argcp, argvp))                                  (tree->arg, tok, argcp, argvp));
   
           if ( ! (*tree->cb.roffblkheadin)(tree->arg, tok, argcp, argvp))
                 return(0);                  return(0);
   
         /*          /*
Line 1264  roff_layout(ROFFCALL_ARGS) 
Line 1268  roff_layout(ROFFCALL_ARGS) 
                                 return(0);                                  return(0);
                         i = 1;                          i = 1;
                 }                  }
                 return((*tree->cb.roffout)(tree->arg, tok));                  if ( ! (*tree->cb.roffblkheadout)(tree->arg, tok))
                           return(0);
                   return((*tree->cb.roffblkbodyin)
                                   (tree->arg, tok, argcp, argvp));
         }          }
   
         /*          /*
Line 1293  roff_layout(ROFFCALL_ARGS) 
Line 1300  roff_layout(ROFFCALL_ARGS) 
          * macro.           * macro.
          */           */
   
         if (NULL == *argv)          if (NULL == *argv) {
                 return((*tree->cb.roffout)(tree->arg, tok));                  if ( ! (*tree->cb.roffblkheadout)(tree->arg, tok))
                           return(0);
                   return((*tree->cb.roffblkbodyin)
                                   (tree->arg, tok, argcp, argvp));
           }
   
         /*          /*
          * Expensive.  Scan to the end of line then work backwards until           * Expensive.  Scan to the end of line then work backwards until
Line 1304  roff_layout(ROFFCALL_ARGS) 
Line 1315  roff_layout(ROFFCALL_ARGS) 
         if ( ! roffpurgepunct(tree, argv))          if ( ! roffpurgepunct(tree, argv))
                 return(0);                  return(0);
   
         return((*tree->cb.roffout)(tree->arg, tok));          if ( ! (*tree->cb.roffblkheadout)(tree->arg, tok))
                   return(0);
           return((*tree->cb.roffblkbodyin)
                           (tree->arg, tok, argcp, argvp));
 }  }
   
   
Line 1445  roff_err(const struct rofftree *tree, const char *pos,
Line 1459  roff_err(const struct rofftree *tree, const char *pos,
                         ROFF_ERROR, tree->cur, pos, buf);                          ROFF_ERROR, tree->cur, pos, buf);
 }  }
   
   
 #ifdef __linux /* FIXME: remove. */  
 /*      $OpenBSD$       */  
   
 /*  
  * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>  
  *  
  * Permission to use, copy, modify, and distribute this software for any  
  * purpose with or without fee is hereby granted, provided that the  
  * above copyright notice and this permission notice appear in all  
  * copies.  
  *  
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL  
  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED  
  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE  
  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL  
  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR  
  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER  
  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR  
  * PERFORMANCE OF THIS SOFTWARE.  
  */  
 static size_t  
 strlcat(char *dst, const char *src, size_t siz)  
 {  
         char *d = dst;  
         const char *s = src;  
         size_t n = siz;  
         size_t dlen;  
   
         /* Find the end of dst and adjust bytes left but don't go past  
          * end */  
         while (n-- != 0 && *d != '\0')  
                 d++;  
         dlen = d - dst;  
         n = siz - dlen;  
   
         if (n == 0)  
                 return(dlen + strlen(s));  
         while (*s != '\0') {  
                 if (n != 1) {  
                         *d++ = *s;  
                         n--;  
                 }  
                 s++;  
         }  
         *d = '\0';  
   
         return(dlen + (s - src));       /* count does not include NUL */  
 }  
   
   
 static size_t  
 strlcpy(char *dst, const char *src, size_t siz)  
 {  
         char *d = dst;  
         const char *s = src;  
         size_t n = siz;  
   
         /* Copy as many bytes as will fit */  
         if (n != 0) {  
                 while (--n != 0) {  
                         if ((*d++ = *s++) == '\0')  
                                 break;  
                 }  
         }  
   
         /* Not enough room in dst, add NUL and traverse rest of src */  
         if (n == 0) {  
                 if (siz != 0)  
                         *d = '\0';              /* NUL-terminate dst */  
                 while (*s++)  
                         ;  
         }  
   
         return(s - src - 1);    /* count does not include NUL */  
 }  
 #endif /*__linux__*/  

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35

CVSweb