DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦62f894cd4⟧ TextFile

    Length: 1239 (0x4d7)
    Types: TextFile
    Notes: UNIX file
    Names: »input.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »cmd/tsort/input.c« 

TextFile

#include <stdio.h>
#include <ctype.h>
#include "tsort.h"


void
getcon(fp)
FILE *fp;
{
	register char *wrd;
	struct word *wordp1, *wordp2;
	struct wordlist *rel;
	char *getwrd();

	for (;;) {
		wrd = getwrd(fp);
		if (wrd == NULL)
			break;
		wordp1 = insert(wrd);
		wrd = getwrd(fp);
		if (wrd == NULL)
			die("odd number of fields input");
		wordp2 = insert(wrd);
		if (wordp1 != wordp2) {
			rel = newwordl(wordp1);
			rel->next = wordp2->ancestors;
			wordp2->ancestors = rel;
		}
	}
	words = cmphash();
}


/*
 *	Getwrd is used to get the next word from the FILE pointed to
 *	by "fp".  Word is defined as non-white-space.  If the end of
 *	file is reached, then getwrd returns an empty string.  Note
 *	that since getwrd returns a pointer to a static area, the result
 *	must be copyied before the next call.
 */

static char *
getwrd(fp)
register FILE *fp;
{
	register int ch;
	static char word[MAXWORD];
	register char *wrdp;

	while ((ch = getc(fp)) != EOF && isascii(ch) && isspace(ch))
		;
	if (ch == EOF)
		return (NULL);
	for (wrdp = word; !(isascii(ch) && isspace(ch)); ch = getc(fp)) {
		if (ch == EOF)
			break;
		if (wrdp >= &word[MAXWORD - 1])
			die("word too long");
		*wrdp++ = ch;
	}
	*wrdp = '\0';
	return (word);
}