Use good m_ functions, because it smell like a flower, version 2.
[apps/madmutt.git] / makedoc.c
index c897289..6451c48 100644 (file)
--- a/makedoc.c
+++ b/makedoc.c
  **
  **/
 
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <errno.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
+#include <lib-lib/lib-lib.h>
 
 #ifdef HAVE_GETOPT_H
 # include <getopt.h>
 #endif
 
-#ifndef HAVE_STRERROR
-#ifndef STDC_HEADERS
-extern int sys_nerr;
-extern char *sys_errlist[];
-#endif
-
-#define strerror(x) ((x) > 0 && (x) < sys_nerr) ? sys_errlist[(x)] : 0
-#endif /* !HAVE_STRERROR */
-
-extern int optind;
-
-#define BUFFSIZE 2048
-
-#define STRLEN(s) (s ? strlen(s) : 0)
-
 typedef struct {
   short seen;
   char *name;
@@ -66,7 +38,7 @@ static var_t *outbuf = NULL;
 
 static int var_cmp (const void *a, const void *b)
 {
-  return (strcmp (((var_t *) a)->name, ((var_t *) b)->name));
+  return (m_strcmp (((var_t *) a)->name, ((var_t *) b)->name));
 }
 
 enum output_formats_t {
@@ -107,7 +79,6 @@ enum {
 
 enum output_formats_t OutputFormat = F_NONE;
 char *Progname;
-short Debug = 0;
 
 static char *get_token (char *, size_t, char *);
 static char *skip_ws (char *);
@@ -147,9 +118,6 @@ int main (int argc, char *argv[])
     case 's':
       OutputFormat = F_SGML;
       break;
-    case 'd':
-      Debug++;
-      break;
     default:
       {
         fprintf (stderr, "%s: bad command line parameter.\n", Progname);
@@ -182,7 +150,7 @@ int main (int argc, char *argv[])
   }
 
   if (f != stdin)
-    fclose (f);
+    m_fclose(&f);
 
   exit (1);
 }
@@ -191,13 +159,13 @@ static void add_var (const char *name)
 {
   outbuf = realloc (outbuf, (++outcount) * sizeof (var_t));
   outbuf[outcount - 1].seen = 0;
-  outbuf[outcount - 1].name = strdup (name);
+  outbuf[outcount - 1].name = strdup(name);
   outbuf[outcount - 1].descr = NULL;
 }
 
 static int add_s (const char *s)
 {
-  size_t lnew = STRLEN (s), lold = STRLEN (outbuf[outcount - 1].descr);
+  size_t lnew = m_strlen(s), lold = m_strlen(outbuf[outcount - 1].descr);
 
   if (lnew == 0)
     return (0);
@@ -207,7 +175,7 @@ static int add_s (const char *s)
   }
 
   if (lold == 0)
-    outbuf[outcount - 1].descr = strdup (s);
+    outbuf[outcount - 1].descr = strdup(s);
   else {
     outbuf[outcount - 1].descr =
       realloc (outbuf[outcount - 1].descr, lold + lnew + 1);
@@ -227,8 +195,8 @@ static int add_c (int c)
 
 static void makedoc (FILE * in, FILE * out)
 {
-  char buffer[BUFFSIZE];
-  char token[BUFFSIZE];
+  char buffer[BUFSIZ];
+  char token[BUFSIZ];
   char *p;
   int active = 0;
   int line = 0;
@@ -247,20 +215,15 @@ static void makedoc (FILE * in, FILE * out)
     if (!(p = get_token (token, sizeof (token), buffer)))
       continue;
 
-    if (Debug) {
-      fprintf (stderr, "%s: line %d.  first token: \"%s\".\n",
-               Progname, line, token);
-    }
-
-    if (!strcmp (token, "/*++*/"))
+    if (!m_strcmp (token, "/*++*/"))
       active = 1;
-    else if (!strcmp (token, "/*--*/")) {
+    else if (!m_strcmp (token, "/*--*/")) {
       docstat = flush_doc (docstat);
       active = 0;
     }
-    else if (active && (!strcmp (token, "/**") || !strcmp (token, "**")))
+    else if (active && (!m_strcmp (token, "/**") || !m_strcmp (token, "**")))
       docstat = handle_docline (p, docstat);
-    else if (active && !strcmp (token, "{")) {
+    else if (active && !m_strcmp (token, "{")) {
       docstat = flush_doc (docstat);
       handle_confline (p);
     }
@@ -296,37 +259,20 @@ static char *get_token (char *d, size_t l, char *s)
 {
   char *t;
   short is_quoted = 0;
-  char *dd = d;
-
-  if (Debug)
-    fprintf (stderr, "%s: get_token called for `%s'.\n", Progname, s);
 
   s = skip_ws (s);
 
-  if (Debug > 1)
-    fprintf (stderr, "%s: argumet after skip_ws():  `%s'.\n", Progname, s);
-
   if (!*s) {
-    if (Debug)
-      fprintf (stderr, "%s: no more tokens on this line.\n", Progname);
     return NULL;
   }
 
   if (strchr (single_char_tokens, *s)) {
-    if (Debug) {
-      fprintf (stderr, "%s: found single character token `%c'.\n",
-               Progname, *s);
-    }
     d[0] = *s++;
     d[1] = 0;
     return s;
   }
 
   if (*s == '"') {
-    if (Debug) {
-      fprintf (stderr, "%s: found quote character.\n", Progname);
-    }
-
     s++;
     is_quoted = 1;
   }
@@ -369,12 +315,6 @@ static char *get_token (char *d, size_t l, char *s)
 
   *d = '\0';
 
-  if (Debug) {
-    fprintf (stderr, "%s: Got %stoken: `%s'.\n",
-             Progname, is_quoted ? "quoted " : "", dd);
-    fprintf (stderr, "%s: Remainder: `%s'.\n", Progname, t);
-  }
-
   return t;
 }
 
@@ -407,32 +347,30 @@ enum {
 };
 
 struct {
-  char *machine;
-  char *human;
+  const char *machine;
+  const char *human;
 } types[] = {
-  {
-  "DT_NONE", "-none-"}, {
-  "DT_BOOL", "boolean"}, {
-  "DT_NUM", "number"}, {
-  "DT_STR", "string"}, {
-  "DT_PATH", "path"}, {
-  "DT_QUAD", "quadoption"}, {
-  "DT_SORT", "sort order"}, {
-  "DT_RX", "regular expression"}, {
-  "DT_MAGIC", "folder magic"}, {
-  "DT_SYN", NULL}, {
-  "DT_ADDR", "e-mail address"}, {
-  "DT_SYS", "system property"}, {
-  NULL, NULL}
+  {"DT_NONE",  "-none-"},
+  {"DT_BOOL",  "boolean"},
+  {"DT_NUM",   "number"},
+  {"DT_STR",   "string"},
+  {"DT_PATH",  "path"},
+  {"DT_QUAD",  "quadoption"},
+  {"DT_SORT",  "sort order"},
+  {"DT_RX",    "regular expression"},
+  {"DT_MAGIC", "folder magic"},
+  {"DT_SYN",   NULL},
+  {"DT_ADDR",  "e-mail address"},
+  {"DT_SYS",   "system property"},
+  {NULL, NULL}
 };
 
-
 static int buff2type (const char *s)
 {
   int type;
 
   for (type = DT_NONE; types[type].machine; type++)
-    if (!strcmp (types[type].machine, s))
+    if (!m_strcmp (types[type].machine, s))
       return type;
 
   return DT_NONE;
@@ -444,11 +382,11 @@ static const char *type2human (int type)
 }
 static void handle_confline (char *s)
 {
-  char varname[BUFFSIZE];
-  char buff[BUFFSIZE];
+  char varname[BUFSIZ];
+  char buff[BUFSIZ];
   int type;
 
-  char val[BUFFSIZE];
+  char val[BUFSIZ];
 
   /* xxx - put this into an actual state machine? */
 
@@ -470,9 +408,7 @@ static void handle_confline (char *s)
   if (!(s = get_token (buff, sizeof (buff), s)))
     return;
 
-  if (!strcmp (buff, "|")) {
-    if (Debug)
-      fprintf (stderr, "%s: Expecting <subtype> <comma>.\n", Progname);
+  if (!m_strcmp (buff, "|")) {
     /* ignore subtype and comma */
     if (!(s = get_token (buff, sizeof (buff), s)))
       return;
@@ -485,14 +421,14 @@ static void handle_confline (char *s)
   while (1) {
     if (!(s = get_token (buff, sizeof (buff), s)))
       return;
-    if (!strcmp (buff, ","))
+    if (!m_strcmp (buff, ","))
       break;
   }
 
   /* option name or UL &address */
   if (!(s = get_token (buff, sizeof (buff), s)))
     return;
-  if (!strcmp (buff, "UL"))
+  if (!m_strcmp (buff, "UL"))
     if (!(s = get_token (buff, sizeof (buff), s)))
       return;
 
@@ -500,26 +436,21 @@ static void handle_confline (char *s)
   if (!(s = get_token (buff, sizeof (buff), s)))
     return;
 
-  if (Debug)
-    fprintf (stderr, "%s: Expecting default value.\n", Progname);
-
   /* <default value> or UL <default value> */
   if (!(s = get_token (buff, sizeof (buff), s)))
     return;
-  if (!strcmp (buff, "UL")) {
-    if (Debug)
-      fprintf (stderr, "%s: Skipping UL.\n", Progname);
+  if (!m_strcmp (buff, "UL")) {
     if (!(s = get_token (buff, sizeof (buff), s)))
       return;
   }
 
-  memset (val, 0, sizeof (val));
+  memset(val, 0, sizeof(val));
 
   do {
-    if (!strcmp (buff, "}"))
+    if (!m_strcmp (buff, "}"))
       break;
 
-    strncpy (val + STRLEN (val), buff, sizeof (val) - STRLEN (val));
+    m_strcat(val, sizeof(val), buff);
   }
   while ((s = get_token (buff, sizeof (buff), s)));
 
@@ -531,17 +462,17 @@ static void char_to_escape (char *dest, unsigned int c)
 {
   switch (c) {
   case '\r':
-    strcpy (dest, "\\r");
-    break;                      /* __STRCPY_CHECKED__ */
+    m_strcpy(dest, "\\r");
+    break;
   case '\n':
-    strcpy (dest, "\\n");
-    break;                      /* __STRCPY_CHECKED__ */
+    m_strcpy(dest, "\\n");
+    break;
   case '\t':
-    strcpy (dest, "\\t");
-    break;                      /* __STRCPY_CHECKED__ */
+    m_strcpy(dest, "\\t");
+    break;
   case '\f':
-    strcpy (dest, "\\f");
-    break;                      /* __STRCPY_CHECKED__ */
+    m_strcpy(dest, "\\f");
+    break;
   default:
     sprintf (dest, "\\%03o", c);
     break;
@@ -608,28 +539,8 @@ static int sgml_fputc (int c)
     return add_s ("&lt;");
   case '>':
     return add_s ("&gt;");
-#if 0
-  case '$':
-    return add_s ("&dollar;");
-  case '_':
-    return add_s ("&lowbar;");
-  case '%':
-    return add_s ("&percnt;");
-#endif
   case '&':
     return add_s ("&amp;");
-#if 0
-  case '\\':
-    return add_s ("&bsol;");
-  case '"':
-    return add_s ("&quot;");
-  case '[':
-    return add_s ("&lsqb;");
-  case ']':
-    return add_s ("&rsqb;");
-  case '~':
-    return add_s ("&tilde;");
-#endif
   default:
     return add_c (c);
   }
@@ -737,9 +648,7 @@ static void print_confline (const char *varname, int type, const char *val)
     /* SGML based manual */
   case F_SGML:
     {
-      add_s ("\n<muttng-doc:vardef id=\"");
-      sgml_id_fputs (varname);
-      add_s ("\" name=\"");
+      add_s ("\n<madmutt-doc:vardef name=\"");
       sgml_fputs (varname);
       add_s ("\">\n<para>Type: <literal>");
       add_s (type2human (type));
@@ -926,7 +835,7 @@ static int print_it (int special, char *str, int docstat)
           if (docstat & D_DT) {
             int i;
 
-            for (i = STRLEN (str); i < 8; i++)
+            for (i = m_strlen(str); i < 8; i++)
               add_c (' ');
             docstat &= ~D_DT;
             docstat |= D_NL;
@@ -1034,11 +943,11 @@ static int print_it (int special, char *str, int docstat)
                 add_s ("\\(rq");
               else if (*str == '\\')
                 add_s ("\\\\");
-              else if (!strncmp (str, "``", 2)) {
+              else if (!m_strncmp (str, "``", 2)) {
                 add_s ("\\(lq");
                 str++;
               }
-              else if (!strncmp (str, "''", 2)) {
+              else if (!m_strncmp (str, "''", 2)) {
                 add_s ("\\(rq");
                 str++;
               }
@@ -1165,7 +1074,7 @@ static int print_it (int special, char *str, int docstat)
         }
       case SP_END_SECT:
         {
-          add_s ("</muttng-doc:vardef>\n");
+          add_s ("</madmutt-doc:vardef>\n");
           break;
         }
       case SP_STR:
@@ -1187,7 +1096,7 @@ static int print_it (int special, char *str, int docstat)
   return docstat;
 }
 
-void print_ref (int output_dollar, const char *ref)
+static void print_ref (int output_dollar, const char *ref)
 {
   switch (OutputFormat) {
   case F_CONF:
@@ -1225,57 +1134,54 @@ static int commit_buff (char *buff, char **d, int docstat)
 
 static int handle_docline (char *l, int docstat)
 {
-  char buff[BUFFSIZE];
+  char buff[BUFSIZ];
   char *s, *d;
 
   l = skip_ws (l);
 
-  if (Debug)
-    fprintf (stderr, "%s: handle_docline `%s'\n", Progname, l);
-
-  if (!strncmp (l, ".pp", 3))
+  if (!m_strncmp (l, ".pp", 3))
     return print_it (SP_NEWPAR, NULL, docstat);
-  else if (!strncmp (l, ".ts", 3))
+  else if (!m_strncmp (l, ".ts", 3))
     return print_it (SP_START_TAB, NULL, docstat);
-  else if (!strncmp (l, ".te", 3))
+  else if (!m_strncmp (l, ".te", 3))
     return print_it (SP_END_TAB, NULL, docstat);
-  else if (!strncmp (l, ".dl", 3))
+  else if (!m_strncmp (l, ".dl", 3))
     return print_it (SP_START_DL, NULL, docstat);
-  else if (!strncmp (l, ".de", 3))
+  else if (!m_strncmp (l, ".de", 3))
     return print_it (SP_END_DL, NULL, docstat);
-  else if (!strncmp (l, ". ", 2))
+  else if (!m_strncmp (l, ". ", 2))
     *l = ' ';
 
   for (s = l, d = buff; *s; s++) {
-    if (!strncmp (s, "\\(as", 4)) {
+    if (!m_strncmp (s, "\\(as", 4)) {
       *d++ = '*';
       s += 3;
     }
-    else if (!strncmp (s, "\\(rs", 4)) {
+    else if (!m_strncmp (s, "\\(rs", 4)) {
       *d++ = '\\';
       s += 3;
     }
-    else if (!strncmp (s, "\\fI", 3)) {
+    else if (!m_strncmp (s, "\\fI", 3)) {
       docstat = commit_buff (buff, &d, docstat);
       docstat = print_it (SP_START_EM, NULL, docstat);
       s += 2;
     }
-    else if (!strncmp (s, "\\fB", 3)) {
+    else if (!m_strncmp (s, "\\fB", 3)) {
       docstat = commit_buff (buff, &d, docstat);
       docstat = print_it (SP_START_BF, NULL, docstat);
       s += 2;
     }
-    else if (!strncmp (s, "\\fT", 3)) {
+    else if (!m_strncmp (s, "\\fT", 3)) {
       docstat = commit_buff (buff, &d, docstat);
       docstat = print_it (SP_START_TT, NULL, docstat);
       s += 2;
     }
-    else if (!strncmp (s, "\\fP", 3)) {
+    else if (!m_strncmp (s, "\\fP", 3)) {
       docstat = commit_buff (buff, &d, docstat);
       docstat = print_it (SP_END_FT, NULL, docstat);
       s += 2;
     }
-    else if (!strncmp (s, ".dt", 3)) {
+    else if (!m_strncmp (s, ".dt", 3)) {
       if (docstat & D_DD) {
         docstat = commit_buff (buff, &d, docstat);
         docstat = print_it (SP_END_DD, NULL, docstat);
@@ -1284,7 +1190,7 @@ static int handle_docline (char *l, int docstat)
       docstat = print_it (SP_DT, NULL, docstat);
       s += 3;
     }
-    else if (!strncmp (s, ".dd", 3)) {
+    else if (!m_strncmp (s, ".dd", 3)) {
       docstat = commit_buff (buff, &d, docstat);
       docstat = print_it (SP_DD, NULL, docstat);
       s += 3;