forked from hartwork/rnv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
xsdck.c
30 lines (28 loc) · 786 Bytes
/
xsdck.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <string.h>
#include <stdlib.h>
#include "m.h"
#include "er.h"
#include "xsd.h"
int main(int argc,char **argv) {
xsd_init();
++argv; --argc;
if(!*argv) goto USAGE;
if(strcmp(*argv,"equal")==0) {
if(argc!=4) goto USAGE;
return !xsd_equal(*(argv+1),*(argv+2),*(argv+3),strlen(*(argv+3)));
} else if(strcmp(*argv,"allows")==0) {
int len,i;
char *ps,*p,*a;
if(argc<3||!(argc&1)) goto USAGE;
len=argc-2; for(i=2;i!=argc-1;++i) len+=strlen(*(argv+i));
ps=(char*)m_alloc(len,sizeof(char)); ps[len-1]='\0';
p=ps; for(i=2;i!=argc-1;++i) {
a=*(argv+i);
while((*(p++)=*(a++)));
}
return !xsd_allows(*(argv+1),ps,*(argv+argc-1),strlen(*(argv+argc-1)));
}
USAGE:
(*er_printf)("xsdck: invalid arguments\n");
return 255;
}