[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.8 and 1.16

version 1.8, 2009/06/22 12:22:35 version 1.16, 2010/04/03 12:46:35
Line 14 
Line 14 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
   #ifdef HAVE_CONFIG_H
   #include "config.h"
   #endif
   
 #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 35  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 43  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 57  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   * FIXME: this is repeated in print_text() (html.c) and term_word()
 mdoc_isescape(const char *p)   * (term.c).
 {   */
         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)
 {  {
   
         switch (p) {          switch (p) {
         case('|'):          case('|'): /* FIXME! */
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
           case('('):
                   /* FALLTHROUGH */
           case('['):
                   return(1);
         case('.'):          case('.'):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case(','):          case(','):
Line 154  mdoc_iscdelim(char p)
Line 88  mdoc_iscdelim(char p)
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case('!'):          case('!'):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case('('):  
                 /* FALLTHROUGH */  
         case(')'):          case(')'):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case('['):  
                 /* FALLTHROUGH */  
         case(']'):          case(']'):
                 /* FALLTHROUGH */                  return(2);
         case('{'):  
                 /* FALLTHROUGH */  
         case('}'):  
                 return(1);  
         default:          default:
                 break;                  break;
         }          }
Line 196  mdoc_atosec(const char *p)
Line 122  mdoc_atosec(const char *p)
                         return(secnames[i].sec);                          return(secnames[i].sec);
   
         return(SEC_CUSTOM);          return(SEC_CUSTOM);
 }  
   
   
 time_t  
 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);  
 }  }
   
   

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.16

CVSweb