summaryrefslogtreecommitdiff
path: root/doc/utils/rfc_pg.c
diff options
context:
space:
mode:
Diffstat (limited to 'doc/utils/rfc_pg.c')
-rw-r--r--doc/utils/rfc_pg.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/doc/utils/rfc_pg.c b/doc/utils/rfc_pg.c
new file mode 100644
index 000000000..448cc1a36
--- /dev/null
+++ b/doc/utils/rfc_pg.c
@@ -0,0 +1,76 @@
+/*
+ * $Header: /var/cvsroot/strongswan/doc/utils/rfc_pg.c,v 1.1 2004/03/15 20:35:24 as Exp $
+ *
+ * from 2-nroff.template file.
+ *
+ * Remove N lines following any line that contains a form feed (^L).
+ * (Why can't this be done with awk or sed?)
+ *
+ * OPTION:
+ * -n# Number of lines to delete following each ^L (0 default).
+ * $Log: rfc_pg.c,v $
+ * Revision 1.1 2004/03/15 20:35:24 as
+ * added files from freeswan-2.04-x509-1.5.3
+ *
+ * Revision 1.1 2002/07/23 18:42:43 mcr
+ * required utility from IETF to help with formatting of drafts.
+ *
+ */
+#include <stdio.h>
+
+#define FORM_FEED '\f'
+#define OPTION "n:N:" /* for getopt() */
+
+extern char *optarg;
+extern int optind;
+
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ int c, /* next input char */
+ nlines = 0; /* lines to delete after ^L */
+ void print_and_delete(); /* print line starting with ^L,
+ then delete N lines */
+
+/*********************** Process option (-nlines) ***********************/
+
+ while ((c = getopt(argc, argv, OPTION)) != EOF)
+ switch(c)
+ {
+ case 'n' :
+ case 'N' : nlines = atoi(optarg);
+ break;
+ }
+/************************* READ AND PROCESS CHARS **********************/
+
+ while ((c = getchar()) != EOF)
+ if (c == FORM_FEED)
+ print_and_delete(nlines); /* remove N lines after this one */
+ else
+ putchar(c); /* we write the form feed */
+ exit(0);
+}
+
+
+/*
+ * Print rest of line, then delete next N lines.
+ */
+void print_and_delete(n)
+int n; /* nbr of lines to delete */
+{
+ int c, /* next input char */
+ cntr = 0; /* count of deleted lines */
+
+ while ((c = getchar()) != '\n') /* finish current line */
+ putchar(c);
+ putchar('\n'); /* write the last CR */
+ putchar(FORM_FEED);
+
+ for ( ; cntr < n; cntr++)
+ while ((c = getchar()) != '\n')
+ if (c == EOF)
+ exit(0); /* exit on EOF */
+ putchar(c); /* write that last CR */
+}
+