Annotation of 43BSD/contrib/dipress/src/bin/stackres/parse.c, revision 1.1

1.1     ! root        1: /* parse.c
        !             2:  *
        !             3:  * Copyright (c) 1984, 1985 Xerox Corp.
        !             4:  *
        !             5:  *  Eight items are left on the stack when execution finishes.
        !             6:  *     See the RES manual.
        !             7:  *
        !             8:  *
        !             9:  *  pop() can be used to remove items from the stack.
        !            10:  *  Please remember to free() any item you pop off the stack.
        !            11:  *
        !            12:  *
        !            13:  *
        !            14:  */
        !            15: 
        !            16: #include <stdio.h>
        !            17: #include <iptokens.h>
        !            18: 
        !            19: FILE *fp;
        !            20: long filepos = 0;
        !            21: 
        !            22: 
        !            23: #define RES_header "Interpress/Xerox/2.1/RasterEncoding/1.0 "
        !            24: #define len_RES_header 40
        !            25: 
        !            26: #define token_id          0340
        !            27: #define token_mask        0037
        !            28: #define token_short_op    0200
        !            29: #define token_long_op     0240
        !            30: #define token_short_seq   0300
        !            31: #define token_long_seq    0340
        !            32: 
        !            33: parse(fpin)
        !            34:   FILE *fpin;
        !            35:   {
        !            36:   /* variables */
        !            37:   int c, len;
        !            38:   char string[len_RES_header+1];
        !            39:   int last = 0;
        !            40:   int seq;
        !            41: 
        !            42:   /* Get the header. */
        !            43:   fp = fpin;
        !            44:   fgets(string, len_RES_header+1, fp);
        !            45:   header(string, RES_header);
        !            46: 
        !            47:   /* Analyze every token in the file. */
        !            48:   while ((c = getc(fp)) != EOF)
        !            49:     {
        !            50:     filepos = ftell(fp)-1;
        !            51:     switch (c & token_id)
        !            52:       {
        !            53:       case token_short_op:        /* Only allowed short op is "nop". */
        !            54:         len = c & token_mask;
        !            55:         operator(len);
        !            56:        last = 0;
        !            57:         break;
        !            58:       case token_long_op:
        !            59:         len = getc(fp)+((c & token_mask) << 8);
        !            60:         if (operator(len)) return;      /* Quit when you hit endBlock. */
        !            61:        last = 0;
        !            62:         break;
        !            63:       case token_short_seq:
        !            64:         len = getc(fp);
        !            65:        seq = c & token_mask;
        !            66:         sequence(seq, len, last);
        !            67:        if (seq != sequenceContinued) last = seq;
        !            68:         break;
        !            69:       case token_long_seq:
        !            70:         len = getc(fp) << 16;
        !            71:         len = len+(getc(fp) << 8);
        !            72:         len = len+getc(fp);
        !            73:        seq = c & token_mask;
        !            74:         sequence(seq, len, last);
        !            75:        if (seq != sequenceContinued) last = seq;
        !            76:         break;
        !            77:       default:
        !            78:         shortnum((c << 8)+getc(fp)-INTEGER_ZERO);
        !            79:        last = 0;
        !            80:         break;
        !            81:       }
        !            82:     }
        !            83:   /* Shouldn't get here if file ends properly! */
        !            84:   fprintf(stderr, "(%d) Unexpected EOF\n", filepos);
        !            85:   exit(2);
        !            86:   }
        !            87: 
        !            88: 
        !            89: #ifndef debug
        !            90: operator(op)
        !            91:   int op;
        !            92:   {
        !            93:   switch (op)
        !            94:     {
        !            95:     case OP_makevec:                 op_makevec();                break;
        !            96:     case OP_do:                      op_do();                     break;
        !            97:     case OP_pop:                     op_pop();                    break;
        !            98:     case OP_copy:                    op_copy();                   break;
        !            99:     case OP_dup:                     op_dup();                    break;
        !           100:     case OP_roll:                    op_roll();                   break;
        !           101:     case OP_exch:                    op_exch();                   break;
        !           102:     case OP_nop:                     op_nop();                    break;
        !           103:     case OP_translate:               op_translate();              break;
        !           104:     case OP_rotate:                  op_rotate();                 break;
        !           105:     case OP_scale:                   op_scale();                  break;
        !           106:     case OP_scale2:                  op_scale2();                 break;
        !           107:     case OP_concat:                  op_concat();                 break;
        !           108:     case OP_makepixelarray:          op_makepixelarray();         break;
        !           109:     case OP_extractpixelarray:       op_extractpixelarray();      break;
        !           110:     case OP_finddecompressor:        op_finddecompressor();       break;
        !           111:     case OP_makegray:                op_makegray();               break;
        !           112:     case OP_findcolor:               op_findcolor();              break;
        !           113:     case OP_findcoloroperator:       op_findcoloroperator();      break;
        !           114:     case OP_findcolormodeloperator:  op_findcolormodeloperator(); break;
        !           115:     case OP_beginBlock:              op_beginblock();             break;
        !           116:     case OP_endBlock:                op_endblock();               return(1);
        !           117:     default:                         op_unknown(op);              break;
        !           118:     }
        !           119:   return (0);
        !           120:   }
        !           121: 
        !           122: sequence(type, len, last)
        !           123:   int type, len, last;
        !           124:   {
        !           125:   switch (type)
        !           126:     {
        !           127:     case sequenceAdaptivePixelVector:   seq_adaptivepixel(len);     break;
        !           128:     case sequenceComment:               seq_comment(len);           break;
        !           129:     case sequenceCompressedPixelVector: seq_compressedpixel(len);   break;
        !           130:     case sequenceContinued:             seq_continued(len, last);   break;
        !           131:     case sequenceIdentifier:            seq_identifier(len);        break;
        !           132:     case sequenceInsertFile:            seq_insertfile(len);        break;
        !           133:     case sequenceInteger:               seq_integer(len);           break;
        !           134:     case sequenceLargeVector:           seq_largevector(len);       break;
        !           135:     case sequencePackedPixelVector:     seq_packedpixel(len);       break;
        !           136:     case sequenceRational:              seq_rational(len);          break;
        !           137:     case sequenceString:                seq_string(len);            break;
        !           138:     default:                            seq_unknown(type, len);     break;
        !           139:     }
        !           140:   }
        !           141: 
        !           142: #else
        !           143: operator(op)
        !           144:   int op;
        !           145:   {
        !           146:   switch (op)
        !           147:     {
        !           148:     case OP_makevec:
        !           149:       fprintf(stderr, "op_makevec\n");
        !           150:       op_makevec();
        !           151:       break;
        !           152:     case OP_do:
        !           153:       fprintf(stderr, "op_do\n");
        !           154:       op_do();
        !           155:       break;
        !           156:     case OP_pop:
        !           157:       fprintf(stderr, "op_pop\n");
        !           158:       op_pop();
        !           159:       break;
        !           160:     case OP_copy:
        !           161:       fprintf(stderr, "op_copy\n");
        !           162:       op_copy();
        !           163:       break;
        !           164:     case OP_dup:
        !           165:       fprintf(stderr, "op_dup\n");
        !           166:       op_dup();
        !           167:       break;
        !           168:     case OP_roll:
        !           169:       fprintf(stderr, "op_roll\n");
        !           170:       op_roll();
        !           171:       break;
        !           172:     case OP_exch:
        !           173:       fprintf(stderr, "op_exch\n");
        !           174:       op_exch();
        !           175:       break;
        !           176:     case OP_nop:
        !           177:       fprintf(stderr, "op_nop\n");
        !           178:       op_nop();
        !           179:       break;
        !           180:     case OP_translate:
        !           181:       fprintf(stderr, "op_translate\n");
        !           182:       op_translate();
        !           183:       break;
        !           184:     case OP_rotate:
        !           185:       fprintf(stderr, "op_rotate\n");
        !           186:       op_rotate();
        !           187:       break;
        !           188:     case OP_scale:
        !           189:       fprintf(stderr, "op_scale\n");
        !           190:       op_scale();
        !           191:       break;
        !           192:     case OP_scale2:
        !           193:       fprintf(stderr, "op_scale2\n");
        !           194:       op_scale2();
        !           195:       break;
        !           196:     case OP_concat:
        !           197:       fprintf(stderr, "op_concat\n");
        !           198:       op_concat();
        !           199:       break;
        !           200:     case OP_makepixelarray:
        !           201:       fprintf(stderr, "op_makepixelarray\n");
        !           202:       op_makepixelarray();
        !           203:       break;
        !           204:     case OP_extractpixelarray:
        !           205:       fprintf(stderr, "op_extractpixelarray\n");
        !           206:       op_extractpixelarray();
        !           207:       break;
        !           208:     case OP_finddecompressor:
        !           209:       fprintf(stderr, "op_finddecompressor\n");
        !           210:       op_finddecompressor();
        !           211:       break;
        !           212:     case OP_makegray:
        !           213:       fprintf(stderr, "op_makegray\n");
        !           214:       op_makegray();
        !           215:       break;
        !           216:     case OP_findcolor:
        !           217:       fprintf(stderr, "op_findcolor\n");
        !           218:       op_findcolor();
        !           219:       break;
        !           220:     case OP_findcoloroperator:
        !           221:       fprintf(stderr, "op_findcoloroperator\n");
        !           222:       op_findcoloroperator();
        !           223:       break;
        !           224:     case OP_findcolormodeloperator:
        !           225:       fprintf(stderr, "op_findcolormodeloperator\n");
        !           226:       op_findcolormodeloperator();
        !           227:       break;
        !           228:     case OP_beginBlock:
        !           229:       fprintf(stderr, "op_beginblock\n");
        !           230:       op_beginblock();
        !           231:       break;
        !           232:     case OP_endBlock:
        !           233:       fprintf(stderr, "op_endblock\n");
        !           234:       op_endblock();
        !           235:       return(1);
        !           236:     default:
        !           237:       fprintf(stderr, "op_unknown\n");
        !           238:       op_unknown(op);
        !           239:       break;
        !           240:     }
        !           241:   return (0);
        !           242:   }
        !           243: 
        !           244: sequence(type, len, last)
        !           245:   int type, len, last;
        !           246:   {
        !           247:   switch (type)
        !           248:     {
        !           249:     case sequenceAdaptivePixelVector:
        !           250:       fprintf(stderr, "seq_adaptivepixel\n");
        !           251:       seq_adaptivepixel(len);
        !           252:       break;
        !           253:     case sequenceComment:
        !           254:       fprintf(stderr, "seq_comment\n");
        !           255:       seq_comment(len);
        !           256:       break;
        !           257:     case sequenceCompressedPixelVector:
        !           258:       fprintf(stderr, "seq_compressedpixel\n");
        !           259:       seq_compressedpixel(len);
        !           260:       break;
        !           261:     case sequenceContinued:
        !           262:       fprintf(stderr, "seq_continued\n");
        !           263:       seq_continued(len, last);
        !           264:       break;
        !           265:     case sequenceIdentifier:
        !           266:       fprintf(stderr, "seq_identifier\n");
        !           267:       seq_identifier(len);
        !           268:       break;
        !           269:     case sequenceInsertFile:
        !           270:       fprintf(stderr, "seq_insertfile\n");
        !           271:       seq_insertfile(len);
        !           272:       break;
        !           273:     case sequenceInteger:
        !           274:       fprintf(stderr, "seq_integer\n");
        !           275:       seq_integer(len);
        !           276:       break;
        !           277:     case sequenceLargeVector:
        !           278:       fprintf(stderr, "seq_largevector\n");
        !           279:       seq_largevector(len);
        !           280:       break;
        !           281:     case sequencePackedPixelVector:
        !           282:       fprintf(stderr, "seq_packedpixel\n");
        !           283:       seq_packedpixel(len);
        !           284:       break;
        !           285:     case sequenceRational:
        !           286:       fprintf(stderr, "seq_rational\n");
        !           287:       seq_rational(len);
        !           288:       break;
        !           289:     case sequenceString:
        !           290:       fprintf(stderr, "seq_string\n");
        !           291:       seq_string(len);
        !           292:       break;
        !           293:     default:
        !           294:       fprintf(stderr, "seq_unknown\n");
        !           295:       seq_unknown(type, len);     
        !           296:       break;
        !           297:     }
        !           298:   }
        !           299: 
        !           300: #endif
        !           301: 
        !           302: /* Change Log
        !           303:  *
        !           304:  * K. Knox, 28-Mar-85 18:26:50, Created first version.
        !           305:  *
        !           306:  *
        !           307:  *
        !           308:  */
        !           309: 
        !           310: 
        !           311: 
        !           312: 
        !           313: 
        !           314:  

unix.superglobalmegacorp.com

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