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

1.1     ! root        1: /* stackres.c
        !             2:  *
        !             3:  * Copyright (c) 1984, 1985 Xerox Corp.
        !             4:  *
        !             5:  * Module: stackres
        !             6:  * Owner: knox
        !             7:  * stdout: text description
        !             8:  * args:
        !             9:  *   name         (name of the input res file)
        !            10:  *
        !            11:  * Description:
        !            12:  *    This program reads an RES file, executes it and produces a
        !            13:  *    text description file.  The name of the RES file is the
        !            14:  *    the first argument of the command line.  The text description
        !            15:  *    written to the standard output describes the results left
        !            16:  *    on the stack after the image has been executed.
        !            17:  *
        !            18:  *    The image raster will be read from the file "name.res",
        !            19:  *    where name is read from the command line.  The ".res"
        !            20:  *    extension will not be added if it is already present in the
        !            21:  *    name.
        !            22:  *
        !            23:  *
        !            24:  */
        !            25: 
        !            26: #include "stack.h"
        !            27: #include <stdio.h>
        !            28: 
        !            29: extern unsigned char *malloc();
        !            30: 
        !            31: #define err0 "readres: No input RES file name!\n"
        !            32: #define err1 "readres: RES file could not be found, %s!\n"
        !            33: 
        !            34: FILE *fpin;
        !            35: int fdout;
        !            36: 
        !            37: main(argc, argv)
        !            38:   int argc;
        !            39:   char *argv[];
        !            40:   {
        !            41:   getargs(argc, argv);
        !            42:   parse(fpin);
        !            43:   writedata();
        !            44:   exit(0);
        !            45:   }
        !            46: 
        !            47: getargs(argc, argv)
        !            48:   int argc;
        !            49:   char *argv[];
        !            50:   {
        !            51:   int n;
        !            52:   char *filename;
        !            53:   if (argc < 2) error(err0);
        !            54:  
        !            55:   /* Open input RES file. */
        !            56:   fdout = 1;
        !            57:   filename = (char *) malloc(strlen(argv[1])+1+strlen(".res"));
        !            58:   strcpy(filename, argv[1]);
        !            59:   if (strcmp(".res", rindex(filename, '.')) != 0) strcat(filename, ".res");
        !            60:   fpin = fopen(filename, "r");
        !            61:   if (fpin == NULL) error(err1, filename);
        !            62:   }
        !            63: 
        !            64: 
        !            65: 
        !            66: writedata()
        !            67:   {
        !            68:   /* remove everything from the stack. */
        !            69:   int n;
        !            70:   unsigned char *ptr;
        !            71:   n = 0;
        !            72:   while (!stackempty())
        !            73:     {
        !            74:     n++;
        !            75:     ptr = pop(0);
        !            76:     printitem(ptr, n);
        !            77:     printf("\n");
        !            78:     free(ptr);
        !            79:     }
        !            80:   }
        !            81: 
        !            82: printitem(ptr, element)
        !            83:   unsigned char *ptr;
        !            84:   int element;
        !            85:   {
        !            86:   char *type, *subtype;
        !            87:   printf("Element: %d\n", element);
        !            88:   printf("Length: %d\n", getlength(ptr));
        !            89:   switch (gettype(ptr))
        !            90:     {
        !            91:     case type_number:          printnumber(ptr);           break;
        !            92:     case type_string:          printstring(ptr);           break;
        !            93:     case type_vector:          printvector(ptr);           break;
        !            94:     case type_operator:        printoperator(ptr);         break;
        !            95:     case type_color:           printcolor(ptr);            break;
        !            96:     case type_pixelarray:      printpixelarray(ptr);       break;
        !            97:     case type_transformation:  printtransformation(ptr);   break;
        !            98:     case type_integers:        printintegers(ptr);         break;
        !            99:     default:                   printf("Type: unknown\n");  break;
        !           100:     }
        !           101:   }
        !           102: 
        !           103: printnumber(ptr)
        !           104:   unsigned char *ptr;
        !           105:   {
        !           106:   printf("Type: number\n");
        !           107:   switch (getsubtype(ptr))
        !           108:     {
        !           109:     case subtype_integer:    printinteger(ptr);            break;
        !           110:     case subtype_rational:   printrational(ptr);           break;
        !           111:     default:                 printf("Subtype: unknown\n"); break;
        !           112:     }
        !           113:   }
        !           114: 
        !           115: printinteger(ptr)
        !           116:   unsigned char *ptr;
        !           117:   {
        !           118:   printf("Subtype: integer\n");
        !           119:   printf("Value: %d\n", getint(ptr));
        !           120:   }
        !           121: 
        !           122: printrational(ptr)
        !           123:   unsigned char *ptr;
        !           124:   {
        !           125:   printf("Subtype: rational\n");
        !           126:   printf("Value: %f/%f\n", getnumerator(ptr), getdenominator(ptr));
        !           127:   }
        !           128: 
        !           129: printstring(ptr)
        !           130:   unsigned char *ptr;
        !           131:   {
        !           132:   printf("Type: string\n");
        !           133:   switch (getsubtype(ptr))
        !           134:     {
        !           135:     case subtype_identifier:  printidentifier(ptr);          break;
        !           136:     case subtype_string:      printsubstring(ptr);           break;
        !           137:     default:                  printf("Subtype: unknown\n");  break;
        !           138:     }
        !           139:   }
        !           140: 
        !           141: printidentifier(ptr)
        !           142:   unsigned char *ptr;
        !           143:   {
        !           144:   printf("Subtype: identifier\n");
        !           145:   printf("Identifier: %s\n", getstring(ptr, subtype_identifier));
        !           146:   }
        !           147: 
        !           148: printsubstring(ptr)
        !           149:   unsigned char *ptr;
        !           150:   {
        !           151:   printf("Subtype: string\n");
        !           152:   printf("String: %s\n", getstring(ptr, subtype_string));
        !           153:   }
        !           154: 
        !           155: printvector(ptr)
        !           156:   unsigned char *ptr;
        !           157:   {
        !           158:   printf("Type: vector\n");
        !           159:   switch (getsubtype(ptr))
        !           160:     {
        !           161:     case subtype_general:   printvec(ptr, "general");        break;
        !           162:     case subtype_integers:  printvec(ptr, "integers");       break;
        !           163:     case subtype_samples:   printvec(ptr, "samples");        break;
        !           164:     default:                printf("Subtype: unknown\n");    break;
        !           165:     }
        !           166:   }
        !           167: 
        !           168: printvec(ptr, string)
        !           169:   unsigned char *ptr;
        !           170:   char *string;
        !           171:   {
        !           172:   int n, depth;
        !           173:   unsigned char **array;
        !           174:   depth = getdepth(ptr);
        !           175:   printf("Subtype: %s\n", string);
        !           176:   printf("Depth: %d\n", depth);
        !           177:   array = getvector(ptr);
        !           178:   for (n=0; n < depth; n++) printitem(array[n], n);
        !           179:   free(array);
        !           180:   }
        !           181: 
        !           182: printoperator(ptr)
        !           183:   unsigned char *ptr;
        !           184:   {
        !           185:   printf("Type: operator\n");
        !           186:   switch (getsubtype(ptr))
        !           187:     {
        !           188:     case subtype_decompressop:   printop(ptr, "decompressop");     break;
        !           189:     case subtype_colorop:        printop(ptr, "colorop");          break;
        !           190:     case subtype_colormodelop:   printop(ptr, "colormodelop");     break;
        !           191:     default:                     printf("Subtype: unknown\n");     break;
        !           192:     }
        !           193:   }
        !           194: 
        !           195: printop(ptr, string)
        !           196:   unsigned char *ptr;
        !           197:   {
        !           198:   int n, depth;
        !           199:   unsigned char **array;
        !           200:   depth = getdepth(ptr);
        !           201:   printf("Subtype: %s\n", string);
        !           202:   printf("Depth: %d\n", depth);
        !           203:   array = getoperator(ptr);
        !           204:   for (n=0; n < depth; n++) printitem(array[n], n);
        !           205:   free(array);
        !           206:   }
        !           207: 
        !           208: printcolor(ptr)
        !           209:   unsigned char *ptr;
        !           210:   {
        !           211:   printf("Type: color\n");
        !           212:   switch (getsubtype(ptr))
        !           213:     {
        !           214:     case subtype_value:      printcol(ptr, "value");         break;
        !           215:     case subtype_name:       printcol(ptr, "name");          break;
        !           216:     case subtype_operator:   printcol(ptr, "operator");      break;
        !           217:     default:                 printf("Subtype: unknown\n");   break;
        !           218:     }
        !           219:   }
        !           220: 
        !           221: printcol(ptr, string)
        !           222:   unsigned char *ptr;
        !           223:   {
        !           224:   int n, depth;
        !           225:   unsigned char **array;
        !           226:   depth = getdepth(ptr);
        !           227:   printf("Subtype: %s\n", string);
        !           228:   printf("Depth: %d\n", depth);
        !           229:   array = getcolor(ptr);
        !           230:   for (n=0; n < depth; n++) printitem(array[n], n);
        !           231:   free(array);
        !           232:   }
        !           233: 
        !           234: printpixelarray(ptr)
        !           235:   unsigned char *ptr;
        !           236:   {
        !           237:   int n, depth;
        !           238:   unsigned char **array;
        !           239:   depth = getdepth(ptr);
        !           240:   printf("Type: pixelarray\n");
        !           241:   printf("Depth: %d\n", depth);
        !           242:   array = getcolor(ptr);
        !           243:   for (n=0; n < depth; n++) printitem(array[n], n);
        !           244:   free(array);
        !           245:   }
        !           246: 
        !           247: printtransformation(ptr)
        !           248:   unsigned char *ptr;
        !           249:   {
        !           250:   double *array;
        !           251:   array = gettransformation(ptr);
        !           252:   printf("Type: transformation\n");
        !           253:   printf("A: %f\n", array[0]);
        !           254:   printf("B: %f\n", array[1]);
        !           255:   printf("C: %f\n", array[2]);
        !           256:   printf("D: %f\n", array[3]);
        !           257:   printf("E: %f\n", array[4]);
        !           258:   printf("F: %f\n", array[5]);
        !           259:   free(array);
        !           260:   }
        !           261: 
        !           262: printintegers(ptr)
        !           263:   unsigned char *ptr;
        !           264:   {
        !           265:   printf("Type: integers\n");
        !           266:   printf("Bytes/Integer: %d\n", getbytesPerInteger(ptr));
        !           267:   printf("Bytepos: %ld\n", getbytepos(ptr));
        !           268:   printf("ByteLength: %ld\n", getbytelength(ptr));
        !           269:   }
        !           270: 
        !           271: /* Change Log
        !           272:  *
        !           273:  * K. Knox,   28-Mar-85 15:04:13, Created first version.
        !           274:  *
        !           275:  *
        !           276:  *
        !           277:  */
        !           278:  
        !           279:  
        !           280:  
        !           281:  

unix.superglobalmegacorp.com

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