source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Add -Owidth=width option to mandoc -Tascii.
@ 2010-06-07 10:52 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2010-06-07 10:52 UTC (permalink / raw)
  To: source

Log Message:
-----------
Add -Owidth=width option to mandoc -Tascii.  Asked for by joerg@ about a
thousand years ago.  Note that this is normalised to >=60.

Modified Files:
--------------
    mdocml:
        html.c
        main.c
        main.h
        term.c

Revision Data
-------------
Index: term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term.c,v
retrieving revision 1.140
retrieving revision 1.141
diff -Lterm.c -Lterm.c -u -p -r1.140 -r1.141
--- term.c
+++ term.c
@@ -22,6 +22,7 @@
 
 #include <assert.h>
 #include <ctype.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -35,7 +36,7 @@
 #include "mdoc.h"
 #include "main.h"
 
-static	struct termp	 *term_alloc(enum termenc, size_t);
+static	struct termp	 *term_alloc(char *, enum termenc);
 static	void		  term_free(struct termp *);
 static	void		  spec(struct termp *, const char *, size_t);
 static	void		  res(struct termp *, const char *, size_t);
@@ -46,10 +47,10 @@ static	void		  encode(struct termp *, co
 
 
 void *
-ascii_alloc(size_t width)
+ascii_alloc(char *outopts)
 {
 
-	return(term_alloc(TERMENC_ASCII, width));
+	return(term_alloc(outopts, TERMENC_ASCII));
 }
 
 
@@ -75,17 +76,35 @@ term_free(struct termp *p)
 
 
 static struct termp *
-term_alloc(enum termenc enc, size_t width)
+term_alloc(char *outopts, enum termenc enc)
 {
-	struct termp *p;
+	struct termp	*p;
+	const char	*toks[2];
+	char		*v;
+	size_t		 width;
+
+	toks[0] = "width";
+	toks[1] = NULL;
 
 	p = calloc(1, sizeof(struct termp));
 	if (NULL == p) {
 		perror(NULL);
 		exit(EXIT_FAILURE);
 	}
+
 	p->tabwidth = 5;
 	p->enc = enc;
+	width = 80;
+
+	while (outopts && *outopts)
+		switch (getsubopt(&outopts, UNCONST(toks), &v)) {
+		case (0):
+			width = atoi(v);
+			break;
+		default:
+			break;
+		}
+
 	/* Enforce some lower boundary. */
 	if (width < 60)
 		width = 60;
Index: html.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/html.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -Lhtml.c -Lhtml.c -u -p -r1.100 -r1.101
--- html.c
+++ html.c
@@ -35,8 +35,6 @@
 #include "html.h"
 #include "main.h"
 
-#define	UNCONST(a)	((void *)(uintptr_t)(const void *)(a))
-
 struct	htmldata {
 	const char	 *name;
 	int		  flags;
Index: main.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lmain.h -Lmain.h -u -p -r1.3 -r1.4
--- main.h
+++ main.h
@@ -22,6 +22,9 @@ __BEGIN_DECLS
 struct	mdoc;
 struct	man;
 
+#define	UNCONST(a)	((void *)(uintptr_t)(const void *)(a))
+
+
 /* 
  * Definitions for main.c-visible output device functions, e.g., -Thtml
  * and -Tascii.  Note that ascii_alloc() is named as such in
@@ -38,7 +41,7 @@ void		  html_free(void *);
 void		  tree_mdoc(void *, const struct mdoc *);
 void		  tree_man(void *, const struct man *);
 
-void		 *ascii_alloc(size_t);
+void		 *ascii_alloc(char *);
 void		  terminal_mdoc(void *, const struct mdoc *);
 void		  terminal_man(void *, const struct man *);
 void		  terminal_free(void *);
Index: main.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -Lmain.c -Lmain.c -u -p -r1.83 -r1.84
--- main.c
+++ main.c
@@ -601,7 +601,7 @@ fdesc(struct curparse *curp)
 		case (OUTT_LINT):
 			break;
 		default:
-			curp->outdata = ascii_alloc(80);
+			curp->outdata = ascii_alloc(curp->outopts);
 			curp->outman = terminal_man;
 			curp->outmdoc = terminal_mdoc;
 			curp->outfree = terminal_free;
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-06-07 10:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-07 10:52 mdocml: Add -Owidth=width option to mandoc -Tascii kristaps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).