ftp.nice.ch/pub/next/text/tex/apps/TeXview-kp0.25.s.tar.gz#/HyperTeXview/htp.c

This is htp.c in view mode; [Download] [Up]

#import <stdio.h>
#import <string.h>
#import <stdlib.h>
#import <ctype.h>
#import "structures.h"
extern Boolean      prescan;
extern shalfword    hh, vv;
extern integer      pagenum;
int                 last_pagenum;
int                 lasthh;
int                 lastvv;
int                 last_thing;
char               *last_string = 0;

#define HTAG 2
#define HPT_EXT 4
#define HPT 3
void                ht_add_tag();
void                ht_add_pt();
void
process_ht(char *st)
{
    int                 len = strlen(st);

    if (strncmp(st, "a href=\"", 8) == 0) {
	char               *pt;
	int                 i;
	int                 pti = 0;

	pt = (char *)malloc(len - 12 + 1 + 4);
	for (i = 7; i < len; i++) {
	    if ((st[i] != '#') && (st[i] != '\"')) {
		pt[pti] = st[i];
		pti++;
	    }
	} pt[pti] = 0;
	lasthh = hh;
	lastvv = vv;
	last_thing = HPT;
	last_string = pt;
	last_pagenum = pagenum;
	/*Determine whether or not it is an external reference*/
	if((strncmp(pt,"file:",5)==0)||(strncmp(pt,"http:",5)==0)) last_thing=HPT_EXT;
    } else if (strncmp(st, "a name=\"", 8) == 0) {
	char               *pt;
	int                 i;
	int                 pti = 0;

	pt = (char *)malloc(len - 12 + 1 + 4);
	for (i = 7; i < len; i++) {
	    if ((st[i] != '#') && (st[i] != '\"')) {
		pt[pti] = st[i];
		pti++;
	    }
	} pt[pti] = 0;
	last_pagenum = pagenum;
	lasthh = hh;
	lastvv = vv;
	last_thing = HTAG;
	last_string = pt;
    }  else if (strncmp(st, "/a", 2) == 0) {
	if (last_thing == HTAG)
	    ht_add_tag(last_string);
	if (last_thing == HPT_EXT)
	    ht_add_pt(last_string, 1);
	if (last_thing == HPT)
	    ht_add_pt(last_string,0);
	if (last_string) {
	    free(last_string);
	    last_string = 0;
	};last_thing=0;
    } else {
	printf("Unknown html\n");
    }
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.