ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfilt.c
Revision: 1.8
Committed: Sat Nov 15 17:54:06 2003 UTC (20 years, 5 months ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R7P1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9, rad3R7P2
Changes since 1.7: +10 -7 lines
Log Message:
Continued ANSIfication and reduced compile warnings.

File Contents

# User Rev Content
1 greg 1.1 #ifndef lint
2 schorsch 1.8 static const char RCSid[] = "$Id: mgfilt.c,v 1.7 2003/07/27 22:12:02 schorsch Exp $";
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 schorsch 1.8 put_entity( /* general output routine */
18     register int ac,
19     register char **av
20     )
21 greg 1.1 {
22     while (ac-- > 0) {
23     fputs(*av++, stdout);
24     putchar(ac ? ' ' : '\n');
25     }
26     return(MG_OK);
27     }
28    
29    
30 schorsch 1.8 int
31     main( /* first argument is understood entities, comma-sep. */
32     int argc,
33     char *argv[]
34     )
35 greg 1.1 {
36 greg 1.2 char *cp1, *cp2;
37 greg 1.1 int i, en;
38    
39 greg 1.2 if (argc < 2) {
40 greg 1.4 fprintf(stderr,
41     "Usage: %s { version | entity,list } [file ..]\n",
42     argv[0]);
43 greg 1.2 exit(1);
44     }
45 greg 1.4 if (isint(argv[1])) {
46     i = atoi(argv[1]);
47 schorsch 1.7 if ((i < 1) | (i > MG_VMAJOR)) {
48 greg 1.4 fprintf(stderr, "%s: bad version number: %d\n",
49     argv[0], i);
50     exit(1);
51     }
52     for (en = nentlist[i-1]; en--; )
53     mg_ehand[en] = put_entity;
54 greg 1.5 mg_ehand[MG_E_INCLUDE] = NULL; /* expand include's */
55 greg 1.4 } else
56     for (cp1 = cp2 = argv[1]; *cp1; cp1 = cp2) {
57     while (*cp2) {
58     if (*cp2 == ',') {
59     *cp2++ = '\0';
60     break;
61     }
62     cp2++;
63 greg 1.2 }
64 greg 1.4 en = mg_entity(cp1);
65     if (en < 0) {
66     fprintf(stderr, "%s: %s: no such entity\n",
67     argv[0], cp1);
68     exit(1);
69     }
70     mg_ehand[en] = put_entity;
71 greg 1.2 }
72 greg 1.1 mg_init();
73 greg 1.3 if (argc < 3) {
74     if (mg_load((char *)NULL) != MG_OK)
75     exit(1);
76     if (mg_nunknown)
77     printf("%s %s: %u unknown entities on input\n",
78     mg_ename[MG_E_COMMENT],
79     argv[0], mg_nunknown);
80     exit(0);
81     }
82     for (i = 2; i < argc; i++) {
83 greg 1.2 if (mg_load(argv[i]) != MG_OK)
84     exit(1);
85 greg 1.3 if (mg_nunknown) {
86     printf("%s %s: %u unknown entities\n",
87     mg_ename[MG_E_COMMENT],
88     argv[i], mg_nunknown);
89     mg_nunknown = 0;
90     }
91     }
92 greg 1.2 exit(0);
93 greg 1.1 }