Changeset 399100f1271aa3320cae55afa2d8364875291971
- Timestamp:
- 04/22/08 18:51:17 (9 months ago)
- Author:
- David Balmain <dbalmain@…>
- Parents:
- f84102bad115887754ae1fafed8c072360deee9b
- Children:
- 3d5c1b18b9912541a77e63bdb908db34f068b328
- git-committer:
- David Balmain <dbalmain@gmail.com> / 2008-04-22T18:51:17Z+1000
- Message:
-
Fixed to compile ruby bindings
The Ferret bindings now call Ferret's init function to initialize everything.
This is necessary so that intern will work but it also adds some other stuff
like signal trapping and stacktraces on exit.
- Location:
- ruby
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r018a91
|
r399100
|
|
| 72 | 72 | ext/index.c |
| 73 | 73 | ext/index.h |
| | 74 | ext/intern.c |
| | 75 | ext/intern.h |
| 74 | 76 | ext/internal.h |
| 75 | 77 | ext/libstemmer.h |
-
|
r870851
|
r399100
|
|
| 6 | 6 | elsif ENV['FERRET_DEV'] |
| 7 | 7 | require 'mkmf' |
| 8 | | $CFLAGS += " -Wall -fno-stack-protector -fno-common -D_FILE_OFFSET_BITS=64" |
| | 8 | $CFLAGS += " -g -Wall -fno-stack-protector -fno-common -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500" |
| 9 | 9 | create_makefile("ferret_ext") |
| 10 | 10 | else |
| 11 | 11 | require 'mkmf' |
| 12 | | $CFLAGS += " -Wall -D_FILE_OFFSET_BITS=64" |
| | 12 | $CFLAGS += " -Wall -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500" |
| 13 | 13 | create_makefile("ferret_ext") |
| 14 | 14 | end |
-
|
r018a91
|
r399100
|
|
| 5 | 5 | #include "hashset.h" |
| 6 | 6 | #include "threading.h" |
| | 7 | #include "intern.h" |
| 7 | 8 | #include "internal.h" |
| 8 | 9 | |
| … |
… |
|
| 169 | 170 | |
| 170 | 171 | char * |
| 171 | | nstrdup(VALUE rstr) |
| | 172 | rstrdup(VALUE rstr) |
| 172 | 173 | { |
| 173 | 174 | char *old = rs2s(rstr); |
| … |
… |
|
| 176 | 177 | memcpy(new, old, len + 1); |
| 177 | 178 | return new; |
| | 179 | } |
| | 180 | |
| | 181 | const char * |
| | 182 | rintern(VALUE rstr) |
| | 183 | { |
| | 184 | char *old = rs2s(rstr); |
| | 185 | return frt_intern(old); |
| 178 | 186 | } |
| 179 | 187 | |
| … |
… |
|
| 338 | 346 | VALUE cStateError; |
| 339 | 347 | VALUE cFileNotFoundError; |
| | 348 | |
| | 349 | const char *const progname[] = {"ruby"}; |
| | 350 | |
| | 351 | frt_init(1, progname); |
| 340 | 352 | |
| 341 | 353 | /* initialize object map */ |
-
|
rf7adc4
|
r399100
|
|
| 69 | 69 | extern char *json_concat_string(char *s, char *field); |
| 70 | 70 | extern char *rs2s(VALUE rstr); |
| 71 | | extern char *nstrdup(VALUE rstr); |
| | 71 | extern char *rstrdup(VALUE rstr); |
| | 72 | extern const char *rintern(VALUE rstr); |
| 72 | 73 | #define Frt_Make_Struct(klass)\ |
| 73 | 74 | rb_data_object_alloc(klass,NULL,(RUBY_DATA_FUNC)NULL,(RUBY_DATA_FUNC)NULL) |
-
|
rb0a45e
|
r399100
|
|
| 1149 | 1149 | |
| 1150 | 1150 | static TokenStream * |
| 1151 | | cwa_get_ts(Analyzer *a, char *field, char *text) |
| | 1151 | cwa_get_ts(Analyzer *a, const char *field, char *text) |
| 1152 | 1152 | { |
| 1153 | 1153 | VALUE rts = rb_funcall(CWA(a)->ranalyzer, id_token_stream, 2, |
-
|
r018a91
|
r399100
|
|
| 1461 | 1461 | for (i = 0; i < RARRAY(value)->len; i++) { |
| 1462 | 1462 | val = rb_obj_as_string(RARRAY(value)->ptr[i]); |
| 1463 | | df_add_data_len(df, nstrdup(val), RSTRING(val)->len); |
| | 1463 | df_add_data_len(df, rstrdup(val), RSTRING(val)->len); |
| 1464 | 1464 | } |
| 1465 | 1465 | } |
| … |
… |
|
| 1471 | 1471 | val = rb_obj_as_string(value); |
| 1472 | 1472 | df->destroy_data = true; |
| 1473 | | df_add_data_len(df, nstrdup(val), RSTRING(val)->len); |
| | 1473 | df_add_data_len(df, rstrdup(val), RSTRING(val)->len); |
| 1474 | 1474 | break; |
| 1475 | 1475 | } |
| … |
… |
|
| 1501 | 1501 | for (i = 0; i < RARRAY(rdoc)->len; i++) { |
| 1502 | 1502 | val = rb_obj_as_string(RARRAY(rdoc)->ptr[i]); |
| 1503 | | df_add_data_len(df, nstrdup(val), RSTRING(val)->len); |
| | 1503 | df_add_data_len(df, rstrdup(val), RSTRING(val)->len); |
| 1504 | 1504 | } |
| 1505 | 1505 | doc_add_field(doc, df); |
| … |
… |
|
| 1517 | 1517 | default: |
| 1518 | 1518 | val = rb_obj_as_string(rdoc); |
| 1519 | | df = df_add_data_len(df_new("content"), nstrdup(val), |
| | 1519 | df = df_add_data_len(df_new("content"), rstrdup(val), |
| 1520 | 1520 | RSTRING(val)->len); |
| 1521 | 1521 | df->destroy_data = true; |
-
|
rb0a45e
|
r399100
|
|
| | 1 | #include "intern.h" |
| 1 | 2 | #include "ferret.h" |
| 2 | 3 | #include "search.h" |
| … |
… |
|
| 52 | 53 | if (rfields == Qnil) return NULL; |
| 53 | 54 | |
| 54 | | fields = hs_new_str(&free); |
| | 55 | fields = hs_new_str(NULL); |
| 55 | 56 | if (TYPE(rfields) == T_ARRAY) { |
| 56 | 57 | int i; |
| 57 | 58 | for (i = 0; i < RARRAY(rfields)->len; i++) { |
| 58 | 59 | rval = rb_obj_as_string(RARRAY(rfields)->ptr[i]); |
| 59 | | hs_add(fields, nstrdup(rval)); |
| | 60 | hs_add(fields, (char *)rintern(rval)); |
| 60 | 61 | } |
| 61 | 62 | } else { |
| … |
… |
|
| 65 | 66 | fields = NULL; |
| 66 | 67 | } else { |
| 67 | | s = str = nstrdup(rval); |
| | 68 | s = str = rstrdup(rval); |
| 68 | 69 | while ((p = strchr(s, '|')) != '\0') { |
| 69 | 70 | *p = '\0'; |
| 70 | | hs_add(fields, estrdup(s)); |
| | 71 | hs_add(fields, (char *)intern(s)); |
| 71 | 72 | s = p + 1; |
| 72 | 73 | } |
| 73 | | hs_add(fields, estrdup(s)); |
| | 74 | hs_add(fields, (char *)intern(s)); |
| 74 | 75 | free(str); |
| 75 | 76 | } |
| … |
… |
|
| 176 | 177 | } |
| 177 | 178 | if (all_fields == NULL) { |
| 178 | | all_fields = hs_new_str(&free); |
| | 179 | all_fields = hs_new_str(NULL); |
| 179 | 180 | } |
| 180 | 181 | |
| … |
… |
|
| 289 | 290 | } |
| 290 | 291 | if (fields == NULL) { |
| 291 | | fields = hs_new_str(&free); |
| | 292 | fields = hs_new_str(NULL); |
| 292 | 293 | } |
| 293 | 294 | hs_destroy(qp->all_fields); |