summaryrefslogtreecommitdiff
path: root/doc/utils/man_xref.c
diff options
context:
space:
mode:
Diffstat (limited to 'doc/utils/man_xref.c')
-rw-r--r--doc/utils/man_xref.c125
1 files changed, 0 insertions, 125 deletions
diff --git a/doc/utils/man_xref.c b/doc/utils/man_xref.c
deleted file mode 100644
index fc3afb696..000000000
--- a/doc/utils/man_xref.c
+++ /dev/null
@@ -1,125 +0,0 @@
-#include <stdio.h>
-#include <ctype.h>
-#include <assert.h>
-
-/*
- look through HTMLized man pages
- convert references like man(1) into HTML links
-
- somewhat quick & dirty code
- various dubious assumptions made:
-
- [a-zA-Z0-9\-_\.]* defines legal characters in name
- pagename(x) corresponds to pagename.x.html
- (Fine *if* it's been converted by my scripts)
- x in the above must be a single digit
- (or we ignore it, which does no damage)
- Lazy parsing: malloc() enough RAM to read in whole file
- Limited syntax: exactly one input file, results to stdout
-
- Sandy Harris
-*/
-
-int do_file( char *, char *) ;
-
-main(int argc, char **argv)
-{
- FILE *in ;
- char *progname;
- long lsize ;
- size_t size, nread;
- char *buffer, *bufend ;
- progname = *argv ;
- if( argc != 2 ) {
- fprintf(stderr,"usage: %s input-file\n", progname);
- exit(1) ;
- }
- if( (in = fopen(argv[1],"r")) == NULL ) {
- fprintf(stderr,"%s Can't open input file\n", progname);
- exit(2) ;
- }
- if( (lsize = fseek(in, 0L, SEEK_END)) < 0L ) {
- fprintf(stderr,"%s fseek() fails\n", progname);
- exit(3) ;
- }
- lsize = ftell(in) ;
- rewind(in) ;
- size = (size_t) lsize ;
- if( lsize != (long) size ) {
- fprintf(stderr,"%s file too large\n", progname);
- exit(4) ;
- }
- if( (buffer = (char *) malloc(size)) == NULL) {
- fprintf(stderr,"%s malloc() failed\n", progname);
- exit(5) ;
- }
- bufend = buffer + size ;
- if( (nread = fread(buffer, size, 1, in)) != 1) {
- fprintf(stderr,"%s fread() failed\n", progname);
- exit(6) ;
- }
- do_file(buffer,bufend);
-}
-
-do_file(char *start, char *end)
-{
- /* p is where to start parsing, one past last output */
- /* q is how far we've parsed */
- char *p, *q ;
- int value ;
- for( p = q = start ; p < end ; q = (q<end) ? (q+1) : q ) {
- /* if p is beyond q, catch up */
- if( q < p )
- continue ;
- /* move q ahead until we know if we've got manpage name */
- if( isalnum(*q) )
- continue ;
- switch(*q) {
- /* can appear in manpage name */
- case '.':
- case '_':
- case '-':
- case '(':
- continue ;
- break ;
- /* whatever's between p and q
- is not a manpage name
- so output it
- */
- default:
- /* leave p one past output */
- for( ; p <= q ; p++ )
- putchar(*p);
- break ;
- /* we may have a manpage name */
- case ')':
- value = do_name(p,q);
- if(value) {
- p = q ;
- p++ ;
- }
- /* unreached with current do_name() */
- else
- for( ; p <= q ; p++ )
- putchar(*p);
- break ;
-} } }
-
-do_name(char *p, char *q)
-{
- *q = '\0' ;
- /* if end of string matches RE ([0-9])
- with at least one legal character before it
- add HTML xref stuff
- */
- if( (q-p > 3) && isdigit(q[-1]) && (q[-2]=='(')) {
- q[-2] = '\0' ;
- q-- ;
- printf("<a href=\"%s.%s.html\">", p, q);
- printf("%s(%s)", p, q);
- printf("</a>");
- }
- // otherwise just print string
- else printf("%s)", p);
- return 1 ;
-}