ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfilt.c
Revision: 1.6
Committed: Fri Feb 28 20:11:29 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R5
Changes since 1.5: +2 -4 lines
Log Message:
Updates for 3.5 release

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2 greg 1.6 static const char RCSid[] = "$Id$";
3 greg 1.1 #endif
4     /*
5     * Filter MGF stream, removing entities that won't be understood
6     */
7    
8     #include <stdio.h>
9 greg 1.6 #include <stdlib.h>
10 greg 1.1 #include "parser.h"
11    
12 greg 1.4 /* Number of entities for major versions */
13     short nentlist[MG_VMAJOR] = MG_NELIST;
14 greg 1.1
15 greg 1.4
16 greg 1.1 int
17     put_entity(ac, av) /* general output routine */
18     register int ac;
19     register char **av;
20     {
21     while (ac-- > 0) {
22     fputs(*av++, stdout);
23     putchar(ac ? ' ' : '\n');
24     }
25     return(MG_OK);
26     }
27    
28    
29 greg 1.2 main(argc, argv) /* first argument is understood entities, comma-sep. */
30 greg 1.1 int argc;
31 greg 1.2 char *argv[];
32 greg 1.1 {
33 greg 1.2 char *cp1, *cp2;
34 greg 1.1 int i, en;
35    
36 greg 1.2 if (argc < 2) {
37 greg 1.4 fprintf(stderr,
38     "Usage: %s { version | entity,list } [file ..]\n",
39     argv[0]);
40 greg 1.2 exit(1);
41     }
42 greg 1.4 if (isint(argv[1])) {
43     i = atoi(argv[1]);
44     if (i < 1 | i > MG_VMAJOR) {
45     fprintf(stderr, "%s: bad version number: %d\n",
46     argv[0], i);
47     exit(1);
48     }
49     for (en = nentlist[i-1]; en--; )
50     mg_ehand[en] = put_entity;
51 greg 1.5 mg_ehand[MG_E_INCLUDE] = NULL; /* expand include's */
52 greg 1.4 } else
53     for (cp1 = cp2 = argv[1]; *cp1; cp1 = cp2) {
54     while (*cp2) {
55     if (*cp2 == ',') {
56     *cp2++ = '\0';
57     break;
58     }
59     cp2++;
60 greg 1.2 }
61 greg 1.4 en = mg_entity(cp1);
62     if (en < 0) {
63     fprintf(stderr, "%s: %s: no such entity\n",
64     argv[0], cp1);
65     exit(1);
66     }
67     mg_ehand[en] = put_entity;
68 greg 1.2 }
69 greg 1.1 mg_init();
70 greg 1.3 if (argc < 3) {
71     if (mg_load((char *)NULL) != MG_OK)
72     exit(1);
73     if (mg_nunknown)
74     printf("%s %s: %u unknown entities on input\n",
75     mg_ename[MG_E_COMMENT],
76     argv[0], mg_nunknown);
77     exit(0);
78     }
79     for (i = 2; i < argc; i++) {
80 greg 1.2 if (mg_load(argv[i]) != MG_OK)
81     exit(1);
82 greg 1.3 if (mg_nunknown) {
83     printf("%s %s: %u unknown entities\n",
84     mg_ename[MG_E_COMMENT],
85     argv[i], mg_nunknown);
86     mg_nunknown = 0;
87     }
88     }
89 greg 1.2 exit(0);
90 greg 1.1 }