2012/6/24 Tomi Ollila <tomi.oll...@iki.fi>: > Some C compilers are stricter when it comes to (tentative) definition > of a variable -- in those compilers introducing variable without 'extern' > keyword always allocates new 'storage' to the variable and linking all > these modules fails due to duplicate symbols. > > This is reimplementation of Charlie Allom's patch: > id:"1336481467-66356-1-git-send-email-char...@mediasp.com", > written originally by Ali Polatel. This version has > more accurate commit message. > --- > bindings/ruby/defs.h | 46 +++++++++++++++++++++++----------------------- > bindings/ruby/init.c | 26 ++++++++++++++++++++++++++ > 2 files changed, 49 insertions(+), 23 deletions(-) > > diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h > index 3f9512b..fe81b3f 100644 > --- a/bindings/ruby/defs.h > +++ b/bindings/ruby/defs.h > @@ -24,31 +24,31 @@ > #include <notmuch.h> > #include <ruby.h> > > -VALUE notmuch_rb_cDatabase; > -VALUE notmuch_rb_cDirectory; > -VALUE notmuch_rb_cFileNames; > -VALUE notmuch_rb_cQuery; > -VALUE notmuch_rb_cThreads; > -VALUE notmuch_rb_cThread; > -VALUE notmuch_rb_cMessages; > -VALUE notmuch_rb_cMessage; > -VALUE notmuch_rb_cTags; > - > -VALUE notmuch_rb_eBaseError; > -VALUE notmuch_rb_eDatabaseError; > -VALUE notmuch_rb_eMemoryError; > -VALUE notmuch_rb_eReadOnlyError; > -VALUE notmuch_rb_eXapianError; > -VALUE notmuch_rb_eFileError; > -VALUE notmuch_rb_eFileNotEmailError; > -VALUE notmuch_rb_eNullPointerError; > -VALUE notmuch_rb_eTagTooLongError; > -VALUE notmuch_rb_eUnbalancedFreezeThawError; > -VALUE notmuch_rb_eUnbalancedAtomicError; > - > -ID ID_call; > -ID ID_db_create; > -ID ID_db_mode; > +extern VALUE notmuch_rb_cDatabase; > +extern VALUE notmuch_rb_cDirectory; > +extern VALUE notmuch_rb_cFileNames; > +extern VALUE notmuch_rb_cQuery; > +extern VALUE notmuch_rb_cThreads; > +extern VALUE notmuch_rb_cThread; > +extern VALUE notmuch_rb_cMessages; > +extern VALUE notmuch_rb_cMessage; > +extern VALUE notmuch_rb_cTags; > + > +extern VALUE notmuch_rb_eBaseError; > +extern VALUE notmuch_rb_eDatabaseError; > +extern VALUE notmuch_rb_eMemoryError; > +extern VALUE notmuch_rb_eReadOnlyError; > +extern VALUE notmuch_rb_eXapianError; > +extern VALUE notmuch_rb_eFileError; > +extern VALUE notmuch_rb_eFileNotEmailError; > +extern VALUE notmuch_rb_eNullPointerError; > +extern VALUE notmuch_rb_eTagTooLongError; > +extern VALUE notmuch_rb_eUnbalancedFreezeThawError; > +extern VALUE notmuch_rb_eUnbalancedAtomicError; > + > +extern ID ID_call; > +extern ID ID_db_create; > +extern ID ID_db_mode; > > /* RSTRING_PTR() is new in ruby-1.9 */ > #if !defined(RSTRING_PTR) > diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c > index 3fe60fb..f4931d3 100644 > --- a/bindings/ruby/init.c > +++ b/bindings/ruby/init.c > @@ -20,6 +20,32 @@ > > #include "defs.h" > > +VALUE notmuch_rb_cDatabase; > +VALUE notmuch_rb_cDirectory; > +VALUE notmuch_rb_cFileNames; > +VALUE notmuch_rb_cQuery; > +VALUE notmuch_rb_cThreads; > +VALUE notmuch_rb_cThread; > +VALUE notmuch_rb_cMessages; > +VALUE notmuch_rb_cMessage; > +VALUE notmuch_rb_cTags; > + > +VALUE notmuch_rb_eBaseError; > +VALUE notmuch_rb_eDatabaseError; > +VALUE notmuch_rb_eMemoryError; > +VALUE notmuch_rb_eReadOnlyError; > +VALUE notmuch_rb_eXapianError; > +VALUE notmuch_rb_eFileError; > +VALUE notmuch_rb_eFileNotEmailError; > +VALUE notmuch_rb_eNullPointerError; > +VALUE notmuch_rb_eTagTooLongError; > +VALUE notmuch_rb_eUnbalancedFreezeThawError; > +VALUE notmuch_rb_eUnbalancedAtomicError; > + > +ID ID_call; > +ID ID_db_create; > +ID ID_db_mode; > + > /* > * Document-module: Notmuch > * > -- > 1.7.1 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch
Looks highly familiar yet strangely good to me. _______________________________________________ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch