ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/mgfilt.c
(Generate patch)

Comparing ray/src/cv/mgflib/mgfilt.c (file contents):
Revision 1.2 by greg, Sat Feb 11 09:54:29 1995 UTC vs.
Revision 1.7 by schorsch, Sun Jul 27 22:12:02 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1995 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * Filter MGF stream, removing entities that won't be understood
6   */
7  
8   #include <stdio.h>
9 + #include <stdlib.h>
10   #include "parser.h"
11  
12 +                                /* Number of entities for major versions */
13 + short   nentlist[MG_VMAJOR] = MG_NELIST;
14  
15 +
16   int
17   put_entity(ac, av)              /* general output routine */
18   register int    ac;
# Line 33 | Line 34 | char   *argv[];
34          int     i, en;
35  
36          if (argc < 2) {
37 <                fprintf(stderr, "Usage: %s entity,list [file ..]\n", argv[0]);
37 >                fprintf(stderr,
38 >                        "Usage: %s { version | entity,list } [file ..]\n",
39 >                                argv[0]);
40                  exit(1);
41          }
42 <        for (cp1 = cp2 = argv[1]; *cp1; cp1 = cp2) {
43 <                while (*cp2) {
44 <                        if (*cp2 == ',') {
45 <                                *cp2++ = '\0';
46 <                                break;
42 >        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 >                mg_ehand[MG_E_INCLUDE] = NULL;          /* expand include's */
52 >        } 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                          }
61 <                        cp2++;
61 >                        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                  }
69 <                en = mg_entity(cp1);
70 <                if (en < 0) {
71 <                        fprintf(stderr, "%s: %s: no such entity\n",
50 <                                        argv[0], cp1);
69 >        mg_init();
70 >        if (argc < 3) {
71 >                if (mg_load((char *)NULL) != MG_OK)
72                          exit(1);
73 <                }
74 <                mg_ehand[en] = put_entity;
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 <        mg_init();
56 <        if (argc < 3)
57 <                exit(mg_load((char *)NULL) != MG_OK);
58 <        for (i = 2; i < argc; i++)
79 >        for (i = 2; i < argc; i++) {
80                  if (mg_load(argv[i]) != MG_OK)
81                          exit(1);
82 +                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          exit(0);
90   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines