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

Diff for /mandoc/Attic/mdoc_strings.c between version 1.7 and 1.13

version 1.7, 2009/06/17 10:53:32 version 1.13, 2009/11/02 06:22:46
Line 17 
Line 17 
 #include <sys/types.h>  #include <sys/types.h>
   
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
   #include <time.h>
   
 #include "libmdoc.h"  #include "libmdoc.h"
   
Line 31  struct mdoc_secname {
Line 31  struct mdoc_secname {
         enum mdoc_sec    sec;   /* Corresponding section. */          enum mdoc_sec    sec;   /* Corresponding section. */
 };  };
   
 #define SECNAME_MAX     (18)  #define SECNAME_MAX     (20)
   
 static  const struct mdoc_secname secnames[SECNAME_MAX] = {  static  const struct mdoc_secname secnames[SECNAME_MAX] = {
         { "NAME", SEC_NAME },          { "NAME", SEC_NAME },
Line 39  static const struct mdoc_secname secnames[SECNAME_MAX]
Line 39  static const struct mdoc_secname secnames[SECNAME_MAX]
         { "SYNOPSIS", SEC_SYNOPSIS },          { "SYNOPSIS", SEC_SYNOPSIS },
         { "DESCRIPTION", SEC_DESCRIPTION },          { "DESCRIPTION", SEC_DESCRIPTION },
         { "IMPLEMENTATION NOTES", SEC_IMPLEMENTATION },          { "IMPLEMENTATION NOTES", SEC_IMPLEMENTATION },
           { "EXIT STATUS", SEC_EXIT_STATUS },
         { "RETURN VALUES", SEC_RETURN_VALUES },          { "RETURN VALUES", SEC_RETURN_VALUES },
         { "ENVIRONMENT", SEC_ENVIRONMENT },          { "ENVIRONMENT", SEC_ENVIRONMENT },
         { "FILES", SEC_FILES },          { "FILES", SEC_FILES },
Line 52  static const struct mdoc_secname secnames[SECNAME_MAX]
Line 53  static const struct mdoc_secname secnames[SECNAME_MAX]
         { "AUTHORS", SEC_AUTHORS },          { "AUTHORS", SEC_AUTHORS },
         { "CAVEATS", SEC_CAVEATS },          { "CAVEATS", SEC_CAVEATS },
         { "BUGS", SEC_BUGS },          { "BUGS", SEC_BUGS },
           { "SECURITY CONSIDERATIONS", SEC_SECURITY }
 };  };
   
 #ifdef __linux__  
 extern  char            *strptime(const char *, const char *, struct tm *);  
 #endif  
   
   
 size_t  
 mdoc_isescape(const char *p)  
 {  
         size_t           c;  
   
         if ('\\' != *p++)  
                 return(0);  
   
         switch (*p) {  
         case ('\\'):  
                 /* FALLTHROUGH */  
         case ('\''):  
                 /* FALLTHROUGH */  
         case ('`'):  
                 /* FALLTHROUGH */  
         case ('q'):  
                 /* FALLTHROUGH */  
         case ('-'):  
                 /* FALLTHROUGH */  
         case ('~'):  
                 /* FALLTHROUGH */  
         case ('^'):  
                 /* FALLTHROUGH */  
         case ('%'):  
                 /* FALLTHROUGH */  
         case ('0'):  
                 /* FALLTHROUGH */  
         case (' '):  
                 /* FALLTHROUGH */  
         case ('|'):  
                 /* FALLTHROUGH */  
         case ('&'):  
                 /* FALLTHROUGH */  
         case ('.'):  
                 /* FALLTHROUGH */  
         case (':'):  
                 /* FALLTHROUGH */  
         case ('e'):  
                 return(2);  
         case ('*'):  
                 if (0 == *++p || ! isgraph((u_char)*p))  
                         return(0);  
                 switch (*p) {  
                 case ('('):  
                         if (0 == *++p || ! isgraph((u_char)*p))  
                                 return(0);  
                         return(4);  
                 case ('['):  
                         for (c = 3, p++; *p && ']' != *p; p++, c++)  
                                 if ( ! isgraph((u_char)*p))  
                                         break;  
                         return(*p == ']' ? c : 0);  
                 default:  
                         break;  
                 }  
                 return(3);  
         case ('('):  
                 if (0 == *++p || ! isgraph((u_char)*p))  
                         return(0);  
                 if (0 == *++p || ! isgraph((u_char)*p))  
                         return(0);  
                 return(4);  
         case ('['):  
                 break;  
         default:  
                 return(0);  
         }  
   
         for (c = 3, p++; *p && ']' != *p; p++, c++)  
                 if ( ! isgraph((u_char)*p))  
                         break;  
   
         return(*p == ']' ? c : 0);  
 }  
   
   
 int  int
 mdoc_iscdelim(char p)  mdoc_iscdelim(char p)
 {  {
Line 199  mdoc_atosec(const char *p)
Line 121  mdoc_atosec(const char *p)
 }  }
   
   
 time_t  /* FIXME: move this into an editable .in file. */
 mdoc_atotime(const char *p)  
 {  
         struct tm        tm;  
         char            *pp;  
   
         bzero(&tm, sizeof(struct tm));  
   
         if (0 == strcmp(p, "$" "Mdocdate$"))  
                 return(time(NULL));  
         if ((pp = strptime(p, "$" "Mdocdate: %b %d %Y $", &tm)) && 0 == *pp)  
                 return(mktime(&tm));  
         /* XXX - this matches "June 1999", which is wrong. */  
         if ((pp = strptime(p, "%b %d %Y", &tm)) && 0 == *pp)  
                 return(mktime(&tm));  
         if ((pp = strptime(p, "%b %d, %Y", &tm)) && 0 == *pp)  
                 return(mktime(&tm));  
   
         return(0);  
 }  
   
   
 size_t  size_t
 mdoc_macro2len(int macro)  mdoc_macro2len(int macro)
 {  {
Line 255  mdoc_macro2len(int macro)
Line 156  mdoc_macro2len(int macro)
         case(MDOC_Em):          case(MDOC_Em):
                 return(10);                  return(10);
         case(MDOC_Er):          case(MDOC_Er):
                 return(12);                  return(17);
         case(MDOC_Ev):          case(MDOC_Ev):
                 return(15);                  return(15);
         case(MDOC_Fa):          case(MDOC_Fa):

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

CVSweb