diff options
Diffstat (limited to 'doc/utils/man_xref.c')
-rw-r--r-- | doc/utils/man_xref.c | 125 |
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 ; -} |