|
|
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);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.