ferret 0.11.8.6 → 0.11.8.7

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.
@@ -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 )