home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1986 Regents of the University of California */
-
- #ifndef lint
- static char SCCSid[] = "@(#)getinfo.c 2.1 11/12/91 LBL";
- #endif
-
- /*
- * getinfo.c - program to read info. header from file.
- *
- * 1/3/86
- */
-
- #include <stdio.h>
-
- #ifdef MSDOS
- #include <fcntl.h>
- #endif
-
- extern int fputs();
-
-
- tabstr(s) /* put out line followed by tab */
- register char *s;
- {
- while (*s) {
- putchar(*s);
- s++;
- }
- if (*--s == '\n')
- putchar('\t');
- }
-
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- int dim = 0;
- FILE *fp;
- int i;
-
- if (argc > 1 && !strcmp(argv[1], "-d")) {
- argc--; argv++;
- dim = 1;
- } else if (argc == 2 && !strcmp(argv[1], "-")) {
- #ifdef MSDOS
- setmode(fileno(stdin), O_BINARY);
- setmode(fileno(stdout), O_BINARY);
- #endif
- getheader(stdin, NULL);
- copycat();
- exit(0);
- }
- for (i = 1; i < argc; i++) {
- fputs(argv[i], stdout);
- if ((fp = fopen(argv[i], "r")) == NULL)
- fputs(": cannot open\n", stdout);
- else {
- if (dim) {
- fputs(": ", stdout);
- getdim(fp);
- } else {
- tabstr(":\n");
- getheader(fp, tabstr, NULL);
- putchar('\n');
- }
- fclose(fp);
- }
- }
- if (argc == 1)
- if (dim) {
- getdim(stdin);
- } else {
- getheader(stdin, fputs, stdout);
- putchar('\n');
- }
- exit(0);
- }
-
-
- getdim(fp) /* get dimensions from file */
- register FILE *fp;
- {
- int j;
- register int c;
-
- getheader(fp, NULL); /* skip header */
-
- switch (c = getc(fp)) {
- case '+': /* picture */
- case '-':
- do
- putchar(c);
- while (c != '\n' && (c = getc(fp)) != EOF);
- break;
- case 1: /* octree */
- getc(fp);
- j = 0;
- while ((c = getc(fp)) != EOF)
- if (c == 0)
- if (++j >= 4)
- break;
- else
- putchar(' ');
- else
- putchar(c);
- putchar('\n');
- break;
- default: /* ??? */
- fputs("unknown file type\n", stdout);
- break;
- }
- }
-
-
- copycat() /* copy input to output */
- {
- register int c;
-
- while ((c = getchar()) != EOF)
- putchar(c);
- }
-