X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=makedoc.c;h=cbbc42700bc0469b689bea36b3f0836b63bbdb9e;hp=7ba1e74ab5e39cd9adf5936e4a4ae7f18139b3db;hb=643be053e447a35cccc37550ac0087bb5bb5c5ad;hpb=f404a0ca916be07049af51a3022baaaaab94def6 diff --git a/makedoc.c b/makedoc.c index 7ba1e74..cbbc427 100644 --- a/makedoc.c +++ b/makedoc.c @@ -59,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 @@ -150,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", @@ -165,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) { @@ -213,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 */ @@ -397,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;