Obsoleted the `\preamble' command. Preamble text is now taken to be
[sgt/halibut] / bk_man.c
index 876ecb5..1d39729 100644 (file)
--- a/bk_man.c
+++ b/bk_man.c
@@ -62,8 +62,8 @@ void man_backend(paragraph *sourceform, keywordlist *keywords,
                 indexdata *idx) {
     paragraph *p;
     FILE *fp;
-    char const *sep;
     manconfig conf;
+    int done_copyright;
 
     IGNORE(keywords);                 /* we don't happen to need this */
     IGNORE(idx);                      /* or this */
@@ -90,39 +90,24 @@ void man_backend(paragraph *sourceform, keywordlist *keywords,
        }
 
     /* .TH name-of-program manual-section */
-    {
+    fprintf(fp, ".TH");
+    if (conf.th && *conf.th) {
        char *c;
-       if (conf.th && *conf.th) {
-           wchar_t *wp;
-           fprintf(fp, ".TH");
-
-           for (wp = conf.th; *wp; wp = uadv(wp)) {
-               fputs(" \"", fp);
-               man_convert(wp, 0, &c, QUOTE_QUOTES);
-               fputs(c, fp);
-               sfree(c);
-               fputc('"', fp);
-           }
-           fputc('\n', fp);
+       wchar_t *wp;
+
+       for (wp = conf.th; *wp; wp = uadv(wp)) {
+           fputs(" \"", fp);
+           man_convert(wp, 0, &c, QUOTE_QUOTES);
+           fputs(c, fp);
+           sfree(c);
+           fputc('"', fp);
        }
     }
+    fputc('\n', fp);
 
     fprintf(fp, ".UC\n");
 
-    /* Do the preamble and copyright */
-    sep = "";
-    for (p = sourceform; p; p = p->next)
-       if (p->type == para_Preamble) {
-           fprintf(fp, "%s", sep);
-           man_text(fp, p->words, TRUE, 0);
-           sep = "\n";
-       }
-    for (p = sourceform; p; p = p->next)
-       if (p->type == para_Copyright) {
-           fprintf(fp, "%s", sep);
-           man_text(fp, p->words, TRUE, 0);
-           sep = "\n";
-       }
+    done_copyright = FALSE;
 
     for (p = sourceform; p; p = p->next) switch (p->type) {
        /*
@@ -134,7 +119,6 @@ void man_backend(paragraph *sourceform, keywordlist *keywords,
       case para_Biblio:                       /* only touch BiblioCited */
       case para_VersionID:
       case para_Copyright:
-      case para_Preamble:
       case para_NoCite:
       case para_Title:
        break;
@@ -147,6 +131,22 @@ void man_backend(paragraph *sourceform, keywordlist *keywords,
       case para_UnnumberedChapter:
       case para_Heading:
       case para_Subsect:
+
+       if (!done_copyright) {
+           paragraph *p;
+
+           /*
+            * The copyright comes just before the first chapter
+            * title.
+            */
+           for (p = sourceform; p; p = p->next)
+               if (p->type == para_Copyright) {
+                   fprintf(fp, ".PP\n");
+                   man_text(fp, p->words, TRUE, 0);
+               }
+           done_copyright = TRUE;
+       }
+
        {
            int depth;
            if (p->type == para_Subsect)
@@ -224,9 +224,11 @@ void man_backend(paragraph *sourceform, keywordlist *keywords,
        break;
 
       case para_LcontPush:
+      case para_QuotePush:
        fprintf(fp, ".RS\n");
        break;
       case para_LcontPop:
+      case para_QuotePop:
        fprintf(fp, ".RE\n");
        break;
     }