File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / lib / fpcc / alist.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
Power 6/32 Unix version 1.2b

#include <stdio.h>
#define getline(p) fgets(line, sizeof(line), p)
FILE *cfile, *afile;
char line[200];
char name[40];
char *setsuf();

main(argc, argv)
	char **argv;
{
	register char *s;

	if(argc == 2) {
		if((s = rindex(*++argv, '.')) != NULL)
			*s = '\0';
		if((cfile = fopen(setsuf(*argv, "c"), "r"))==NULL
		 && (cfile = fopen(setsuf(*argv, "f"), "r"))==NULL)
			operr(*argv, "source");
		if((afile = fopen(setsuf(*argv, "s"), "r"))==NULL)
			operr(*argv, "assembler");
		freopen(setsuf(*argv, "lst"), "w", stdout);
	}
	else if(argc >= 3) {
		if((cfile = fopen(*++argv, "r"))==NULL)
			operr(*argv, "source");
		if((afile = fopen(*++argv, "r"))==NULL)
			operr(*argv, "assembler");
		if(argc >= 4)
			freopen(*++argv, "w", stdout);
	}
	else
		return(1);
	xprint();
	return(0);
}

xprint() {
	register i, alino, clino;

	clino = 0;
	while(getline(afile)!=NULL) {
		if(strncmp(line, "\t.stab", 6)!=0)
			printf("%s", line);
		else if(strncmp(line, "\t.stabd\t0104,0,", 15)==0) {
			alino = 0;
			for(i=15; line[i]>='0' && line[i]<='7'; i++)
				alino = (alino<<3)+line[i]-'0';
			while(alino > clino && getline(cfile)!=NULL) {
				printf(" # %s", line);
				clino++;
			}
		}
	}
	while(getline(cfile)!=NULL)
		printf(" # %s", line);
}

char *
setsuf(st, suf)
	char *st, *suf;
{

	sprintf(name, "%s.%s", st, suf);
	return(name);
}

operr(s, t)
	char *s, *t;
{
	fprintf(stderr, "cant open %s file %s\n", t, s);
	exit(1);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.