ferret 0.11.8.6 → 0.11.8.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -104,6 +104,8 @@ extern char *frt_estrcat(char *str, char *str_cat);
104
104
  extern void frt_weprintf(const char *fmt, ...);
105
105
  extern char *frt_epstrdup(const char *fmt, int len, ...);
106
106
 
107
+ extern char *frt_strapp(char *dst, const char *src);
108
+
107
109
  extern const char *FRT_EMPTY_STRING;
108
110
 
109
111
  extern int frt_scmp(const void *p1, const void *p2);
@@ -105,7 +105,10 @@ static u64 str36_to_u64(char *p)
105
105
  * @param ext extension of the filename (including .)
106
106
  * @param gen generation
107
107
  */
108
- char *fn_for_generation(char *buf, char *base, char *ext, i64 gen)
108
+ char *fn_for_generation(char *buf,
109
+ const char *base,
110
+ const char *ext,
111
+ i64 gen)
109
112
  {
110
113
  if (-1 == gen) {
111
114
  return NULL;
@@ -872,7 +875,7 @@ static void sis_find_segments_file(Store *store, FindSegmentsFile *fsf,
872
875
  XENDTRY
873
876
 
874
877
  if (NULL != gen_is) {
875
- i64 gen0 = -1, gen1 = -1;
878
+ volatile i64 gen0 = -1, gen1 = -1;
876
879
 
877
880
  TRY
878
881
  gen0 = is_read_u64(gen_is);
@@ -1080,7 +1083,7 @@ static void sis_read_i(Store *store, FindSegmentsFile *fsf)
1080
1083
  {
1081
1084
  int seg_cnt;
1082
1085
  int i;
1083
- bool success = false;
1086
+ volatile bool success = false;
1084
1087
  char seg_file_name[SEGMENT_NAME_MAX_LENGTH];
1085
1088
  InStream *volatile is = NULL;
1086
1089
  SegmentInfos *volatile sis = ALLOC_AND_ZERO(SegmentInfos);
@@ -1166,7 +1169,6 @@ void sis_write(SegmentInfos *sis, Store *store, Deleter *deleter)
1166
1169
  static void sis_read_ver_i(Store *store, FindSegmentsFile *fsf)
1167
1170
  {
1168
1171
  InStream *is;
1169
- u32 format = 0;
1170
1172
  u64 version = 0;
1171
1173
  char seg_file_name[SEGMENT_NAME_MAX_LENGTH];
1172
1174
 
@@ -1174,7 +1176,7 @@ static void sis_read_ver_i(Store *store, FindSegmentsFile *fsf)
1174
1176
  is = store->open_input(store, seg_file_name);
1175
1177
 
1176
1178
  TRY
1177
- format = is_read_u32(is);
1179
+ is_read_u32(is); // format
1178
1180
  version = is_read_u64(is);
1179
1181
  XFINALLY
1180
1182
  is_close(is);
@@ -1334,6 +1336,11 @@ static void zraise(int ret)
1334
1336
  }
1335
1337
  }
1336
1338
 
1339
+ void bz_internal_error(int errcode)
1340
+ {
1341
+ zraise(errcode);
1342
+ }
1343
+
1337
1344
  static char *is_read_zipped_bytes(InStream *is, int zip_len, int *len)
1338
1345
  {
1339
1346
  int buf_out_idx = 0, ret, read_len;
@@ -4362,7 +4369,7 @@ static void bv_write(BitVector *bv, Store *store, char *name)
4362
4369
  static BitVector *bv_read(Store *store, char *name)
4363
4370
  {
4364
4371
  int i;
4365
- bool success = false;
4372
+ volatile bool success = false;
4366
4373
  InStream *volatile is = store->open_input(store, name);
4367
4374
  BitVector *volatile bv = ALLOC_AND_ZERO(BitVector);
4368
4375
  bv->size = (int)is_read_vint(is);
@@ -211,7 +211,10 @@ typedef struct FrtSegmentInfos
211
211
  int capa;
212
212
  } FrtSegmentInfos;
213
213
 
214
- extern char *frt_fn_for_generation(char *buf, char *base, char *ext, frt_i64 gen);
214
+ extern char *frt_fn_for_generation(char *buf,
215
+ const char *base,
216
+ const char *ext,
217
+ frt_i64 gen);
215
218
 
216
219
  extern FrtSegmentInfos *frt_sis_new(FrtFieldInfos *fis);
217
220
  extern FrtSegmentInfo *frt_sis_new_segment(FrtSegmentInfos *sis, int dcnt, FrtStore *store);
@@ -926,6 +926,7 @@
926
926
  #define store_to_s frt_store_to_s
927
927
  #define stpe_new frt_stpe_new
928
928
  #define str_hash frt_str_hash
929
+ #define strapp frt_strapp
929
930
  #define strfmt frt_strfmt
930
931
  #define strsort frt_strsort
931
932
  #define sym_hash frt_sym_hash
@@ -177,7 +177,7 @@ static DeterministicState *mulmap_process_state(MultiMapper *self, BitVector *bv
177
177
  }
178
178
  self->dstates[self->d_size++] = current_state;
179
179
  start_ds = self->dstates[0];
180
- for (i = 0; i <= 256; i++) {
180
+ for (i = 0; i < 256; i++) {
181
181
  current_state->next[i] = start_ds;
182
182
  }
183
183
  while ((bit = bv_scan_next(bv)) >= 0) {
@@ -208,7 +208,7 @@ static Query *fuzq_rewrite(Query *self, IndexReader *ir)
208
208
  fuzq->scale_factor = (float)(1.0 / (1.0 - fuzq->min_sim));
209
209
  fuzq->text = term + pre_len;
210
210
  fuzq->text_len = (int)strlen(fuzq->text);
211
- fuzq->da = REALLOC_N(fuzq->da, int, fuzq->text_len * 2 + 2);
211
+ REALLOC_N(fuzq->da, int, fuzq->text_len * 2 + 2);
212
212
  fuzq_initialize_max_distances(fuzq);
213
213
 
214
214
  do {
@@ -261,6 +261,7 @@ Query *fuzq_new_conf(Symbol field, const char *term,
261
261
  FzQ(self)->term = estrdup(term);
262
262
  FzQ(self)->pre_len = pre_len ? pre_len : DEF_PRE_LEN;
263
263
  FzQ(self)->min_sim = min_sim ? min_sim : DEF_MIN_SIM;
264
+ FzQ(self)->da = NULL;
264
265
  MTQMaxTerms(self) = max_terms ? max_terms : DEF_MAX_TERMS;
265
266
 
266
267
  self->type = FUZZY_QUERY;
@@ -1430,7 +1430,7 @@ static Explanation *spanw_explain(Weight *self, IndexReader *ir, int target)
1430
1430
  doc_freqs[df_i] = '\0';
1431
1431
  }
1432
1432
  else {
1433
- doc_freqs = "";
1433
+ doc_freqs = estrdup("");
1434
1434
  }
1435
1435
 
1436
1436
  expl = expl_new(0.0, "weight(%s in %d), product of:", query_str, target);
@@ -1186,7 +1186,7 @@ static VALUE
1186
1186
  frb_stem_filter_init(int argc, VALUE *argv, VALUE self)
1187
1187
  {
1188
1188
  VALUE rsub_ts, ralgorithm, rcharenc;
1189
- char *algorithm = "english";
1189
+ const char *algorithm = "english";
1190
1190
  char *charenc = NULL;
1191
1191
  TokenStream *ts;
1192
1192
  rb_scan_args(argc, argv, "12", &rsub_ts, &ralgorithm, &rcharenc);
@@ -212,7 +212,7 @@ static VALUE
212
212
  frb_fi_name(VALUE self)
213
213
  {
214
214
  FieldInfo *fi = (FieldInfo *)DATA_PTR(self);
215
- return ID2SYM(fi->name);
215
+ return FSYM2SYM(fi->name);
216
216
  }
217
217
 
218
218
  /*
@@ -1094,7 +1094,7 @@ frb_tde_to_json(int argc, VALUE *argv, VALUE self)
1094
1094
  VALUE rjson;
1095
1095
  char *json, *jp;
1096
1096
  int capa = 65536;
1097
- char *format;
1097
+ const char *format;
1098
1098
  char close = (argc > 0) ? ']' : '}';
1099
1099
  bool do_positions = tde->next_position != NULL;
1100
1100
  jp = json = ALLOC_N(char, capa);
@@ -154,7 +154,6 @@ frb_qp_init(int argc, VALUE *argv, VALUE self)
154
154
  VALUE roptions = Qnil;
155
155
  VALUE rval;
156
156
  Analyzer *analyzer = NULL;
157
- bool has_options = false;
158
157
 
159
158
  HashSet *all_fields = NULL;
160
159
  HashSet *tkz_fields = NULL;
@@ -163,7 +162,6 @@ frb_qp_init(int argc, VALUE *argv, VALUE self)
163
162
 
164
163
  if (rb_scan_args(argc, argv, "01", &roptions) > 0) {
165
164
  if (TYPE(roptions) == T_HASH) {
166
- has_options = true;
167
165
  if (Qnil != (rval = rb_hash_aref(roptions, sym_default_field))) {
168
166
  def_fields = frb_get_fields(rval);
169
167
  }
@@ -253,7 +251,7 @@ frb_qp_init(int argc, VALUE *argv, VALUE self)
253
251
  static VALUE
254
252
  frb_qp_parse(VALUE self, VALUE rstr)
255
253
  {
256
- const char *msg = NULL;
254
+ const char *volatile msg = NULL;
257
255
  volatile VALUE rq;
258
256
  GET_QP;
259
257
  rstr = rb_obj_as_string(rstr);
@@ -197,7 +197,7 @@ frb_td_to_s(int argc, VALUE *argv, VALUE self)
197
197
  VALUE rhits = rb_funcall(self, id_hits, 0);
198
198
  Searcher *sea = (Searcher *)DATA_PTR(rb_funcall(self, id_searcher, 0));
199
199
  const int len = RARRAY_LEN(rhits);
200
- int capa = len * 64 + 100;
200
+ unsigned int capa = len * 64 + 100;
201
201
  int p = 0;
202
202
  char *str = ALLOC_N(char, len * 64 + 100);
203
203
  Symbol field = fsym_id;
@@ -215,7 +215,7 @@ frb_td_to_s(int argc, VALUE *argv, VALUE self)
215
215
  for (i = 0; i < len; i++) {
216
216
  VALUE rhit = RARRAY_PTR(rhits)[i];
217
217
  int doc_id = FIX2INT(rb_funcall(rhit, id_doc, 0));
218
- char *value = "";
218
+ const char *value = "";
219
219
  size_t value_len = 0;
220
220
  LazyDoc *lzd = sea->get_lazy_doc(sea, doc_id);
221
221
  LazyDocField *lzdf = lazy_doc_get(lzd, field);
@@ -923,7 +923,8 @@ static VALUE
923
923
  frb_bc_to_s(VALUE self)
924
924
  {
925
925
  VALUE rstr;
926
- char *qstr, *ostr = "", *str;
926
+ char *qstr, *str;
927
+ const char *ostr = "";
927
928
  int len;
928
929
  GET_BC();
929
930
  qstr = bc->query->to_s(bc->query, NULL);
@@ -2984,9 +2985,9 @@ frb_sea_highlight(int argc, VALUE *argv, VALUE self)
2984
2985
  Query *query;
2985
2986
  int excerpt_length = 150;
2986
2987
  int num_excerpts = 2;
2987
- char *pre_tag = "<b>";
2988
- char *post_tag = "</b>";
2989
- char *ellipsis = "...";
2988
+ const char *pre_tag = "<b>";
2989
+ const char *post_tag = "</b>";
2990
+ const char *ellipsis = "...";
2990
2991
  char **excerpts;
2991
2992
 
2992
2993
  rb_scan_args(argc, argv, "31", &rquery, &rdoc_id, &rfield, &roptions);
@@ -75,6 +75,7 @@ frb_lock_obtain(int argc, VALUE *argv, VALUE self)
75
75
  timeout = FIX2INT(rtimeout);
76
76
  }
77
77
  /* TODO: use the lock timeout */
78
+ (void)timeout;
78
79
  if (!lock->obtain(lock)) {
79
80
  rb_raise(cLockError, "could not obtain lock: #%s", lock->name);
80
81
  }
@@ -105,6 +106,7 @@ frb_lock_while_locked(int argc, VALUE *argv, VALUE self)
105
106
  if (rb_scan_args(argc, argv, "01", &rtimeout) > 0) {
106
107
  timeout = FIX2INT(rtimeout);
107
108
  }
109
+ (void)timeout;
108
110
  if (!lock->obtain(lock)) {
109
111
  rb_raise(cLockError, "could not obtain lock: #%s", lock->name);
110
112
  }
@@ -1,3 +1,4 @@
1
+
1
2
  #line 1 "src/scanner.rl"
2
3
  /* scanner.rl -*-C-*- */
3
4
  #include <ctype.h>
@@ -15,11 +16,12 @@
15
16
  goto ret; \
16
17
  } while(0)
17
18
 
19
+
18
20
  #line 28 "src/scanner.rl"
19
21
 
20
22
 
21
23
 
22
- #line 23 "src/scanner.c"
24
+ #line 25 "src/scanner.c"
23
25
  static const char _StdTok_actions[] = {
24
26
  0, 1, 0, 1, 1, 1, 2, 1,
25
27
  3, 1, 4, 1, 5, 1, 17, 1,
@@ -529,6 +531,7 @@ static const int StdTok_error = 0;
529
531
  static const int StdTok_en_frt_tokenizer = 35;
530
532
  static const int StdTok_en_main = 1;
531
533
 
534
+
532
535
  #line 31 "src/scanner.rl"
533
536
 
534
537
  void frt_std_scan(const char *in,
@@ -542,7 +545,7 @@ void frt_std_scan(const char *in,
542
545
  char *ts = 0, *te = 0;
543
546
 
544
547
 
545
- #line 546 "src/scanner.c"
548
+ #line 549 "src/scanner.c"
546
549
  {
547
550
  cs = StdTok_start;
548
551
  top = 0;
@@ -550,6 +553,7 @@ void frt_std_scan(const char *in,
550
553
  te = 0;
551
554
  act = 0;
552
555
  }
556
+
553
557
  #line 43 "src/scanner.rl"
554
558
 
555
559
  char *p = (char *)in, *pe = 0, *eof = pe;
@@ -562,7 +566,7 @@ void frt_std_scan(const char *in,
562
566
  *token_size = 0;
563
567
 
564
568
 
565
- #line 566 "src/scanner.c"
569
+ #line 570 "src/scanner.c"
566
570
  {
567
571
  int _klen;
568
572
  unsigned int _trans;
@@ -580,10 +584,10 @@ _resume:
580
584
  while ( _nacts-- > 0 ) {
581
585
  switch ( *_acts++ ) {
582
586
  case 4:
583
- #line 1 "src/scanner.rl"
587
+ #line 1 "NONE"
584
588
  {ts = p;}
585
589
  break;
586
- #line 587 "src/scanner.c"
590
+ #line 591 "src/scanner.c"
587
591
  }
588
592
  }
589
593
 
@@ -605,7 +609,7 @@ _resume:
605
609
  else if ( (*p) > *_mid )
606
610
  _lower = _mid + 1;
607
611
  else {
608
- _trans += (_mid - _keys);
612
+ _trans += (unsigned int)(_mid - _keys);
609
613
  goto _match;
610
614
  }
611
615
  }
@@ -628,7 +632,7 @@ _resume:
628
632
  else if ( (*p) > _mid[1] )
629
633
  _lower = _mid + 2;
630
634
  else {
631
- _trans += ((_mid - _keys)>>1);
635
+ _trans += (unsigned int)((_mid - _keys)>>1);
632
636
  goto _match;
633
637
  }
634
638
  }
@@ -650,11 +654,11 @@ _eof_trans:
650
654
  switch ( *_acts++ )
651
655
  {
652
656
  case 0:
653
- #line 14 "src/scanner.rl"
657
+ #line 14 "src/url.rl"
654
658
  { skip = p - ts; }
655
659
  break;
656
660
  case 1:
657
- #line 26 "src/scanner.rl"
661
+ #line 26 "src/url.rl"
658
662
  { trunc = 1; }
659
663
  break;
660
664
  case 2:
@@ -662,135 +666,135 @@ _eof_trans:
662
666
  { p--; {stack[top++] = cs; cs = 35; goto _again;} }
663
667
  break;
664
668
  case 5:
665
- #line 1 "src/scanner.rl"
669
+ #line 1 "NONE"
666
670
  {te = p+1;}
667
671
  break;
668
672
  case 6:
669
- #line 15 "src/scanner.rl"
673
+ #line 15 "src/scanner.in"
670
674
  {act = 2;}
671
675
  break;
672
676
  case 7:
673
- #line 16 "src/scanner.rl"
677
+ #line 16 "src/scanner.in"
674
678
  {act = 3;}
675
679
  break;
676
680
  case 8:
677
- #line 17 "src/scanner.rl"
681
+ #line 17 "src/scanner.in"
678
682
  {act = 4;}
679
683
  break;
680
684
  case 9:
681
- #line 20 "src/scanner.rl"
685
+ #line 20 "src/scanner.in"
682
686
  {act = 5;}
683
687
  break;
684
688
  case 10:
685
- #line 23 "src/scanner.rl"
689
+ #line 23 "src/scanner.in"
686
690
  {act = 6;}
687
691
  break;
688
692
  case 11:
689
- #line 26 "src/scanner.rl"
693
+ #line 26 "src/scanner.in"
690
694
  {act = 7;}
691
695
  break;
692
696
  case 12:
693
- #line 29 "src/scanner.rl"
697
+ #line 29 "src/scanner.in"
694
698
  {act = 8;}
695
699
  break;
696
700
  case 13:
697
- #line 32 "src/scanner.rl"
701
+ #line 32 "src/scanner.in"
698
702
  {act = 9;}
699
703
  break;
700
704
  case 14:
701
- #line 35 "src/scanner.rl"
705
+ #line 35 "src/scanner.in"
702
706
  {act = 10;}
703
707
  break;
704
708
  case 15:
705
- #line 36 "src/scanner.rl"
709
+ #line 36 "src/scanner.in"
706
710
  {act = 11;}
707
711
  break;
708
712
  case 16:
709
- #line 40 "src/scanner.rl"
713
+ #line 40 "src/scanner.in"
710
714
  {act = 13;}
711
715
  break;
712
716
  case 17:
713
- #line 12 "src/scanner.rl"
717
+ #line 12 "src/scanner.in"
714
718
  {te = p+1;{ RET; }}
715
719
  break;
716
720
  case 18:
717
- #line 29 "src/scanner.rl"
721
+ #line 29 "src/scanner.in"
718
722
  {te = p+1;{ RET; }}
719
723
  break;
720
724
  case 19:
721
- #line 39 "src/scanner.rl"
725
+ #line 39 "src/scanner.in"
722
726
  {te = p+1;{ return; }}
723
727
  break;
724
728
  case 20:
725
- #line 40 "src/scanner.rl"
729
+ #line 40 "src/scanner.in"
726
730
  {te = p+1;}
727
731
  break;
728
732
  case 21:
729
- #line 12 "src/scanner.rl"
733
+ #line 12 "src/scanner.in"
730
734
  {te = p;p--;{ RET; }}
731
735
  break;
732
736
  case 22:
733
- #line 15 "src/scanner.rl"
737
+ #line 15 "src/scanner.in"
734
738
  {te = p;p--;{ RET; }}
735
739
  break;
736
740
  case 23:
737
- #line 16 "src/scanner.rl"
741
+ #line 16 "src/scanner.in"
738
742
  {te = p;p--;{ trunc = 1; RET; }}
739
743
  break;
740
744
  case 24:
741
- #line 23 "src/scanner.rl"
745
+ #line 23 "src/scanner.in"
742
746
  {te = p;p--;{ RET; }}
743
747
  break;
744
748
  case 25:
745
- #line 26 "src/scanner.rl"
749
+ #line 26 "src/scanner.in"
746
750
  {te = p;p--;{ RET; }}
747
751
  break;
748
752
  case 26:
749
- #line 29 "src/scanner.rl"
753
+ #line 29 "src/scanner.in"
750
754
  {te = p;p--;{ RET; }}
751
755
  break;
752
756
  case 27:
753
- #line 32 "src/scanner.rl"
757
+ #line 32 "src/scanner.in"
754
758
  {te = p;p--;{ STRIP('.'); }}
755
759
  break;
756
760
  case 28:
757
- #line 35 "src/scanner.rl"
761
+ #line 35 "src/scanner.in"
758
762
  {te = p;p--;{ RET; }}
759
763
  break;
760
764
  case 29:
761
- #line 36 "src/scanner.rl"
765
+ #line 36 "src/scanner.in"
762
766
  {te = p;p--;{ RET; }}
763
767
  break;
764
768
  case 30:
765
- #line 40 "src/scanner.rl"
769
+ #line 40 "src/scanner.in"
766
770
  {te = p;p--;}
767
771
  break;
768
772
  case 31:
769
- #line 12 "src/scanner.rl"
773
+ #line 12 "src/scanner.in"
770
774
  {{p = ((te))-1;}{ RET; }}
771
775
  break;
772
776
  case 32:
773
- #line 15 "src/scanner.rl"
777
+ #line 15 "src/scanner.in"
774
778
  {{p = ((te))-1;}{ RET; }}
775
779
  break;
776
780
  case 33:
777
- #line 23 "src/scanner.rl"
781
+ #line 23 "src/scanner.in"
778
782
  {{p = ((te))-1;}{ RET; }}
779
783
  break;
780
784
  case 34:
781
- #line 29 "src/scanner.rl"
785
+ #line 29 "src/scanner.in"
782
786
  {{p = ((te))-1;}{ RET; }}
783
787
  break;
784
788
  case 35:
785
- #line 35 "src/scanner.rl"
789
+ #line 35 "src/scanner.in"
786
790
  {{p = ((te))-1;}{ RET; }}
787
791
  break;
788
792
  case 36:
789
- #line 40 "src/scanner.rl"
793
+ #line 40 "src/scanner.in"
790
794
  {{p = ((te))-1;}}
791
795
  break;
792
796
  case 37:
793
- #line 1 "src/scanner.rl"
797
+ #line 1 "NONE"
794
798
  { switch( act ) {
795
799
  case 2:
796
800
  {{p = ((te))-1;} RET; }
@@ -828,7 +832,7 @@ _eof_trans:
828
832
  }
829
833
  }
830
834
  break;
831
- #line 832 "src/scanner.c"
835
+ #line 836 "src/scanner.c"
832
836
  }
833
837
  }
834
838
 
@@ -838,10 +842,10 @@ _again:
838
842
  while ( _nacts-- > 0 ) {
839
843
  switch ( *_acts++ ) {
840
844
  case 3:
841
- #line 1 "src/scanner.rl"
845
+ #line 1 "NONE"
842
846
  {ts = 0;}
843
847
  break;
844
- #line 845 "src/scanner.c"
848
+ #line 849 "src/scanner.c"
845
849
  }
846
850
  }
847
851
 
@@ -860,6 +864,7 @@ _again:
860
864
 
861
865
  _out: {}
862
866
  }
867
+
863
868
  #line 54 "src/scanner.rl"
864
869
 
865
870
  if ( cs == StdTok_error )