**
**/
-
-#include "config.h"
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 2048
+static char lastvar[BUFFSIZE];
+static int sort_error = 0;
+
enum output_formats_t
{
F_CONF, F_MAN, F_SGML, F_NONE
{
case F_CONF:
case F_MAN:
- case F_SGML: makedoc (f, stdout); break;
+ case F_SGML:
+ lastvar[0] = '\0';
+ makedoc (f, stdout); break;
default:
{
fprintf (stderr, "%s: No output format specified.\n",
exit (1);
}
+static void remember (const char* s)
+{
+ int l = strlen (s);
+ lastvar[0] = '\0';
+ strncpy (lastvar, s, strlen (s));
+ lastvar[l] = '\0';
+}
static void makedoc (FILE *in, FILE *out)
{
}
flush_doc (docstat, out);
fputs ("\n", out);
+ if (sort_error == 1)
+ {
+ fputs ("\n"
+ "***************************************************************************\n"
+ "*** There have been sorting errors for the manual's variable reference. ***\n"
+ "*** If you're not a developer playing with the code, please report this ***\n"
+ "*** error to <mutt-ng-devel@lists.berlios.de> ***\n"
+ "*** ***\n"
+ "*** I'm waiting 5 seconds for you to take notice. ***\n"
+ "***************************************************************************\n\n",
+ stderr);
+ sleep (5);
+ }
}
/* skip whitespace */
/* xxx - put this into an actual state machine? */
/* variable name */
- if (!(s = get_token (varname, sizeof (varname), s))) return;
+ if (!(s = get_token (varname, sizeof (varname), s)))
+ return;
+ else
+ {
+ if (lastvar[0] && strncmp (lastvar, varname, strlen (lastvar)) > 0)
+ {
+ fprintf (stderr, "*** MAKEDOC WARNING: $%s must come before $%s ***\n",
+ varname, lastvar);
+ sort_error = 1;
+ }
+ remember (varname);
+ }
/* comma */
if (!(s = get_token (buff, sizeof (buff), s))) return;