ruby_rnv 0.3.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/rnv/src/rx.h CHANGED
@@ -19,16 +19,15 @@
19
19
  #define RX_ER_DNUOB 10
20
20
  #define RX_ER_NOTRC 11
21
21
 
22
- //extern void (*rx_verror_handler)(int erno,va_list ap);
23
- //extern int rx_compact;
24
-
25
- extern void rx_default_verror_handler(rnv_t *rnv, int erno,va_list ap);
22
+ extern void rx_default_verror_handler(void *data, int erno, int (*handler)(void *data, int erno,char *format, va_list ap), va_list ap);
26
23
 
27
24
  extern void rx_init(rx_st_t *rx_st);
28
25
  extern void rx_clear(rx_st_t *rx_st);
29
26
 
27
+ extern void rx_dispose(rx_st_t *rx_st);
28
+
30
29
  /* just compiles the expression to check the syntax */
31
- extern int rx_check(rnv_t *rnv, rx_st_t *rx_st, char *rx);
30
+ extern int rx_check(rx_st_t *rx_st, char *rx);
32
31
 
33
32
  /*
34
33
  returns positive value if the s[0..n] ~= rx, 0 if not, -1 on regex error;
@@ -36,8 +35,8 @@ extern int rx_check(rnv_t *rnv, rx_st_t *rx_st, char *rx);
36
35
  rmatch replaces white space in s with 0x20,
37
36
  cmatch collapses white space.
38
37
  */
39
- extern int rx_match(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
40
- extern int rx_rmatch(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
41
- extern int rx_cmatch(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
38
+ extern int rx_match(rx_st_t *rx_st, char *rx,char *s,int n);
39
+ extern int rx_rmatch(rx_st_t *rx_st, char *rx,char *s,int n);
40
+ extern int rx_cmatch(rx_st_t *rx_st, char *rx,char *s,int n);
42
41
 
43
42
  #endif
data/ext/rnv/src/sc.c CHANGED
@@ -1,5 +1,6 @@
1
1
  /* $Id: sc.c,v 1.16 2004/03/13 13:28:02 dvd Exp $ */
2
2
 
3
+ #include <stdlib.h> /*NULL*/
3
4
  #include <assert.h> /*assert*/
4
5
  #include "m.h"
5
6
  #include "ll.h"
@@ -20,6 +21,10 @@ void sc_init(struct sc_stack *stp) {
20
21
  windup(stp);
21
22
  }
22
23
 
24
+ void sc_dispose(struct sc_stack *stp) {
25
+ m_free(stp->tab); stp->tab = NULL;
26
+ }
27
+
23
28
  void sc_clear(struct sc_stack *stp) {
24
29
  windup(stp);
25
30
  }
data/ext/rnv/src/sc.h CHANGED
@@ -12,6 +12,7 @@ struct sc_stack {
12
12
 
13
13
  extern void sc_init(struct sc_stack *stp);
14
14
  extern void sc_clear(struct sc_stack *stp);
15
+ extern void sc_dispose(struct sc_stack *stp);
15
16
 
16
17
  extern void sc_open(struct sc_stack *stp);
17
18
  extern void sc_lock(struct sc_stack *stp);
data/ext/rnv/src/type.h CHANGED
@@ -20,14 +20,54 @@ typedef struct rn_st
20
20
  int len_nc;
21
21
  int len_s;
22
22
  int adding_ps;
23
+
23
24
  } rn_st_t;
24
25
 
26
+ struct rnc_cym {
27
+ char *s; int slen;
28
+ int line,col;
29
+ int sym;
30
+ };
31
+
32
+ struct rnc_source {
33
+ int flags;
34
+ char *fn; int fd;
35
+ char *buf; int i,n;
36
+ int complete;
37
+ int line,col,prevline/*when error reported*/;
38
+ int u,v,w; int nx;
39
+ int cur;
40
+ struct rnc_cym sym[2];
41
+
42
+ int (*verror_handler)(void *data, int erno, char *format, va_list ap);
43
+ void *user_data;
44
+ };
45
+
46
+ typedef struct rnc_st
47
+ {
48
+ int len_p;
49
+ char *path;
50
+ struct sc_stack nss;
51
+ struct sc_stack dts;
52
+ struct sc_stack defs;
53
+ struct sc_stack refs;
54
+ struct sc_stack prefs;
55
+
56
+ int (*verror_handler)(void *data, int erno, char *format, va_list ap);
57
+ void *user_data;
58
+
59
+ } rnc_st_t;
60
+
25
61
  typedef struct rnd_st
26
62
  {
27
63
  int len_f;
28
64
  int n_f;
29
65
  int *flat;
30
66
  int errors;
67
+
68
+ int (*verror_handler)(void *data, int erno, char *format, va_list ap);
69
+ void *user_data;
70
+
31
71
  } rnd_st_t;
32
72
 
33
73
  typedef struct rnv rnv_t;
@@ -58,25 +98,18 @@ typedef struct rx_st
58
98
  int (*memo)[3];
59
99
  int (*r2p)[2];
60
100
 
61
- // FIXME: for error handlers
62
- rnv_t *rnv;
63
- } rx_st_t;
101
+ int rx_compact;
64
102
 
65
- typedef struct rnx_st
66
- {
67
- int len_exp;
68
- } rnx_st_t;
103
+ int (*verror_handler)(void *data, int erno, char *format, va_list ap);
104
+ void *user_data;
69
105
 
70
- typedef struct rnc_st
106
+ } rx_st_t;
107
+
108
+ typedef struct dtl_cb
71
109
  {
72
- int len_p;
73
- char *path;
74
- struct sc_stack nss;
75
- struct sc_stack dts;
76
- struct sc_stack defs;
77
- struct sc_stack refs;
78
- struct sc_stack prefs;
79
- } rnc_st_t;
110
+ int p;
111
+ int ret;
112
+ } dtl_cb_t;
80
113
 
81
114
  typedef struct drv_st
82
115
  {
@@ -87,6 +120,15 @@ typedef struct drv_st
87
120
  int len_m;
88
121
  struct hashtable ht_m;
89
122
  int (*memo)[5];
123
+
124
+ dtl_cb_t dtl_cb[256];
125
+ int n_dtl_cb;
126
+
127
+ int drv_compact;
128
+
129
+ int (*verror_handler)(void *data, int erno, char *format, va_list ap);
130
+ void *user_data;
131
+
90
132
  } drv_st_t;
91
133
 
92
134
  typedef struct rnv
@@ -100,22 +142,13 @@ typedef struct rnv
100
142
  int rn_dt_string;
101
143
  int rn_dt_token;
102
144
  int rn_xsd_uri;
103
- int rx_compact;
145
+
104
146
  int rnx_n_exp;
105
147
  int *rnx_exp;
106
- int drv_compact;
107
-
108
- int (*verror_handler)(rnv_t *rnv, int erno, char *format,va_list ap);
109
- void (*drv_verror_handler)(rnv_t *rnv, int erno, va_list ap);
110
- void (*rnc_verror_handler)(rnv_t *rnv, int erno, va_list ap);
111
- void (*rnd_verror_handler)(rnv_t *rnv, int erno, va_list ap);
112
- void (*rnl_verror_handler)(rnv_t *rnv, int erno, va_list ap);
113
- void (*rnv_verror_handler)(rnv_t *rnv, int erno, va_list ap);
114
- void (*rx_verror_handler)(rnv_t *rnv, int erno, va_list ap);
115
- void (*xsd_verror_handler)(rnv_t *rnv, int erno, va_list ap);
148
+ int rnx_len_exp;
116
149
 
150
+ int (*verror_handler)(void *data, int erno, char *format,va_list ap);
117
151
  void *user_data;
118
-
119
152
  } rnv_t;
120
153
 
121
154
  #endif // TYPE_H
data/ext/rnv/src/xcl.c CHANGED
@@ -68,7 +68,7 @@ static int mixed = 0;
68
68
  static char *xgfile = NULL, *xgpos = NULL;
69
69
 
70
70
  #define err(msg) (*rnv->verror_handler)(rnv,erno,msg "\n", ap);
71
- static void verror_handler(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int erno, va_list ap)
71
+ static void verror_handler(rnv_t *rnv, xcl_st_t *xcl_st, int erno, va_list ap)
72
72
  {
73
73
  if (erno & ERBIT_RNL)
74
74
  {
@@ -94,7 +94,7 @@ static void verror_handler(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int e
94
94
  char *s;
95
95
  while (req--)
96
96
  {
97
- rnx_expected(rnv, rnx_st, xcl_st->previous, req);
97
+ rnx_expected(rnv, xcl_st->previous, req);
98
98
  if (i == rnv->rnx_n_exp)
99
99
  continue;
100
100
  if (rnv->rnx_n_exp > xcl_st->nexp)
@@ -129,18 +129,18 @@ static void verror_handler(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int e
129
129
  }
130
130
  }
131
131
 
132
- static void verror_handler_rnl(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int erno, va_list ap) { verror_handler(rnv, xcl_st, rnx_st, erno | ERBIT_RNL, ap); }
133
- static void verror_handler_rnv(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int erno, va_list ap) { verror_handler(rnv, xcl_st, rnx_st, erno | ERBIT_RNV, ap); }
132
+ static void verror_handler_rnl(rnv_t *rnv, xcl_st_t *xcl_st, int erno, va_list ap) { verror_handler(rnv, xcl_st, erno | ERBIT_RNL, ap); }
133
+ static void verror_handler_rnv(rnv_t *rnv, xcl_st_t *xcl_st, int erno, va_list ap) { verror_handler(rnv, xcl_st, erno | ERBIT_RNV, ap); }
134
134
 
135
135
  static void windup(xcl_st_t *xcl_st);
136
- static void init(rnv_t *rnv, xcl_st_t *xcl_st, rn_st_t *rn_st, rnd_st_t *rnd_st, rnc_st_t *rnc_st, rnx_st_t *rnx_st, drv_st_t *drv_st, rx_st_t *rx_st)
136
+ static void init(rnv_t *rnv, xcl_st_t *xcl_st, rn_st_t *rn_st, rnc_st_t *rnc_st, rnd_st_t *rnd_st, drv_st_t *drv_st, rx_st_t *rx_st)
137
137
  {
138
138
  rnv->verror_handler=&verror_default_handler;
139
- rnl_init(rnv, rn_st, rnd_st, rnc_st);
139
+ rnl_init(rnv, rnc_st, rn_st, rnd_st);
140
140
  //rnl_verror_handler = &verror_handler_rnl;
141
141
  rnv_init(rnv, drv_st, rn_st, rx_st);
142
142
  //rnv_verror_handler = &verror_handler_rnv;
143
- rnx_init(rnv, rnx_st);
143
+ rnx_init(rnv);
144
144
  xcl_st->text = (char *)m_alloc(xcl_st->len_txt = LEN_T, sizeof(char));
145
145
  windup(xcl_st);
146
146
  }
@@ -162,11 +162,11 @@ static void windup(xcl_st_t *xcl_st)
162
162
  xcl_st->lastline = xcl_st->lastcol = -1;
163
163
  }
164
164
 
165
- static void error_handler(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int erno, ...)
165
+ static void error_handler(rnv_t *rnv, xcl_st_t *xcl_st, int erno, ...)
166
166
  {
167
167
  va_list ap;
168
168
  va_start(ap, erno);
169
- verror_handler(rnv, xcl_st, rnx_st, erno, ap);
169
+ verror_handler(rnv, xcl_st, erno, ap);
170
170
  va_end(ap);
171
171
  }
172
172
 
@@ -258,14 +258,14 @@ static void processingInstruction(void *userData,
258
258
  }
259
259
  }
260
260
 
261
- static int pipeout(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, void *buf, int len)
261
+ static int pipeout(rnv_t *rnv, xcl_st_t *xcl_st, void *buf, int len)
262
262
  {
263
263
  int ofs = 0, iw, lenw = len;
264
264
  for (;;)
265
265
  {
266
266
  if ((iw = write(1, (char *)buf + ofs, lenw)) == -1)
267
267
  {
268
- error_handler(rnv, xcl_st, rnx_st, XCL_ER_IO, strerror(errno));
268
+ error_handler(rnv, xcl_st, XCL_ER_IO, strerror(errno));
269
269
  return 0;
270
270
  }
271
271
  ofs += iw;
@@ -275,7 +275,7 @@ static int pipeout(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, void *buf, in
275
275
  }
276
276
  }
277
277
 
278
- static int process(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int fd)
278
+ static int process(rnv_t *rnv, xcl_st_t *xcl_st, int fd)
279
279
  {
280
280
  void *buf;
281
281
  int len;
@@ -285,11 +285,11 @@ static int process(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int fd)
285
285
  len = read(fd, buf, BUFSIZE);
286
286
  if (len < 0)
287
287
  {
288
- error_handler(rnv, xcl_st, rnx_st, XCL_ER_IO, xcl_st->xml, strerror(errno));
288
+ error_handler(rnv, xcl_st, XCL_ER_IO, xcl_st->xml, strerror(errno));
289
289
  goto ERROR;
290
290
  }
291
291
  if (xcl_st->peipe)
292
- xcl_st->peipe = xcl_st->peipe && pipeout(rnv, xcl_st, rnx_st, buf, len);
292
+ xcl_st->peipe = xcl_st->peipe && pipeout(rnv, xcl_st, buf, len);
293
293
  if (!XML_ParseBuffer(expat, len, len == 0))
294
294
  goto PARSE_ERROR;
295
295
  if (len == 0)
@@ -298,9 +298,9 @@ static int process(rnv_t *rnv, xcl_st_t *xcl_st, rnx_st_t *rnx_st, int fd)
298
298
  return xcl_st->ok;
299
299
 
300
300
  PARSE_ERROR:
301
- error_handler(rnv, xcl_st, rnx_st, XCL_ER_XML, XML_ErrorString(XML_GetErrorCode(expat)));
301
+ error_handler(rnv, xcl_st, XCL_ER_XML, XML_ErrorString(XML_GetErrorCode(expat)));
302
302
  while (xcl_st->peipe && (len = read(fd, buf, BUFSIZE)) != 0)
303
- xcl_st->peipe = xcl_st->peipe && pipeout(rnv, xcl_st, rnx_st, buf, len);
303
+ xcl_st->peipe = xcl_st->peipe && pipeout(rnv, xcl_st, buf, len);
304
304
  ERROR:
305
305
  return 0;
306
306
  }
@@ -308,11 +308,11 @@ ERROR:
308
308
  static int externalEntityRef(XML_Parser p, const char *context,
309
309
  const char *base, const char *systemId, const char *publicId)
310
310
  {
311
- //error_handler(rnv, xcl_st, rnx_st, XCL_ER_XENT);
311
+ //error_handler(rnv, xcl_st, XCL_ER_XENT);
312
312
  return 1;
313
313
  }
314
314
 
315
- static void validate(rnv_t *rnv, xcl_st_t *xcl_st, drv_st_t *drv_st, rn_st_t *rn_st, rnx_st_t *rnx_st, int fd)
315
+ static void validate(rnv_t *rnv, xcl_st_t *xcl_st, drv_st_t *drv_st, rn_st_t *rn_st, int fd)
316
316
  {
317
317
  xcl_st->previous = xcl_st->current = xcl_st->start;
318
318
  expat = XML_ParserCreateNS(NULL, ':');
@@ -322,7 +322,7 @@ static void validate(rnv_t *rnv, xcl_st_t *xcl_st, drv_st_t *drv_st, rn_st_t *rn
322
322
  XML_SetExternalEntityRefHandler(expat, &externalEntityRef);
323
323
  XML_SetProcessingInstructionHandler(expat, &processingInstruction);
324
324
  XML_SetUserData(expat, xcl_st);
325
- xcl_st->ok = process(rnv, xcl_st, rnx_st, fd);
325
+ xcl_st->ok = process(rnv, xcl_st, fd);
326
326
  XML_ParserFree(expat);
327
327
  }
328
328
 
@@ -334,7 +334,6 @@ int main(int argc, char **argv)
334
334
  rnv_t *rnv;
335
335
  rn_st_t *rn_st;
336
336
  rnc_st_t *rnc_st;
337
- rnx_st_t *rnx_st;
338
337
  drv_st_t *drv_st;
339
338
  rx_st_t *rx_st;
340
339
  rnd_st_t *rnd_st;
@@ -343,7 +342,6 @@ int main(int argc, char **argv)
343
342
  rnv = malloc(sizeof(rnv_t));
344
343
  rn_st = malloc(sizeof(rn_st_t));
345
344
  rnc_st = malloc(sizeof(rnc_st_t));
346
- rnx_st = malloc(sizeof(rnx_st_t));
347
345
  drv_st = malloc(sizeof(drv_st_t));
348
346
  rx_st = malloc(sizeof(rx_st_t));
349
347
  rnd_st = malloc(sizeof(rnd_st_t));
@@ -354,7 +352,7 @@ int main(int argc, char **argv)
354
352
  xcl_st->rn_st = rn_st;
355
353
  xcl_st->rx_st = rx_st;
356
354
 
357
- init(rnv, xcl_st, rn_st, rnc_st, rnd_st, rnx_st, drv_st, rx_st);
355
+ init(rnv, xcl_st, rn_st, rnc_st, rnd_st, drv_st, rx_st);
358
356
 
359
357
  xcl_st->peipe = 0;
360
358
  xcl_st->verbose = 1;
@@ -378,8 +376,8 @@ int main(int argc, char **argv)
378
376
  xcl_st->nexp = atoi(*(++argv));
379
377
  goto END_OF_OPTIONS;
380
378
  case 's':
381
- rnv->drv_compact = 1;
382
- rnv->rx_compact = 1;
379
+ drv_st->drv_compact = 1;
380
+ rx_st->rx_compact = 1;
383
381
  break;
384
382
  case 'p':
385
383
  xcl_st->peipe = 1;
@@ -439,7 +437,7 @@ int main(int argc, char **argv)
439
437
  }
440
438
  if (xcl_st->verbose)
441
439
  (*er_printf)("%s\n", xcl_st->xml);
442
- validate(rnv, xcl_st, drv_st, rn_st, rnx_st, fd);
440
+ validate(rnv, xcl_st, drv_st, rn_st, fd);
443
441
  close(fd);
444
442
  clear(xcl_st);
445
443
  } while (*(++argv));
@@ -451,7 +449,7 @@ int main(int argc, char **argv)
451
449
  if (!xcl_st->rnck)
452
450
  {
453
451
  xcl_st->xml = "stdin";
454
- validate(rnv, xcl_st, drv_st, rn_st, rnx_st, 0);
452
+ validate(rnv, xcl_st, drv_st, rn_st, 0);
455
453
  clear(xcl_st);
456
454
  if (!xcl_st->ok && xcl_st->verbose)
457
455
  (*er_printf)("error: invalid input\n");
@@ -462,7 +460,6 @@ int main(int argc, char **argv)
462
460
  free(rnv);
463
461
  free(rn_st);
464
462
  free(rnc_st);
465
- free(rnx_st);
466
463
  free(drv_st);
467
464
  free(rx_st);
468
465
  free(rnd_st);
data/ext/rnv/src/xsd.c CHANGED
@@ -1,5 +1,3 @@
1
- #include "type.h"
2
-
3
1
  /* $Id: xsd.c,v 1.47 2005/01/06 21:04:06 dvd Exp $ */
4
2
 
5
3
  #include <limits.h> /*INT_MAX*/
@@ -7,6 +5,9 @@
7
5
  #include <string.h> /*strlen*/
8
6
  #include <math.h> /*HUGE_VAL*/
9
7
  #include <assert.h>
8
+
9
+ #include "type.h"
10
+
10
11
  #include "u.h"
11
12
  #include "xmlc.h"
12
13
  #include "s.h"
@@ -16,11 +17,10 @@
16
17
  #include "er.h"
17
18
  #include "xsd.h"
18
19
 
19
- #define err(msg) (*rnv->verror_handler)(rnv,erno|ERBIT_XSD,msg"\n",ap)
20
- void xsd_default_verror_handler(rnv_t *rnv, int erno,va_list ap) {
21
- (*er_printf)("XML Schema datatypes: ");
20
+ #define err(msg) (*handler)(data,erno|ERBIT_XSD,"XML Schema datatypes: "msg"\n",ap)
21
+ void xsd_default_verror_handler(void *data, int erno, int (*handler)(void *data, int erno,char *format, va_list ap), va_list ap) {
22
22
  if(erno&ERBIT_RX) {
23
- rx_default_verror_handler(rnv, erno&~ERBIT_RX,ap);
23
+ rx_default_verror_handler(data, erno&~ERBIT_RX,handler,ap);
24
24
  } else {
25
25
  switch(erno) {
26
26
  case XSD_ER_TYP: err("unknown type %s"); break;
@@ -36,24 +36,11 @@ void xsd_default_verror_handler(rnv_t *rnv, int erno,va_list ap) {
36
36
  }
37
37
 
38
38
  static void error_handler(rx_st_t *rx_st, int erno,...) {
39
- va_list ap; va_start(ap,erno); (*rx_st->rnv->xsd_verror_handler)(rx_st->rnv,erno,ap); va_end(ap);
39
+ va_list ap; va_start(ap,erno); xsd_default_verror_handler(rx_st->user_data,erno,rx_st->verror_handler,ap); va_end(ap);
40
40
  }
41
41
 
42
- static void verror_handler_rx(rnv_t *rnv, int erno,va_list ap) {xsd_default_verror_handler(rnv,erno|ERBIT_RX,ap);}
43
-
44
- static void windup(void);
45
42
  void xsd_init(rx_st_t *rx_st) {
46
- rx_st->rnv->xsd_verror_handler = &xsd_default_verror_handler;
47
43
  rx_init(rx_st);
48
- rx_st->rnv->rx_verror_handler=&verror_handler_rx;
49
- windup();
50
- }
51
-
52
- void xsd_clear(void) {
53
- windup();
54
- }
55
-
56
- static void windup(void) {
57
44
  }
58
45
 
59
46
  #define FCT_ENUMERATION 0
@@ -81,7 +68,7 @@ static char *fcttab[NFCT]={
81
68
  #define WS_REPLACE 1
82
69
  #define WS_COLLAPSE 2
83
70
 
84
- static int (*match[])(rnv_t *rnv, rx_st_t *rx_st, char *r,char *s,int n)={&rx_match, &rx_rmatch,&rx_cmatch};
71
+ static int (*match[])(rx_st_t *rx_st, char *r,char *s,int n)={&rx_match, &rx_rmatch,&rx_cmatch};
85
72
 
86
73
  #define TYP_ENTITIES 0
87
74
  #define TYP_ENTITY 1
@@ -327,7 +314,7 @@ struct facets {
327
314
  #define PAT_MONTH0 "(0[1-9]|1[0-2])"
328
315
  #define PAT_DAY0 "([0-2][0-9]|3[01])"
329
316
  #define PAT_YEAR "-?"PAT_YEAR0 PAT_ZONE"?"
330
- #define PAT_MONTH "--"PAT_MONTH0"--"PAT_ZONE"?"
317
+ #define PAT_MONTH "--"PAT_MONTH0 PAT_ZONE"?"
331
318
  #define PAT_DAY "---"PAT_DAY0 PAT_ZONE"?"
332
319
  #define PAT_YEAR_MONTH "-?"PAT_YEAR0"-"PAT_MONTH0 PAT_ZONE"?"
333
320
  #define PAT_MONTH_DAY "--"PAT_MONTH0"-"PAT_DAY0 PAT_ZONE"?"
@@ -661,7 +648,7 @@ int xsd_allows(rx_st_t *rx_st, char *typ,char *ps,char *s,int n) {
661
648
  default: assert(0);
662
649
  }
663
650
 
664
- while(fct.npat--) ok=ok&&match[fct.whiteSpace](rx_st->rnv, rx_st, fct.pattern[fct.npat],s,n);
651
+ while(fct.npat--) ok=ok&&match[fct.whiteSpace](rx_st, fct.pattern[fct.npat],s,n);
665
652
 
666
653
  if(fct.set&(1<<FCT_LENGTH)) ok=ok&&length==fct.length;
667
654
  if(fct.set&(1<<FCT_MAX_LENGTH)) ok=ok&&length<=fct.maxLength;