[PATCH v2] ruby: extern linkage portability improvement
authorTomi Ollila <tomi.ollila@iki.fi>
Sun, 24 Jun 2012 18:48:34 +0000 (21:48 +0300)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:47:47 +0000 (09:47 -0800)
d4/1e15d6c58d5a5505e33ce5bec9b7bf433a0deb [new file with mode: 0644]

diff --git a/d4/1e15d6c58d5a5505e33ce5bec9b7bf433a0deb b/d4/1e15d6c58d5a5505e33ce5bec9b7bf433a0deb
new file mode 100644 (file)
index 0000000..bc19775
--- /dev/null
@@ -0,0 +1,159 @@
+Return-Path: <too@guru-group.fi>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 4E534431FBC\r
+       for <notmuch@notmuchmail.org>; Sun, 24 Jun 2012 11:48:27 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+       autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id 9dmU8mRElSdx for <notmuch@notmuchmail.org>;\r
+       Sun, 24 Jun 2012 11:48:26 -0700 (PDT)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+       by olra.theworths.org (Postfix) with ESMTP id DC474431FAE\r
+       for <notmuch@notmuchmail.org>; Sun, 24 Jun 2012 11:48:25 -0700 (PDT)\r
+Received: by guru.guru-group.fi (Postfix, from userid 501)\r
+       id 87B56100394; Sun, 24 Jun 2012 21:48:36 +0300 (EEST)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH v2] ruby: extern linkage portability improvement\r
+Date: Sun, 24 Jun 2012 21:48:34 +0300\r
+Message-Id: <1340563714-3103-1-git-send-email-tomi.ollila@iki.fi>\r
+X-Mailer: git-send-email 1.7.1\r
+In-Reply-To: <1336669964-24231-1-git-send-email-tomi.ollila>\r
+References: <1336669964-24231-1-git-send-email-tomi.ollila>\r
+Cc: Tomi Ollila <tomi.ollila@iki.fi>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sun, 24 Jun 2012 18:48:27 -0000\r
+\r
+Some C compilers are stricter when it comes to (tentative) definition\r
+of a variable -- in those compilers introducing variable without 'extern'\r
+keyword always allocates new 'storage' to the variable and linking all\r
+these modules fails due to duplicate symbols.\r
+\r
+This is reimplementation of Charlie Allom's patch:\r
+id:"1336481467-66356-1-git-send-email-charlie@mediasp.com",\r
+written originally by Ali Polatel. This version has\r
+more accurate commit message.\r
+---\r
+ bindings/ruby/defs.h |   46 +++++++++++++++++++++++-----------------------\r
+ bindings/ruby/init.c |   26 ++++++++++++++++++++++++++\r
+ 2 files changed, 49 insertions(+), 23 deletions(-)\r
+\r
+diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h\r
+index 3f9512b..fe81b3f 100644\r
+--- a/bindings/ruby/defs.h\r
++++ b/bindings/ruby/defs.h\r
+@@ -24,31 +24,31 @@\r
+ #include <notmuch.h>\r
+ #include <ruby.h>\r
\r
+-VALUE notmuch_rb_cDatabase;\r
+-VALUE notmuch_rb_cDirectory;\r
+-VALUE notmuch_rb_cFileNames;\r
+-VALUE notmuch_rb_cQuery;\r
+-VALUE notmuch_rb_cThreads;\r
+-VALUE notmuch_rb_cThread;\r
+-VALUE notmuch_rb_cMessages;\r
+-VALUE notmuch_rb_cMessage;\r
+-VALUE notmuch_rb_cTags;\r
+-\r
+-VALUE notmuch_rb_eBaseError;\r
+-VALUE notmuch_rb_eDatabaseError;\r
+-VALUE notmuch_rb_eMemoryError;\r
+-VALUE notmuch_rb_eReadOnlyError;\r
+-VALUE notmuch_rb_eXapianError;\r
+-VALUE notmuch_rb_eFileError;\r
+-VALUE notmuch_rb_eFileNotEmailError;\r
+-VALUE notmuch_rb_eNullPointerError;\r
+-VALUE notmuch_rb_eTagTooLongError;\r
+-VALUE notmuch_rb_eUnbalancedFreezeThawError;\r
+-VALUE notmuch_rb_eUnbalancedAtomicError;\r
+-\r
+-ID ID_call;\r
+-ID ID_db_create;\r
+-ID ID_db_mode;\r
++extern VALUE notmuch_rb_cDatabase;\r
++extern VALUE notmuch_rb_cDirectory;\r
++extern VALUE notmuch_rb_cFileNames;\r
++extern VALUE notmuch_rb_cQuery;\r
++extern VALUE notmuch_rb_cThreads;\r
++extern VALUE notmuch_rb_cThread;\r
++extern VALUE notmuch_rb_cMessages;\r
++extern VALUE notmuch_rb_cMessage;\r
++extern VALUE notmuch_rb_cTags;\r
++\r
++extern VALUE notmuch_rb_eBaseError;\r
++extern VALUE notmuch_rb_eDatabaseError;\r
++extern VALUE notmuch_rb_eMemoryError;\r
++extern VALUE notmuch_rb_eReadOnlyError;\r
++extern VALUE notmuch_rb_eXapianError;\r
++extern VALUE notmuch_rb_eFileError;\r
++extern VALUE notmuch_rb_eFileNotEmailError;\r
++extern VALUE notmuch_rb_eNullPointerError;\r
++extern VALUE notmuch_rb_eTagTooLongError;\r
++extern VALUE notmuch_rb_eUnbalancedFreezeThawError;\r
++extern VALUE notmuch_rb_eUnbalancedAtomicError;\r
++\r
++extern ID ID_call;\r
++extern ID ID_db_create;\r
++extern ID ID_db_mode;\r
\r
+ /* RSTRING_PTR() is new in ruby-1.9 */\r
+ #if !defined(RSTRING_PTR)\r
+diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c\r
+index 3fe60fb..f4931d3 100644\r
+--- a/bindings/ruby/init.c\r
++++ b/bindings/ruby/init.c\r
+@@ -20,6 +20,32 @@\r
\r
+ #include "defs.h"\r
\r
++VALUE notmuch_rb_cDatabase;\r
++VALUE notmuch_rb_cDirectory;\r
++VALUE notmuch_rb_cFileNames;\r
++VALUE notmuch_rb_cQuery;\r
++VALUE notmuch_rb_cThreads;\r
++VALUE notmuch_rb_cThread;\r
++VALUE notmuch_rb_cMessages;\r
++VALUE notmuch_rb_cMessage;\r
++VALUE notmuch_rb_cTags;\r
++\r
++VALUE notmuch_rb_eBaseError;\r
++VALUE notmuch_rb_eDatabaseError;\r
++VALUE notmuch_rb_eMemoryError;\r
++VALUE notmuch_rb_eReadOnlyError;\r
++VALUE notmuch_rb_eXapianError;\r
++VALUE notmuch_rb_eFileError;\r
++VALUE notmuch_rb_eFileNotEmailError;\r
++VALUE notmuch_rb_eNullPointerError;\r
++VALUE notmuch_rb_eTagTooLongError;\r
++VALUE notmuch_rb_eUnbalancedFreezeThawError;\r
++VALUE notmuch_rb_eUnbalancedAtomicError;\r
++\r
++ID ID_call;\r
++ID ID_db_create;\r
++ID ID_db_mode;\r
++\r
+ /*\r
+  * Document-module: Notmuch\r
+  *\r
+-- \r
+1.7.1\r
+\r