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

Diff for /mandoc/Attic/xml.c between version 1.1 and 1.2

version 1.1, 2008/11/30 21:41:35 version 1.2, 2008/11/30 23:05:57
Line 74  static int   mbuf_putstring(struct md_xml *, 
Line 74  static int   mbuf_putstring(struct md_xml *, 
                                 const char *);                                  const char *);
 static  int              mbuf_nputstring(struct md_xml *,  static  int              mbuf_nputstring(struct md_xml *,
                                 const char *, size_t);                                  const char *, size_t);
   static  int              mbuf_puts(struct md_xml *, const char *);
   static  int              mbuf_nputs(struct md_xml *,
                                   const char *, size_t);
   
   
 static int  static int
Line 87  mbuf_putstring(struct md_xml *p, const char *buf)
Line 90  mbuf_putstring(struct md_xml *p, const char *buf)
 static int  static int
 mbuf_nputstring(struct md_xml *p, const char *buf, size_t sz)  mbuf_nputstring(struct md_xml *p, const char *buf, size_t sz)
 {  {
           size_t           i;
   
           for (i = 0; i < sz; i++) {
                   switch (buf[i]) {
                   case ('&'):
                           if ( ! md_buf_puts(p->mbuf, "&amp;", 5))
                                   return(0);
                           p->pos += 5;
                           break;
                   case ('"'):
                           if ( ! md_buf_puts(p->mbuf, "&quot;", 6))
                                   return(0);
                           p->pos += 6;
                           break;
                   default:
                           if ( ! md_buf_putchar(p->mbuf, buf[i]))
                                   return(0);
                           p->pos++;
                           break;
                   }
           }
           return(1);
   }
   
   
   static int
   mbuf_nputs(struct md_xml *p, const char *buf, size_t sz)
   {
   
         p->pos += sz;          p->pos += sz;
         return(md_buf_puts(p->mbuf, buf, sz));          return(md_buf_puts(p->mbuf, buf, sz));
 }  }
   
   
 static int  static int
   mbuf_puts(struct md_xml *p, const char *buf)
   {
   
           return(mbuf_nputs(p, buf, strlen(buf)));
   }
   
   
   static int
 mbuf_indent(struct md_xml *p)  mbuf_indent(struct md_xml *p)
 {  {
         size_t           i;          size_t           i;
Line 169  mbuf_data(struct md_xml *p, int space, char *buf)
Line 208  mbuf_data(struct md_xml *p, int space, char *buf)
                         if ( ! mbuf_indent(p))                          if ( ! mbuf_indent(p))
                                 return(0);                                  return(0);
                 } else if (space) {                  } else if (space) {
                         if ( ! mbuf_nputstring(p, " ", 1))                          if ( ! mbuf_nputs(p, " ", 1))
                                 return(0);                                  return(0);
                 }                  }
   
Line 253  roffhead(void *arg)
Line 292  roffhead(void *arg)
         assert(arg);          assert(arg);
         p = (struct md_xml *)arg;          p = (struct md_xml *)arg;
   
         if ( ! mbuf_putstring(p, "<?xml version=\"1.0\" "          if ( ! mbuf_puts(p, "<?xml version=\"1.0\" "
                                 "encoding=\"UTF-8\"?>\n"))                                  "encoding=\"UTF-8\"?>\n"))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, "<block:mdoc>", 12))          if ( ! mbuf_puts(p, "<mdoc xmlns:block=\"block\" "
                                   "xmlns:special=\"special\" "
                                   "xmlns:inline=\"inline\">"))
                 return(0);                  return(0);
   
         p->indent++;          p->indent++;
Line 276  rofftail(void *arg)
Line 317  rofftail(void *arg)
         if (0 != p->pos && ! mbuf_newline(p))          if (0 != p->pos && ! mbuf_newline(p))
                 return(0);                  return(0);
   
         if ( ! mbuf_nputstring(p, "</block:mdoc>", 13))          if ( ! mbuf_puts(p, "</mdoc>"))
                 return(0);                  return(0);
   
         p->last = MD_BLKOUT;          p->last = MD_BLKOUT;
Line 311  roffblkin(void *arg, int tok, int *argc, char **argv)
Line 352  roffblkin(void *arg, int tok, int *argc, char **argv)
         } else if ( ! mbuf_indent(p))          } else if ( ! mbuf_indent(p))
                 return(0);                  return(0);
   
         if ( ! mbuf_nputstring(p, "<", 1))          if ( ! mbuf_nputs(p, "<", 1))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, "block:", 6))          if ( ! mbuf_nputs(p, "block:", 6))
                 return(0);                  return(0);
         if ( ! mbuf_putstring(p, toknames[tok]))          if ( ! mbuf_puts(p, toknames[tok]))
                 return(0);                  return(0);
   
           /* FIXME: xml won't like standards args (e.g., p1003.1-90). */
   
         for (i = 0; ROFF_ARGMAX != argc[i]; i++) {          for (i = 0; ROFF_ARGMAX != argc[i]; i++) {
                 if ( ! mbuf_nputstring(p, " ", 1))                  if ( ! mbuf_nputs(p, " ", 1))
                         return(0);                          return(0);
                 if ( ! mbuf_putstring(p, tokargnames[argc[i]]))                  if ( ! mbuf_puts(p, tokargnames[argc[i]]))
                         return(0);                          return(0);
                 if ( ! mbuf_nputstring(p, "=\"", 2))                  if ( ! mbuf_nputs(p, "=\"", 2))
                         return(0);                          return(0);
                 if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true"))                  if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true"))
                         return(0);                          return(0);
                 if ( ! mbuf_nputstring(p, "\"", 1))                  if ( ! mbuf_nputs(p, "\"", 1))
                         return(0);                          return(0);
         }          }
   
         if ( ! mbuf_nputstring(p, ">", 1))          if ( ! mbuf_nputs(p, ">", 1))
                 return(0);                  return(0);
   
         p->last = MD_BLKIN;          p->last = MD_BLKIN;
Line 358  roffblkout(void *arg, int tok)
Line 401  roffblkout(void *arg, int tok)
         } else if ( ! mbuf_indent(p))          } else if ( ! mbuf_indent(p))
                 return(0);                  return(0);
   
         if ( ! mbuf_nputstring(p, "</", 2))          if ( ! mbuf_nputs(p, "</", 2))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, "block:", 6))          if ( ! mbuf_nputs(p, "block:", 6))
                 return(0);                  return(0);
         if ( ! mbuf_putstring(p, toknames[tok]))          if ( ! mbuf_puts(p, toknames[tok]))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, ">", 1))          if ( ! mbuf_nputs(p, ">", 1))
                 return(0);                  return(0);
   
         p->last = MD_BLKOUT;          p->last = MD_BLKOUT;
Line 396  roffin(void *arg, int tok, int *argc, char **argv)
Line 439  roffin(void *arg, int tok, int *argc, char **argv)
                 case (MD_TEXT):                  case (MD_TEXT):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case (MD_OUT):                  case (MD_OUT):
                         if ( ! mbuf_nputstring(p, " ", 1))                          if ( ! mbuf_nputs(p, " ", 1))
                                 return(0);                                  return(0);
                         break;                          break;
                 default:                  default:
Line 407  roffin(void *arg, int tok, int *argc, char **argv)
Line 450  roffin(void *arg, int tok, int *argc, char **argv)
   
         p->last = MD_IN;          p->last = MD_IN;
   
         if ( ! mbuf_nputstring(p, "<", 1))          if ( ! mbuf_nputs(p, "<", 1))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, "inline:", 7))          if ( ! mbuf_nputs(p, "inline:", 7))
                 return(0);                  return(0);
         if ( ! mbuf_putstring(p, toknames[tok]))          if ( ! mbuf_puts(p, toknames[tok]))
                 return(0);                  return(0);
   
         for (i = 0; ROFF_ARGMAX != argc[i]; i++) {          for (i = 0; ROFF_ARGMAX != argc[i]; i++) {
                 if ( ! mbuf_nputstring(p, " ", 1))                  if ( ! mbuf_nputs(p, " ", 1))
                         return(0);                          return(0);
                 if ( ! mbuf_putstring(p, tokargnames[argc[i]]))                  if ( ! mbuf_puts(p, tokargnames[argc[i]]))
                         return(0);                          return(0);
                 if ( ! mbuf_nputstring(p, "=\"", 2))                  if ( ! mbuf_nputs(p, "=\"", 2))
                         return(0);                          return(0);
                 if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true"))                  if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true"))
                         return(0);                          return(0);
                 if ( ! mbuf_nputstring(p, "\"", 1))                  if ( ! mbuf_nputs(p, "\"", 1))
                         return(0);                          return(0);
         }          }
         return(mbuf_nputstring(p, ">", 1));          return(mbuf_nputs(p, ">", 1));
 }  }
   
   
Line 443  roffout(void *arg, int tok)
Line 486  roffout(void *arg, int tok)
   
         p->last = MD_OUT;          p->last = MD_OUT;
   
         if ( ! mbuf_nputstring(p, "</", 2))          if ( ! mbuf_nputs(p, "</", 2))
                 return(0);                  return(0);
         if ( ! mbuf_nputstring(p, "inline:", 7))          if ( ! mbuf_nputs(p, "inline:", 7))
                 return(0);                  return(0);
         if ( ! mbuf_putstring(p, toknames[tok]))          if ( ! mbuf_puts(p, toknames[tok]))
                 return(0);                  return(0);
         return(mbuf_nputstring(p, ">", 1));          return(mbuf_nputs(p, ">", 1));
 }  }
   
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

CVSweb