Annotation of 43BSDTahoe/usr.bin/refer/kaiser.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *sccsid = "@(#)kaiser.c    4.1 (Berkeley) 5/6/83";
        !             3: #endif
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include <ctype.h>
        !             7: 
        !             8: char *months[] {
        !             9:        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
        !            10:        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 0};
        !            11: 
        !            12: main()
        !            13: {
        !            14:        int state 1000, i, book, volume, corp, report;
        !            15:        int na;
        !            16:        char *v[20], **vv, **rr;
        !            17:        char ubuff[1000], *up;
        !            18:        char line[100];
        !            19:        char *p, *s, *r, *q;
        !            20:        while (gets(line))
        !            21:        {
        !            22:                if (line[1]>'9' || line[1]<'0') continue;
        !            23:                switch(line[0])
        !            24:                {
        !            25:                case 'T':
        !            26:                        if (state > 'T')
        !            27:                        {
        !            28:                                book=0;
        !            29:                                report=0;
        !            30:                                printf("\n%%T ");
        !            31:                        }
        !            32:                        printf("%s\n", line+18);
        !            33:                        state='T';
        !            34:                        na = getargs(line+18, v);
        !            35:                        for(i=0;i<na;i++)
        !            36:                                if (strcmp(v[i], "(Book)")==0)
        !            37:                                        book=1;
        !            38:                        continue;
        !            39:                case 'A':
        !            40:                        state = 'A';
        !            41:                        na=getargs(line+18, vv=v);
        !            42:                        if (na<=0) continue;
        !            43:                        while (na>0)
        !            44:                        {
        !            45:                                printf("%%A ");
        !            46:                                corp=0;
        !            47:                                for(p=vv[1]; *p; p++)
        !            48:                                        if (islower(*p))
        !            49:                                                corp=1;
        !            50:                                if (corp==0)
        !            51:                                {
        !            52:                                        for(p=vv[1]; *p; p++)
        !            53:                                                printf("%c. ", *p);
        !            54:                                        if (na>2 &&strcmp(vv[2], "+"))
        !            55:                                        {
        !            56:                                                printf("%s", vv[0]);
        !            57:                                                if (strcmp(vv[2], "Jr.")==0)
        !            58:                                                        printf(",");
        !            59:                                                printf(" %s\n",vv[2]);
        !            60:                                                vv++;
        !            61:                                                na--;
        !            62:                                        }
        !            63:                                        else
        !            64:                                                printf("%s\n", vv[0]);
        !            65:                                }
        !            66:                                else
        !            67:                                        printf("%s %s\n",vv[0],vv[1]);
        !            68:                                vv+=2;
        !            69:                                na-=2;
        !            70:                                if (strcmp(vv[0], "+")==0)
        !            71:                                {
        !            72:                                        vv++;
        !            73:                                        na--;
        !            74:                                }
        !            75:                        }
        !            76:                        continue;
        !            77:                case 'U':
        !            78:                        if (state!='U')
        !            79:                                ubuff[0]=0;
        !            80:                        else
        !            81:                                strcat(ubuff, " ");
        !            82:                        state = 'U';
        !            83:                        strcat(ubuff, line+18);
        !            84:                        if (line[2]=='.')
        !            85:                        { /* end of item */
        !            86:                                p=ubuff; /*start*/
        !            87:                                volume=0;
        !            88:                                for(s=ubuff; *s; s++)
        !            89:                                        if (s[-1]==' ' && prefix("Vol", s))
        !            90:                                        {
        !            91:                                                for(q=s-1; q>ubuff; q--)
        !            92:                                                {
        !            93:                                                        if (*q==' ' || *q==',') *q=0;
        !            94:                                                        else break;
        !            95:                                                }
        !            96:                                                volume=1;
        !            97:                                                break;
        !            98:                                        }
        !            99:                                if (*s==0)
        !           100:                                        for(s=ubuff; *s && (*s!=',' || sprefix("Inc", s+1)); s++)
        !           101:                                                ;
        !           102:                                else
        !           103:                                        s++;
        !           104:                                if (*s==',')*s++=0;
        !           105:                                if (book)
        !           106:                                        printf("%%I %s\n",ubuff);
        !           107:                                else if (volume)
        !           108:                                        printf("%%J %s\n", ubuff);
        !           109:                                else if (substr(ubuff, "Report")!=0)
        !           110:                                {
        !           111:                                        report=1;
        !           112:                                        printf("%%R %s\n", ubuff);
        !           113:                                }
        !           114:                                else
        !           115:                                        printf("%%J %s\n", ubuff);
        !           116:                                if (volume)
        !           117:                                {
        !           118:                                        s += 3; /* Vol */
        !           119:                                        if (*s=='.') s++;
        !           120:                                        while (*s==' ')s++;
        !           121:                                        printf("%%V ");
        !           122:                                        while (*s && *s != ' ' && *s!=',' && *s!=';' && *s!= ':')
        !           123:                                                putchar(*s++);
        !           124:                                        putchar('\n');
        !           125:                                        if (*s==':')
        !           126:                                        {
        !           127:                                                printf("%%N ");
        !           128:                                                while (*s==' ')s++;
        !           129:                                                while (isdigit(*s))
        !           130:                                                        putchar(*s++);
        !           131:                                                putchar('\n');
        !           132:                                        }
        !           133:                                        *s++=0;
        !           134:                                        while (*s==' ')*s++=0;
        !           135:                                        if (s[0]=='N' && s[1]=='o' && (s[2]==' '||s[2]=='.'))
        !           136:                                        {
        !           137:                                                s+=2;
        !           138:                                                while (*s==' '||*s=='.')s++;
        !           139:                                                printf("%%N ");
        !           140:                                                while (isdigit(*s)||*s=='-')
        !           141:                                                        putchar(*s++);
        !           142:                                                putchar('\n');
        !           143:                                        }
        !           144:                                        if (*s==',') *s++=0;
        !           145:                                }
        !           146:                                for(rr=months; *rr; rr++)
        !           147:                                {
        !           148:                                        q= substr(s, *rr);
        !           149:                                        if (q)
        !           150:                                        {
        !           151:                                                for(r=q; *r; r++);
        !           152:                                                r--;
        !           153:                                                if (*r=='.')*r=0;
        !           154:                                                printf("%%D %s\n",q);
        !           155:                                                *(q-1)=0;
        !           156:                                                break;
        !           157:                                        }
        !           158:                                }
        !           159:                                if (*rr==0)
        !           160:                                {
        !           161:                                        for(q=s; *q; q++)
        !           162:                                        {
        !           163:                                                if (q[0]=='1' && q[1]=='9' && (q[4]==0 || (q[4]=='.' && q[5]==0)))
        !           164:                                                {
        !           165:                                                        if (q[4]=='.') q[4]=0;
        !           166:                                                        printf("%%D %s\n",q);
        !           167:                                                        rr=months;
        !           168:                                                        q[-1]=0;
        !           169:                                                        if (q==s) q[0]=0;
        !           170:                                                        break;
        !           171:                                                }
        !           172:                                        }
        !           173:                                }
        !           174:                                if (*rr==0) /* no date */
        !           175:                                        printf("%%D 19xx\n");
        !           176:                                /* if book bite off next field for city, if report for issuer */
        !           177:                                if (book)
        !           178:                                {
        !           179:                                        for(q=s; *q && *q != ','; q++)
        !           180:                                                ;
        !           181:                                        if (*q==',')
        !           182:                                        {
        !           183:                                                r=q;
        !           184:                                                r++;
        !           185:                                                while (*r==' ')r++;
        !           186:                                                if (isupper(r[0]) && isupper(r[1]))
        !           187:                                                {
        !           188:                                                        r+=2;
        !           189:                                                        *r++=0;
        !           190:                                                        while (*r==' ')r++;
        !           191:                                                }
        !           192:                                                else
        !           193:                                                        *q=0;
        !           194:                                                printf("%%C %s\n", s);
        !           195:                                                s=r;
        !           196:                                        }
        !           197:                                }
        !           198:                                for(q=s; *q; q++)
        !           199:                                {
        !           200:                                        if (q[0]==' ' && q[1]=='p' && (q[2]=='p'||q[2]==0))
        !           201:                                        {
        !           202:                                                for(r=q; r>s; r--)
        !           203:                                                {
        !           204:                                                        if (*r==' ' || *r==',')
        !           205:                                                                *r=0;
        !           206:                                                }
        !           207:                                                *q=0;
        !           208:                                                q+=2;
        !           209:                                                if (q[0]=='p')q++;
        !           210:                                                while (*q==' '||*q=='.')q++;
        !           211:                                                r=q;
        !           212:                                                while (isdigit(*q)||*q=='.'||*q=='-'||isalpha(*q))q++;
        !           213:                                                *q++=0;
        !           214:                                                while (*q==' ')q++;
        !           215:                                                printf("%%P %s\n",r);
        !           216:                                                break;
        !           217:                                        }
        !           218:                                }
        !           219:                                s=ispp(s);
        !           220:                                while (*s==' ')s++;
        !           221:                                while (*q==' ')q++;
        !           222:                                if (*s||*q)
        !           223:                                        printf("%%O %s %s\n", *s?s:"", *q?q:"");
        !           224:                        }
        !           225:                        continue;
        !           226:                }
        !           227:        }
        !           228: }
        !           229: 
        !           230: getargs(s, arps)
        !           231: char *s, *arps[];
        !           232: {
        !           233:        int i;
        !           234:        i = 0;
        !           235:        while (1)
        !           236:        {
        !           237:                arps[i++]=s;
        !           238:                while (*s != 0 && *s!=' '&& *s != '\t')s++;
        !           239:                if (*s==0) break;
        !           240:                *s++ =0;
        !           241:                while (*s==' ' || *s=='\t')s++;
        !           242:                if (*s==0)break;
        !           243:        }
        !           244:        return(i);
        !           245: }
        !           246: 
        !           247: prefix(small, big)
        !           248: char *small, *big;
        !           249: {
        !           250:        int c;
        !           251:        while ((c= *small++) == *big++)
        !           252:                if (c==0) return(1);
        !           253:        return(c==0);
        !           254: }
        !           255: 
        !           256: substr(big, small)
        !           257: char *small, *big;
        !           258: {
        !           259:        while (*big)
        !           260:                if (prefix(small, big))
        !           261:                        return(big);
        !           262:                else
        !           263:                        big++;
        !           264:        return(0);
        !           265: }
        !           266: 
        !           267: sprefix(small, big)
        !           268: char *small, *big;
        !           269: {
        !           270:        while (*big==' ') big++;
        !           271:        return(prefix(small,big));
        !           272: }
        !           273: 
        !           274: ispp(s)
        !           275: char *s;
        !           276: {
        !           277:        static char buff[50];
        !           278:        char *p, *t;
        !           279:        p=s;
        !           280:        while (*p==' ') p++;
        !           281:        if (!isdigit(*p)) return(s);
        !           282:        t=p;
        !           283:        while (isdigit(*p))p++;
        !           284:        if (p[0]!='p' || p[1]!='p') return(s);
        !           285:        *p=0;
        !           286:        sprintf(buff, "%spp.", t);
        !           287:        return(buff);
        !           288: }

unix.superglobalmegacorp.com

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