Changeset 399100f1271aa3320cae55afa2d8364875291971

Show
Ignore:
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:
7 modified

Legend:

Unmodified
Added
Removed
  • ruby/.gitignore

    r018a91 r399100  
    7272ext/index.c 
    7373ext/index.h 
     74ext/intern.c 
     75ext/intern.h 
    7476ext/internal.h 
    7577ext/libstemmer.h 
  • ruby/ext/extconf.rb

    r870851 r399100  
    66elsif ENV['FERRET_DEV'] 
    77  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" 
    99  create_makefile("ferret_ext") 
    1010else 
    1111  require 'mkmf' 
    12   $CFLAGS += " -Wall -D_FILE_OFFSET_BITS=64" 
     12  $CFLAGS += " -Wall -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500" 
    1313  create_makefile("ferret_ext") 
    1414end 
  • ruby/ext/ferret.c

    r018a91 r399100  
    55#include "hashset.h" 
    66#include "threading.h" 
     7#include "intern.h" 
    78#include "internal.h" 
    89 
     
    169170 
    170171char * 
    171 nstrdup(VALUE rstr) 
     172rstrdup(VALUE rstr) 
    172173{ 
    173174    char *old = rs2s(rstr); 
     
    176177    memcpy(new, old, len + 1); 
    177178    return new; 
     179} 
     180 
     181const char * 
     182rintern(VALUE rstr) 
     183{ 
     184    char *old = rs2s(rstr); 
     185    return frt_intern(old); 
    178186} 
    179187 
     
    338346    VALUE cStateError; 
    339347    VALUE cFileNotFoundError; 
     348 
     349    const char *const progname[] = {"ruby"}; 
     350 
     351    frt_init(1, progname); 
    340352 
    341353    /* initialize object map */ 
  • ruby/ext/ferret.h

    rf7adc4 r399100  
    6969extern char *json_concat_string(char *s, char *field); 
    7070extern char *rs2s(VALUE rstr); 
    71 extern char *nstrdup(VALUE rstr); 
     71extern char *rstrdup(VALUE rstr); 
     72extern const char *rintern(VALUE rstr); 
    7273#define Frt_Make_Struct(klass)\ 
    7374  rb_data_object_alloc(klass,NULL,(RUBY_DATA_FUNC)NULL,(RUBY_DATA_FUNC)NULL) 
  • ruby/ext/r_analysis.c

    rb0a45e r399100  
    11491149 
    11501150static TokenStream * 
    1151 cwa_get_ts(Analyzer *a, char *field, char *text) 
     1151cwa_get_ts(Analyzer *a, const char *field, char *text) 
    11521152{ 
    11531153    VALUE rts = rb_funcall(CWA(a)->ranalyzer, id_token_stream, 2, 
  • ruby/ext/r_index.c

    r018a91 r399100  
    14611461                    for (i = 0; i < RARRAY(value)->len; i++) { 
    14621462                        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); 
    14641464                    } 
    14651465                } 
     
    14711471                val = rb_obj_as_string(value); 
    14721472                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); 
    14741474                break; 
    14751475        } 
     
    15011501                for (i = 0; i < RARRAY(rdoc)->len; i++) { 
    15021502                    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); 
    15041504                } 
    15051505                doc_add_field(doc, df); 
     
    15171517        default: 
    15181518            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), 
    15201520                                 RSTRING(val)->len); 
    15211521            df->destroy_data = true; 
  • ruby/ext/r_qparser.c

    rb0a45e r399100  
     1#include "intern.h" 
    12#include "ferret.h" 
    23#include "search.h" 
     
    5253    if (rfields == Qnil) return NULL; 
    5354 
    54     fields = hs_new_str(&free); 
     55    fields = hs_new_str(NULL); 
    5556    if (TYPE(rfields) == T_ARRAY) { 
    5657        int i; 
    5758        for (i = 0; i < RARRAY(rfields)->len; i++) { 
    5859            rval = rb_obj_as_string(RARRAY(rfields)->ptr[i]); 
    59             hs_add(fields, nstrdup(rval)); 
     60            hs_add(fields, (char *)rintern(rval)); 
    6061        } 
    6162    } else { 
     
    6566            fields = NULL; 
    6667        } else { 
    67             s = str = nstrdup(rval); 
     68            s = str = rstrdup(rval); 
    6869            while ((p = strchr(s, '|')) != '\0') { 
    6970                *p = '\0'; 
    70                 hs_add(fields, estrdup(s)); 
     71                hs_add(fields, (char *)intern(s)); 
    7172                s = p + 1; 
    7273            } 
    73             hs_add(fields, estrdup(s)); 
     74            hs_add(fields, (char *)intern(s)); 
    7475            free(str); 
    7576        } 
     
    176177    } 
    177178    if (all_fields == NULL) { 
    178         all_fields = hs_new_str(&free); 
     179        all_fields = hs_new_str(NULL); 
    179180    } 
    180181 
     
    289290    } 
    290291    if (fields == NULL) { 
    291         fields = hs_new_str(&free); 
     292        fields = hs_new_str(NULL); 
    292293    } 
    293294    hs_destroy(qp->all_fields);