#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 ("makedoc: warning: there're sorting errors in vars\n", stderr);
}
/* 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)
+ sort_error = 1;
+ remember (varname);
+ }
/* comma */
if (!(s = get_token (buff, sizeof (buff), s))) return;