|
|
1.1 ! root 1: /* PDP-11 assembler pass 0 */ ! 2: #include "as1.h" ! 3: #include <signal.h> ! 4: ! 5: #ifndef PASS2PGM ! 6: #define PASS2PGM "/lib/as2" /*god: is tweakable */ ! 7: #endif ! 8: #ifndef A_DOT_OUT ! 9: #define A_DOT_OUT "a.out" /*god: " */ ! 10: #endif ! 11: ! 12: char atmp1[] = "/tmp/atm1XXXXXX"; ! 13: char atmp2[] = "/tmp/atm2XXXXXX"; ! 14: char atmp3[] = "/tmp/atm3XXXXXX"; ! 15: char fpass2[] = PASS2PGM; /*god: use -DPASS2PGM=/xxxx... */ ! 16: char unglob[3] = "-"; ! 17: char *outfile = A_DOT_OUT; /*god:6/17/80 made for porting*/ ! 18: ! 19: main(argc, argv) ! 20: char **argv; ! 21: { ! 22: extern aexit(); ! 23: FILE *t; ! 24: char *buf1,*buf2; ! 25: ! 26: if (signal(SIGINT,SIG_IGN)!=SIG_IGN) signal(SIGINT,aexit); ! 27: while (--argc>=0 && (++argv)[0][0]=='-') { ! 28: if (argv[0][1]=='u' || argv[0][1]=='\0') unglob[1]='g'; ! 29: else if (argv[0][1]=='o' && --argc>=0) outfile= *++argv; ! 30: } ! 31: nargs=argc+1; curarg=argv-1; ! 32: if (NULL==(pof=fopen(mktemp(atmp1),"w"))) wrterr(); ! 33: setbuf(pof,buf1=sbrk(BUFSIZ)); ! 34: if (NULL==(fbfil=fopen(mktemp(atmp2),"w"))) wrterr(); ! 35: setbuf(fbfil,buf2=sbrk(BUFSIZ)); ! 36: setup(); ! 37: fclose(stdin); ! 38: assem(); ! 39: if (EOF==fclose(pof)) wrterr(); if (EOF==fclose(fbfil)) wrterr(); ! 40: if (errflg) aexit(); ! 41: if (NULL==(t=fopen(mktemp(atmp3),"w"))) wrterr(); ! 42: setbuf(t,buf1); ! 43: if ((symend-usymtab)!=fwrite(usymtab,sizeof(*usymtab),symend-usymtab,t)) wrterr(); ! 44: if (EOF==fclose(t)) wrterr(); ! 45: execl(fpass2,fpass2,unglob,"-o",outfile,atmp1,atmp2,atmp3,0); ! 46: filerr(fpass2,"?\n"); ! 47: aexit(); ! 48: } ! 49: ! 50: aexit() ! 51: { ! 52: unlink(atmp1); unlink(atmp2); unlink(atmp3); ! 53: exit(3); ! 54: } ! 55: ! 56: filerr(file,str) ! 57: char *file,*str; ! 58: { ! 59: fprintf(stderr,"%s%s",file,str); ! 60: } ! 61: ! 62: wrterr() ! 63: { ! 64: fprintf(stderr,"as: Write error on temp file.\n"); ! 65: ++errflg; aexit(); ! 66: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.