Annotation of cci/usr/src/lib/fpcc/alist.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #define getline(p) fgets(line, sizeof(line), p)
                      3: FILE *cfile, *afile;
                      4: char line[200];
                      5: char name[40];
                      6: char *setsuf();
                      7: 
                      8: main(argc, argv)
                      9:        char **argv;
                     10: {
                     11:        register char *s;
                     12: 
                     13:        if(argc == 2) {
                     14:                if((s = rindex(*++argv, '.')) != NULL)
                     15:                        *s = '\0';
                     16:                if((cfile = fopen(setsuf(*argv, "c"), "r"))==NULL
                     17:                 && (cfile = fopen(setsuf(*argv, "f"), "r"))==NULL)
                     18:                        operr(*argv, "source");
                     19:                if((afile = fopen(setsuf(*argv, "s"), "r"))==NULL)
                     20:                        operr(*argv, "assembler");
                     21:                freopen(setsuf(*argv, "lst"), "w", stdout);
                     22:        }
                     23:        else if(argc >= 3) {
                     24:                if((cfile = fopen(*++argv, "r"))==NULL)
                     25:                        operr(*argv, "source");
                     26:                if((afile = fopen(*++argv, "r"))==NULL)
                     27:                        operr(*argv, "assembler");
                     28:                if(argc >= 4)
                     29:                        freopen(*++argv, "w", stdout);
                     30:        }
                     31:        else
                     32:                return(1);
                     33:        xprint();
                     34:        return(0);
                     35: }
                     36: 
                     37: xprint() {
                     38:        register i, alino, clino;
                     39: 
                     40:        clino = 0;
                     41:        while(getline(afile)!=NULL) {
                     42:                if(strncmp(line, "\t.stab", 6)!=0)
                     43:                        printf("%s", line);
                     44:                else if(strncmp(line, "\t.stabd\t0104,0,", 15)==0) {
                     45:                        alino = 0;
                     46:                        for(i=15; line[i]>='0' && line[i]<='7'; i++)
                     47:                                alino = (alino<<3)+line[i]-'0';
                     48:                        while(alino > clino && getline(cfile)!=NULL) {
                     49:                                printf(" # %s", line);
                     50:                                clino++;
                     51:                        }
                     52:                }
                     53:        }
                     54:        while(getline(cfile)!=NULL)
                     55:                printf(" # %s", line);
                     56: }
                     57: 
                     58: char *
                     59: setsuf(st, suf)
                     60:        char *st, *suf;
                     61: {
                     62: 
                     63:        sprintf(name, "%s.%s", st, suf);
                     64:        return(name);
                     65: }
                     66: 
                     67: operr(s, t)
                     68:        char *s, *t;
                     69: {
                     70:        fprintf(stderr, "cant open %s file %s\n", t, s);
                     71:        exit(1);
                     72: }

unix.superglobalmegacorp.com

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