Annotation of researchv10no/cmd/docgen/trans.l, revision 1.1

1.1     ! root        1: %{
        !             2: #include <sys/types.h>
        !             3: #include <pwd.h>
        !             4: #include <sys/stat.h>
        !             5: #include <time.h>
        !             6: #include <libc.h>
        !             7: #include "header.h"
        !             8: 
        !             9: #define DATE DOCNUM+6
        !            10: #define SEQNUM DOCNUM+13
        !            11: #define TYPE DOCNUM+15
        !            12: #define SOFT DOCNUM+17
        !            13: struct passwd *getpwuid(), *ps;
        !            14: int soft;
        !            15: char *p, *s1, *s2;
        !            16: int type, ci=0, pm=0, rl=0;
        !            17: char buf[HEADSIZE];
        !            18: char *co = &buf[CO];
        !            19: char *dept = &buf[DOCNUM], *date = &buf[DATE], *seqnum = &buf[SEQNUM];
        !            20: char *stype = &buf[TYPE], *ssoft = &buf[SOFT];
        !            21: char *machine = buf;
        !            22: char *login = &buf[ULOG], *timestamp = &buf[TIMESTAMP];
        !            23: char *version = &buf[VERSION];
        !            24: char *pages = &buf[PAGES];
        !            25: int more = 1;
        !            26: %}
        !            27: %%
        !            28: ^".so".*       ;
        !            29: ^".TI" {
        !            30:        printf(".TL\n");
        !            31:        }
        !            32: ^".DT".*       ;
        !            33: ^".AH".*       {
        !            34:        yytext[yyleng] = '\0';
        !            35:        p = strtok(&yytext[3], " \n");
        !            36:        printf(".AU %s", p);
        !            37:        if (*p == '"') {
        !            38:                p = strtok((char *)0, "\"");
        !            39:                printf(" %s", p);
        !            40:        }
        !            41:        p = strtok((char *)0, "\n");
        !            42:        printf(" \"\"%s\n", p);
        !            43:        }
        !            44: ^".AP".*       {
        !            45:        yytext[yyleng] = '\0';
        !            46:        printf(".rP %s\n",&yytext[3]);
        !            47:        }
        !            48: ^".SA" {
        !            49:        printf(".AS\n");
        !            50:        }
        !            51: ^".SE" {
        !            52:        printf(".AE\n");
        !            53:        }
        !            54: ^".KW".*       {
        !            55:        printf(".OK %s\n",&yytext[3]);
        !            56:        }
        !            57: ^".TY".*       {
        !            58:        for(p = &yytext[3]; *p == ' ';p++);
        !            59:        if(*p == 'I')type=2;
        !            60:        else if(*(p+1) == 'M')type=1;
        !            61:        else type=3;
        !            62:        *stype = *p;
        !            63:        *(stype+1) = *(p+1);
        !            64:        while(*p != ' '){
        !            65:                if(*p == '\n'){
        !            66:                        soft=0;
        !            67:                        break;
        !            68:                }
        !            69:                p++;
        !            70:        }
        !            71:        if(*p == ' ')
        !            72:                if(*++p == 'y')
        !            73:                        soft=1;
        !            74:        printf(".MT %d\n",type);
        !            75:        if(soft){
        !            76:                *ssoft = 'S';
        !            77:                printf(".sF\n");
        !            78:        }
        !            79:        }
        !            80: ^".MT".*       {
        !            81:        for(p = &yytext[3]; *p == ' ';p++);
        !            82:        if(*p == '1') {
        !            83:                type=1;
        !            84:                *stype = 'T';
        !            85:                *(stype+1) = 'M';
        !            86:        } else if(*p == '2') {
        !            87:                type=2;
        !            88:                *stype = 'I';
        !            89:                *(stype+1) = 'M';
        !            90:        } else type=3;
        !            91:        printf(".MT %d\n",type);
        !            92:        }
        !            93: ^".sF".*       {
        !            94:        soft = 1;
        !            95:        *ssoft = 'S';
        !            96:        printf(".sF\n");
        !            97:        }
        !            98: ^(".NU"|".dN").*       {
        !            99:        p = strtok(&yytext[3], "- \n\"");
        !           100:        if(p != 0){
        !           101:                sprintf(dept,"%s-",p);
        !           102:                printf(".dN %s-",p);
        !           103:                type = 1;
        !           104:        }
        !           105:        p = strtok((char *)0, "- \n\"");
        !           106:        if(p != 0){
        !           107:                sprintf(date,"%s-",p);
        !           108:                printf("%s-",p);
        !           109:        }
        !           110:        p = strtok((char *)0, "- \n\"");
        !           111:        if(p != 0){
        !           112:                *seqnum = *p;
        !           113:                *(seqnum+1) = *(p+1);
        !           114:                printf("%s\n",p);
        !           115:        }
        !           116:        else if(type) printf("\n");
        !           117:        p = strtok((char *)0, " \n\"");
        !           118:        if(p != 0)
        !           119:                printf(".fC %s\n",p);
        !           120:        p = strtok((char *)0, " \n\"");
        !           121:        if(p != 0)
        !           122:                printf(".wP %s\n",p);
        !           123:        }
        !           124: ^".MY".*       {
        !           125:        printf(".mE %s\n",&yytext[3]);
        !           126:        }
        !           127: ^".ED".*       {
        !           128:        printf(".eD %s'n",&yytext[3]);
        !           129:        }
        !           130: ^".PR".*       {
        !           131:        pm=1;
        !           132:        printf(".PM %s\n",&yytext[3]);
        !           133:        }
        !           134: ^".RL".*       {
        !           135:        rl=1;
        !           136:        if(yyleng>3){
        !           137:                p=&yytext[3];
        !           138:                while(*p == ' ')p++;
        !           139:                if(*p == '\"')p++;
        !           140:                if(*p == 'n')printf(".fA n\n");
        !           141:                else printf(".fA y\n");
        !           142:        }
        !           143:        else printf(".fA y\n");
        !           144:        }
        !           145: ^".GS" {
        !           146:        printf(".gS\n");
        !           147:        }
        !           148: ^".CI".*       {
        !           149: /*     ci = 1;         gone away
        !           150:        if(yyleng == 3)
        !           151:                printf(".cI n\n");
        !           152:        else {
        !           153:                p = &yytext[3];
        !           154:                while(*p == ' ')p++;
        !           155:                if(*p == '\n' || *p == 'n')
        !           156:                        printf(".cI n\n");
        !           157:                else if(*p == '\"')p++;
        !           158:                if(*p == 'y')
        !           159:                        printf(".cI y\n");
        !           160:                else if(*p == '\"' || *p == 'n')
        !           161:                        printf(".cI n\n");
        !           162:                else    fprintf(stderr,".CI unknown argument %c\n",*p);
        !           163:        }*/
        !           164:        }
        !           165: ^".CO".*       {
        !           166: /*     if(!ci){
        !           167:                printf(".cI n\n");
        !           168:                ci = 1;
        !           169:        }*/
        !           170:        if(!rl){
        !           171:                printf(".fA y\n");
        !           172:                rl = 1;
        !           173:        }
        !           174:        printf(".cC\n");
        !           175:        }
        !           176: ^".CE" {
        !           177:        printf(".cE\n");
        !           178:        }
        !           179: ^".CV".*       {
        !           180: /*     if(!ci){
        !           181:                printf(".cI n\n");
        !           182:                ci = 1;
        !           183:        }*/
        !           184:        if(!rl){
        !           185:                printf(".fA y\n");
        !           186:                rl = 1;
        !           187:        }
        !           188:        printf(".cS\n");
        !           189:        }
        !           190: ^".CS".*       {
        !           191:        ECHO;
        !           192:        printf("\n");
        !           193:        return(0);
        !           194:        }
        !           195: ^".SC".*       {
        !           196: /*     if(!ci){
        !           197:                printf(".cI n\n");
        !           198:                ci = 1;
        !           199:        }*/
        !           200:        if(!rl){
        !           201:                printf(".fA y\n");
        !           202:                rl = 1;
        !           203:        }
        !           204:        p = s1 = &yytext[3];
        !           205:        while(*s1 == ' ')s1++;
        !           206:        while(*s1 != ' ')s1++;
        !           207:        while(*s1 == ' ')s1++;
        !           208:        while(*s1 != ' ')s1++;
        !           209:        *s1 = '\0';
        !           210:        s1++;
        !           211:        printf(".CS %s \"\" %s\n", p, s1);
        !           212:        return(0);
        !           213:        }
        !           214: .*     {
        !           215:        ECHO;
        !           216:        printf("\n");
        !           217:        }
        !           218: \n     ;
        !           219: %%
        !           220: char *header="/tmp/            ";
        !           221: char *dest = "mhuxd!/usr/spool/uucppublic/doc.mcs";
        !           222: char *dco = "BL";
        !           223: main(argc, argv)
        !           224: char *argv[];
        !           225: {
        !           226:        FILE *inp;
        !           227:        char *filename, *name, *cover, *pid;
        !           228:        int nuchars, npid, uid, days;
        !           229:        long mtime;
        !           230:        if(argc < 3){
        !           231:                fprintf(stderr,"file name must be supplied to sendcover\n");
        !           232:                exit(1);
        !           233:        }
        !           234:        if((inp=fopen("/etc/whoami","r")) == NULL){
        !           235:                fprintf(stderr,"can't open /etc/whoami\n");
        !           236:                exit(1);
        !           237:        }
        !           238:        nuchars = fread(machine, sizeof(char), 10, inp);
        !           239:        nuchars -= 1;
        !           240:        if(nuchars < 5)pid = machine + nuchars +1;
        !           241:        else pid = machine + 6;
        !           242:        cover = pid + 5;
        !           243:        fclose(inp);
        !           244:        *(pid-1) = '.';
        !           245:        npid = getpid();
        !           246:        sprintf(pid,"%05d",npid);
        !           247:        *cover = 'c';
        !           248:        sprintf(&header[5],"%s",machine);
        !           249:        uid = getuid();
        !           250:        if ((ps = getpwuid(uid)) == NULL){
        !           251:                fprintf(stderr, "login not found");
        !           252:                exit(1);
        !           253:        }
        !           254:        strcpy (login,ps->pw_name);
        !           255:        sprintf(version,"030388L");     /*version*/
        !           256:        strcpy(co, dco);        /*company name=BL*/
        !           257:        name = argv[1];
        !           258:        argc--; argv++;
        !           259:        if(freopen(argv[1],"r",stdin)==NULL) {
        !           260:                fprintf(stderr,"%s: cannot open\n", argv[1]);
        !           261:                exit(1);
        !           262:        }
        !           263:        if(freopen(header,"w",stdout)== NULL){
        !           264:                fprintf(stderr,"%s: cannot open\n",header);
        !           265:                exit(1);
        !           266:        }
        !           267:        if((nuchars = fwrite(buf,sizeof(char),HEADSIZE,stdout)) != HEADSIZE){
        !           268:                fprintf(stderr,"wrong number of characters written %d\n",nuchars);
        !           269:                        exit(1);
        !           270:        }
        !           271:        filename = argv[1];
        !           272:        mtime = getstamp(filename);
        !           273:        sprintf(timestamp,"%ld",mtime);
        !           274:        argv++;
        !           275:        sprintf(pages,"TP%s",argv[1]);
        !           276:        yylex();
        !           277:        rewind(stdout);
        !           278:        for(p=buf; p < &buf[HEADSIZE-1]; p++)
        !           279:                if(*p == '\0')*p = ' ';
        !           280:        *p = '\n';
        !           281:        if((nuchars = fwrite(buf,sizeof(char),HEADSIZE,stdout)) != HEADSIZE){
        !           282:                fprintf(stderr,"wrong number of characters written %d\n",nuchars);
        !           283:                        exit(1);
        !           284:        }
        !           285:        *(cover+1) = '\0';
        !           286:        if((inp=fopen(name,"a")) == NULL){
        !           287:                fprintf(stderr,"can't open tmp file %s\n",name);
        !           288:                exit(1);
        !           289:        }
        !           290:        fprintf(inp,"cd /tmp; uucp -m -C %s %s; rm %s\n",machine,dest,machine);
        !           291:        fclose(inp);
        !           292: }      

unix.superglobalmegacorp.com

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