X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=makedoc.c;h=cbbc42700bc0469b689bea36b3f0836b63bbdb9e;hb=ba1dcc133bb083b29ec620ff9559d923242c628c;hp=4d3011ebd949eab0f99299ab9f071aaea15b9304;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1;p=apps%2Fmadmutt.git diff --git a/makedoc.c b/makedoc.c index 4d3011e..cbbc427 100644 --- a/makedoc.c +++ b/makedoc.c @@ -27,8 +27,9 @@ ** **/ - -#include "config.h" +#if HAVE_CONFIG_H +# include "config.h" +#endif #include #include @@ -58,6 +59,9 @@ extern int optind; #define BUFFSIZE 2048 +static char lastvar[BUFFSIZE]; +static int sort_error = 0; + enum output_formats_t { F_CONF, F_MAN, F_SGML, F_NONE @@ -149,7 +153,9 @@ int main (int argc, char *argv[]) { 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", @@ -164,6 +170,13 @@ int main (int argc, char *argv[]) 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) { @@ -212,6 +225,8 @@ 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 */ @@ -396,7 +411,14 @@ static void handle_confline (char *s, FILE *out) /* 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;